如何计算屏幕上所有实体/形状的总面积

时间:2011-10-27 18:44:38

标签: cocos2d-iphone chipmunk

我正在尝试计算屏幕上所有正文或形状占据的总面积。即如果我有两个相互交叉的圆圈A和B,我想计算A联盟B覆盖的区域(在屏幕上)。

我一直在阅读花栗鼠documentation,并在花栗鼠API中查找了我可能会使用的方法,但我没有找到任何可以直接使用的方法。

我找到的唯一两种可能有用的方法是这两种:pointQueryFirst:layers:group:segmentQueryFirstFrom:to:layers:group:

我的想法是:

  • 使用第一种方法(pointQueryFirst)遍历屏幕上的所有点并调用此方法。如果某个点中没有形状,则将其累积到变量中。然后将该变量值除以屏幕区域,以获得空闲屏幕的百分比。
  • 或者使用第二种方法(segmentQueryFirstFrom),创建一个递归算法,将屏幕分成两半并在每一半上运行查询,如果任何一半包含一个形状,则将该区域分成两半并检查它们是否包含任何形状等等......

但我希望在使用它们时,整体性能会受到影响。还有其他我可以使用的解决方案吗?我还没找到的另一种方法?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Chipmunk并不是特别能够帮助你。你提到的方法可行,但速度可笑。

我想我会做一个很好的老式遮挡查询。将形状渲染为纹理或某种屏幕外缓冲区,然后计算像素。