[英]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 空间中的点方向(如果它们是顺时针或逆时针)。 提前致谢。
计算两个段的方向向量d1
和d2
( d1.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.