确定一个Point3D是否通过了另一个

我在3D空间中有2个点AB (例如Point3Dtypes)。 B需要向A行进,然后在到达或通过B时停止。 两点之间的方向是已知的(可以很容易计算),所以速度很容易设置。 如何确定A点何时到达或“通过”(给定方向) B点?

Solutions Collecting From Web of "确定一个Point3D是否通过了另一个"

A和B之间的vector是B – A.这个vector的大小是这些点之间的距离。 如果A点沿着这个向量行进,那么当量值为0时它已经到达B点,当vector分量与原来的B – A向量相比改变了符号(正到负,或者负到正)时它通过B.

例如,在2D A =(3,4)B =(4,6)BA =(1,2) 在这里输入图像说明

当B – A的vector分量的符号与原来的B – A值相比已经改变时,点A将通过点B.

另一种解决方法是使用原始B – A向量和当前B – A向量的点积。 如果这个值是正值,那么A还没有达到B. 如果解为0,则A = B。如果解为负数,则A已经通过B.此外,如果在取点积之前对这些vector进行归一化,则将得到1,0或-1。

如果A不是沿着这个向量行进,那么就需要有一个包含B的平面作为阈值。 A将从这架飞机的一侧开始,当它飞经飞机的另一侧时,将被视为通过B.除此之外,定向将完全是任意的。