AABB概述了AABB轮廓交点算法?

时间:2013-11-14 22:51:55

标签: algorithm 2d collision-detection aabb

我环顾四周但却没有找到我正在寻找的东西。起初,我认为这将是一个简单的问题。直到我尝试实现它并意识到有很多情况,我找不到通用的解决方案。

说,我有两个AABB。如果他们的轮廓相交,我想得到他们所有的交点。 最大点数 4 最小非零点数 1

我的AABB由minmax点组成,这些点始终会自动排序,以便min始终具有最低 xy值和{{1始终具有最高 xy值。

下图显示了一些AABB。蓝线表示它们的交点。请注意,如果AABB的一侧与另一侧重叠,则有点像沿着重叠的线段具有无限量的交叉点;在那些情况下,我想忽略它们并说:“那里没有交叉点。”

有人对算法有所了解吗? 我意识到我没有发布任何代码,我很确定这是不赞成的,但我已经考虑过这个问题了。至于为什么我想这样做..我duno',我只是好奇是否可以干净利落地做到这一点。

哦,是的,我的AABB有这样的方法应该是有用的:

max

我可以做一个丑陋的黑客攻击,只做分段&lt; - &gt;线段检查但是,我duno'..它感觉有点',嗯,丑陋和不优雅。我很确定我可以使用Vector<2> getSize () const; Point<2> getCenter () const; //0=Quadrant-1, 1=Quadrant-2, 2=Quadrant-3, 3=Quadrant-4, else, error Point<2> getCorner (int index) const; //0=right, 1=up, 2=left, 3=down, else, error LineSegment2D getSide (int index) const; min点来做一些诡计来快速完成这项工作。

Example

0 个答案:

没有答案