相关疑难解决方法(0)

C/C++实现单纯形法

我无法找到单纯method.I的已经实行的一组点,想张贴了这个问题之前,尽量减少theie距离,所以我只需要在方法单一我有谷歌,可能NT找到任何东西,我可以用

c++ algorithm simplex

10
推荐指数
1
解决办法
4万
查看次数

任意大小凸多边形碰撞检测算法

我正在研究小行星克隆.一切都是2D,用C++编写.

对于小行星,我正在生成随机的N边多边形.我保证他们是Convex.然后我旋转它们,让它们旋转速度,让它们飞过太空.这一切都有效,非常漂亮.

对于碰撞,我使用的是我自己想到的算法.这可能是一个坏主意,如果推动,我可能会废弃整个事情,并在互联网上找到一个教程.

我已经编写并实现了所有内容,并且碰撞检测工作正常....大部分时间.当屏幕上明显发生碰撞时,它会随机失败,有时会在没有任何触摸时指示碰撞.我要么在某处扯下我的实现,要么我的算法很糟糕.由于我的实现的大小/范围(通过几个源文件),我不想打扰你,只是想让某人检查我的算法实际上是合理的.那时我可以继续寻找一个大虫子.

算法:

对于每个小行星,我有一个函数输出绘制小行星时每个顶点应该在哪里.对于每对相邻的顶点,我为它们所在的线生成公式, y=mx+b格式化.然后我从我的一个船顶点开始,测试该点以查看它是否在小行星内.我首先插入点的X坐标,然后将输出与实际Y值进行比较.这告诉我该点是在线之上还是之下.然后我对小行星的中心做同样的事情,以确定哪一半的线被认为是小行星的"内部".然后我重复每对顶点.如果我找到一条线,我的点与小行星的中心不在同一侧,我知道没有碰撞,并且退出检测到该点.由于我的船上有3个点,我必须测试下一个点.如果所有3个点都提前退出,那么船上的任何一点都没有碰撞,我们就完成了.如果由小行星组成的线在所有侧面上绑定任何点,则它位于小行星内部,并设置碰撞标志.

我用这种算法发现的两个问题是:

  1. 它不适用于凹多边形,并且
  2. 在Slope未定义的Edge情况下存在问题.

我已经确保所有多边形都是凸面的,并且已经编写了代码来处理未定义的斜率问题(NAN如果我们除以0,则应该双重返回,因此很容易测试它).

那么,这应该有用吗?

c++ algorithm 2d collision-detection

6
推荐指数
2
解决办法
3562
查看次数

标签 统计

algorithm ×2

c++ ×2

2d ×1

collision-detection ×1

simplex ×1