我有一组点,由用户绘制。他们会在一些物体周围画画。
我需要以某种方式将这组点变成一个形状,这样我才能找到检测碰撞的区域。
图像将阐明:
Set of points represented as shape http://www.imagechicken.com/uploads/1277188630025178800.jpg .
到目前为止,我的最佳想法是遍历每个像素以确定它是在形状“内部”还是“外部”,但这会非常慢,而且我什至不确定如何确定 '里面'/'外面'位...
有什么提示吗?如果对您有帮助,我正在使用 .NET(C# 和 XNA)!
最佳答案
你可以把你的形状想象成几个形状的联合,每个形状都是一个简单的闭合多边形。
按照以下方式检查每个对象是否位于任何多边形内:
所有点都由线连接 - 每条线都有一个定义它的方程式。
对于每个对象 - 为穿过该对象的直线建立一个方程。
现在 - 对于每个对象方程,你需要检查有多少条线(点之间的线)与这个对象方程相交 - 但只计算两个点之间的范围内的交点(而不是在线外的其余部分)两个点)和对象一侧的交点(选择一侧 - 无关紧要)。
如果计数是偶数 - 对象在形状外部 - 否则它在内部。
关于c# - 碰撞检测自定义草图形状,表示为点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090536/