繁体   English   中英

检查3D空间中两条线段是否相交

[英]Check if if two line segments intersect in 3D space

我试图找出两条线段是否在 3D 空间中相交。 两个段都由点 (x1, y1, z1) 和 (x2, y2, z2) 给出。 以下文章描述了如何在 2D 空间中执行此操作: https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/但我不知道如何区分 3D 空间中的点方向(如果它们是顺时针或逆时针)。 提前致谢。

计算两个段的方向向量d1d2d1.x = x12-x11等等,其中x11是第一段的起点, x12是终点)

计算起点差( bx = x21 - x11等等)

寻找

p = (d1 x d2) (vector product)

如果 p 是零向量,则线是平行的。

如果线条确实相交,则(b.dot.p)应该 = 0(标量积),否则这些线条是倾斜的。

交点:

ip = point11 + d1 * [ (b x d2).dot.p / (p.dot.p) ]

请注意, []中的值应在0..1范围内,否则线在线段之外相交。

似乎在wiki中描述了类似的方法

暂无
暂无

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

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