嗨 stackoverflow 社区,
这是我 6 个月提出的关于计算动态形成的矩形的面积和位置的问题的延续。为此提供的解决方案很有效,但现在我想更进一步。
一些背景 - 我正在使用 Cocos2D/Box2D 开发一款益智游戏,玩家在屏幕上画线。根据玩家绘制的情况,我想计算出由于绘制线而出现的多边形的区域和位置。
在下图中,黑色边框代表一个游戏区域,这将始终是相同的形状。灰线是玩家绘制的,并且总是笔直的。绿色方块是障碍物。障碍物将是凸形。形成的多边形(在本例中为 3 个)是蓝色区域,并且是我试图获取其坐标和区域的形状。
我想我可以用行列式计算出多边形的面积,但在此之前,我需要计算出蓝色多边形的坐标,我不知道该怎么做。
我有两端的线(x,y)坐标,障碍物的坐标和黑色边框的角坐标。使用这些,是否可以计算出蓝色多边形的坐标,还是我以错误的方式接近这个?
更新 - 对 duffymo 的回应
感谢您的回答。为了进一步解释,提到的每个对象都定义并封装在一个类中,即我有一个 Line/Obstacle/PlayingArea 对象。我的多边形对象被封装在一个“矩形”对象中。这些对象中的每一个都有它自己的属性与之相关联,例如它的坐标/区域/ID/状态等......
为了跟踪所有对象,我有一个监督单例对象,它将所有 Line 对象 / Obstacle 对象等保存在它们各自的数组中。这样,我可以遍历所有线条,并知道每条线条是否已被玩家绘制。
这个游戏有点像经典的 JezzBall,所以当用户画一条线时,我需要能够创建这些多边形,因为多边形将用作我检测特定区域是否包含球的方法。如果不是,则需要填充该区域。