gpt4 book ai didi

algorithm - 3D线相交算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:57 27 4
gpt4 key购买 nike

我有使用 x,y,z 的线方向

还有两个点 A, B ,我用线段使用 B- A

如何得到它们之间的交点

最好的问候

最佳答案

方程组:

方向为(a,b,c),一点X(x1,x2,x3)的直线的参数方程为:

D1:(x, y, z) = (x1, y1, z1) + t1(a, b, c)

具有 2 个点 A 和 B 的直线的参数方程为:

 D2:(x, y, z) = (xa, ya, za) + t2(xb-xa, yb-ya, zb-za)

您只需要使 D1 和 D2 相等即可找到有效参数 t1 和 t2 的结果。 (3 个方程式,2 个未知数)

如果没有解就没有交集。

仅与线段相交:

现在让 M 成为您的结果,您只需要验证:

t2 in [0,1] 

or 0<AM.AB<||AB||^2 (M is in the segment AB)

备注:

如果你的线的表示来自笛卡尔方程(计划的交集)那么问题是相同的但是有 4 个方程和 3 个未知

示例:

A (1,1,1)
B (0,0,0)
D2:(x,y,z)=(1-t2,1-t2,1-t2)

(a,b,c)=(1.-1.1)
(x1,y1,z1)=(1,0,1)
D1:(x,y,z)=(t1+1,-t1,1+t1)

(D1和D2是边长=1的立方体的2条对角线,放在0,0,0)

设 M(x,y,z) 为交点 D1, D2

我们发现 t1 和 t2 使上面的等式相等:D1 和 D2

我们很容易得到 t1=-1/2 和 t2=1/2

此外 t2 在 [0,1] 中,所以得到的交集在 [A,B] 中

M(1/2,1/2,1/2) =D1(t1)=D2(t2) 是解

关于algorithm - 3D线相交算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7010383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com