ios+;OpenGL/OpenVG/Core图形/cocos2d。检查点是否在区域内的最佳算法?

ios+;OpenGL/OpenVG/Core图形/cocos2d。检查点是否在区域内的最佳算法?,ios,opengl-es,cocos2d-iphone,core-graphics,openvg,Ios,Opengl Es,Cocos2d Iphone,Core Graphics,Openvg,我使用检查点是否在区域内的算法: 用颜色1画一个点 使用颜色2绘制一个区域 检查点是否仍有颜色1 所以我的主要问题是最后一步 我知道这是有可能做到这一点与核心图形,但它可能是缓慢的。在OpenVG和OpenGL中,速度可能更快,但: 我找不到任何例子 它需要2个周期的内置绘制功能-第一次调用绘制点和区域,第二次调用检查颜色。对每个区域分别执行相同的操作 报告您。在什么地方它是这个问题的复制品?!我描述了一种使用颜色比较的算法,但在你的页面上,他们描述了执行复杂计算和比较坐标的方法。很抱歉,

我使用检查点是否在区域内的算法:

  • 用颜色1画一个点

  • 使用颜色2绘制一个区域

  • 检查点是否仍有颜色1

所以我的主要问题是最后一步

我知道这是有可能做到这一点与核心图形,但它可能是缓慢的。在OpenVG和OpenGL中,速度可能更快,但:

  • 我找不到任何例子

  • 它需要2个周期的内置绘制功能-第一次调用绘制点和区域,第二次调用检查颜色。对每个区域分别执行相同的操作


报告您。在什么地方它是这个问题的复制品?!我描述了一种使用颜色比较的算法,但在你的页面上,他们描述了执行复杂计算和比较坐标的方法。很抱歉,我当时在iPad上,口齿不清。详细回答:您实际上是在要求一个“多边形中的点”算法,如下所述:。至少这样做是合理的。测试特定像素是可能的,但总是比多边形相交测试慢得多,因为基本上在任何渲染器中从帧缓冲区读取都很慢。聪明的替代方法是从本质上记住你正在绘制的东西,比如说CGPoint和CGPath,然后执行交叉点测试。在iOS中可能会慢一些。但我知道这种算法至少在Flash中更快(例如,它允许在滚动射击游戏中绘制大量对象,并检查与船只的碰撞)。老实说,我不确定这是否是最不密集的方法,但我一直使用简单的调用CGRectContainsPoint(CGRect rect,CGPoint)它返回一个布尔值。and?“区域”不是矩形区域。如果你有一些圆圈彼此太近,你会怎么做?