Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone 如何计算屏幕上所有实体/形状的总面积_Cocos2d Iphone_Chipmunk - Fatal编程技术网

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

Cocos2d iphone 如何计算屏幕上所有实体/形状的总面积,cocos2d-iphone,chipmunk,Cocos2d Iphone,Chipmunk,我试图计算所有物体或形状在屏幕上占据的总面积。也就是说,如果我有两个互相相交的圆,A和B,我想计算一个并集B所覆盖的面积(在屏幕上) 我一直在阅读《花栗鼠》,并在《花栗鼠》中寻找一种我可以使用的方法,但我没有找到任何可以直接使用的方法 我发现的唯一两种可能有用的方法是:和 我当时的想法是: 使用第一个方法(pointQueryFirst)遍历屏幕上的所有点并调用此方法。如果点中没有形状,则将其累积到变量中。然后将该变量值除以屏幕的面积,得到屏幕空闲的百分比 或者使用第二种方法(segmentQ

我试图计算所有物体或形状在屏幕上占据的总面积。也就是说,如果我有两个互相相交的圆,A和B,我想计算一个并集B所覆盖的面积(在屏幕上)

我一直在阅读《花栗鼠》,并在《花栗鼠》中寻找一种我可以使用的方法,但我没有找到任何可以直接使用的方法

我发现的唯一两种可能有用的方法是:和

我当时的想法是:

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

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

花栗鼠不会特别帮助您。你提到的方法会奏效,但速度慢得可笑


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

我不熟悉objective-c、cocos2d、花栗鼠。关于使用哪些类有什么建议吗?此后,我可以在API中查找它。制作一个CCRenderTexture,然后使用glReadPixels()读回像素数据。请记住,这并不快。从GPU读回像素需要几十毫秒的时间,所以你不希望每一帧都这样做。