本文记录一些常见的相交判断方法,属于游戏开发中比较常见的几何应用。
目录
一、线段之间的相交判断:
问题,如下图,如何判断线段AB和CD是否相交?
解答:线段之间的相交判断一般使用以下夹持法思路:
1、假如ABC保持现有位置,D可移动,那么穿透交叉的条件就是D在AB的另外一侧(异于C),且CD夹持于射线CA、CB之间
2、假如ACD保持现有位置,B可移动,那么穿透交叉的条件就是B在CD的另外一侧(异于A),且AB夹持于射线AD、AC之间
总结1、2,可以说成:
A、B两点分布于直线CD的两侧,C、D点分布于直线AB的两侧,形成互相夹持。
理清思路再去找相应的公式:
由于2D矢量的叉积是一个标量,上述1、2的夹持条件,可以由以下简单的叉积公式来体现:
Vcd.Cross(Vca) * Vcd.Cross(Vcb) < 0 && Vab.Cross(Vad) * Vab.Cross(Vac) < 0
这里的<也可以是<=,那么将代表可以包含穿过顶点的临界情况。
二、顶点走向判断
在带有物理计算的游戏中,常常需要进行物体走向的判断,这个说起来也很简单,给出问题如下:
如下图,假设AB朝向代表了人物当前的朝向,人物处于顶点A位置,而此时希望A转向M,那么A该如何最快转向至面向M?

本文详细介绍了在游戏开发中常见的几何相交判断方法,包括线段相交、顶点走向判断、路径导航、顶点与凸包相交、线段与凸包相交以及凸包与凸包相交的判断。这些理论和算法对于实现精确的碰撞检测和导航计算至关重要。
最低0.47元/天 解锁文章
2488

被折叠的 条评论
为什么被折叠?



