c# - 碰撞检测自定义草图形状,表示为点列表

标签 c# .net collision-detection shapes plane

我有一组点,由用户绘制。他们会在一些物体周围画画。

我需要以某种方式将这组点变成一个形状,这样我才能找到检测碰撞的区域。

图像将阐明:

Set of points represented as shape http://www.imagechicken.com/uploads/1277188630025178800.jpg .

到目前为止,我的最佳想法是遍历每个像素以确定它是在形状“内部”还是“外部”,但这会非常慢,而且我什至不确定如何确定 '里面'/'外面'位...

有什么提示吗?如果对您有帮助,我正在使用 .NET(C# 和 XNA)!

最佳答案

你可以把你的形状想象成几个形状的联合,每个形状都是一个简单的闭合多边形。
按照以下方式检查每个对象是否位于任何多边形内:
所有点都由线连接 - 每条线都有一个定义它的方程式。
对于每个对象 - 为穿过该对象的直线建立一个方程。
现在 - 对于每个对象方程,你需要检查有多少条线(点之间的线)与这个对象方程相交 - 但只计算两个点之间的范围内的交点(而不是在线外的其余部分)两个点)和对象一侧的交点(选择一侧 - 无关紧要)。
如果计数是偶数 - 对象在形状外部 - 否则它在内部。

关于c# - 碰撞检测自定义草图形状,表示为点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090536/

相关文章:

javafx-2 - 使用JavaFX检查形状碰撞

c# - 从 Func<bool, T> 或类似的 lambda 中提取信息

c++ - 在 SFML 和碰撞检测中使用图 block

c# - 使用 NHibernate 实现全局化

c# - 在 Windows Phone 用户界面上将按钮置于最前面

c# - 如何使用 LINQ to Entities(带转换)返回嵌套数据集?

.net - 使用 vs2010 将 C++/CLI 项目更改为 4.0 以外的其他框架

python - 在 Pygame 中,如何使 Sprite blitting 两次具有两个单独的碰撞盒?

c# - 创建出租车。集成紧凑框架的安装程序

c# - WinForms:为什么在显示文件夹浏览器对话框时出现 InvalidCastException?