繁体   English   中英

向量的简单2D碰撞检测

[英]Simple 2D collision detection with vectors

我正在尝试创建碰撞算法并在我的Win32 2D GUI应用中实现他。 任务是,我得到一个确定.bmp图像中下部的向量,并在菱形位置得到另外四个向量。 我想使其工作,以便算法知道图像是来自左,右,上还是下。 互联网上有很多关于矩形,圆形和距离计算的碰撞检测的教程,但是我很难将它们应用于菱形。 还有一种叫做轴对齐边界的东西,但我认为它是针对3d向量的。 关于这个主题,我非常虚弱,因此,如果有任何熟练的C ++程序员可以指导我阅读一些涉及该主题的优秀电子书,或者如果代码很小,则可以将其键入。 我尝试对ABCD整个菱形进行X,Y坐标的迭代,但失败了。

谢谢大家的帮助。

我不是计算机图形学专家,但是通常您的问题归结为确定点是否在凸多边形内。

为此,我将使用以下简单技术。 有一个称为向量积的函数,该函数有助于确定从一个向量到另一个向量的旋转方向是正还是负。 因此,检查点X是否在由多边形A_1,A_2,...,A_n形成的菱形内部只是为了检查所有矢量乘积(A_iA_ {i + 1},A_iX)是否具有相同的符号。

向量(x1,y1)和(x2,y2)的向量积定义为x1 * y2-x2 * y1。

现在,您的检测将继续进行:如果先前的位置在多边形之外,而当前位置在多边形内,则点已命中多边形。 为了确定越过了哪一侧,您只需要检查自上次位置更新以来矢量乘积(A_iA_ {i + 1},A_iX)的哪些符号已更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM