我遇到问题,请让我知道我的解决方案是否正确。我有一个已知的点,在位置A(x1,y1,z1)和原点O(0,0,0),我想找到点B(x2,y2,z2)的坐标,即位于线OA上,并且距离OB是OA的1.2倍。在给定距离处沿线查找3D点
所以,我的想法是获得由点O和A. OA的方向是(-x1,-Y1,-Z1)形成的直线的方程,所以该线的方程为:
x = -x1 * t;
y = -y1 * t;
z = -z1 * t;距离OA是sqrt((x1-0)^ 2 +(y1-0)^ 2 +(z1-0)^ 2)。已知
距离OB是sqrt((x2-0)^ 2 +(y2-0)^ 2 +(z2-0)^ 2)。 UNKNOWN
我可以替换距离OB中线方程确定的x,y,z点,结果应该比距离OA大1.2倍。因此,sqrt((-x1 * t-0)^ 2 +(-y1 * t-0)^ 2 +(-z1 * t-0)^ 2)= 1.2 * dist(OA)。
我从这里找到t,求解二次方程,并通过替换线的方程中的t来获得点的坐标。
这是正确的吗?
谢谢你的时间。
编辑: 这是我的代码:
rangeRatio = 1.114;
norm = sqrt((P2(1) - P1(1))^2 + (P2(2) - P1(2))^2 + (P2(3) - P1(3))^2);
P3(1) = P1(1) + ((P2(1,1) - P1(1)) /norm) * rangeRatio;
P3(2) = P1(2) + ((P2(1,2) - P1(2)) /norm) * rangeRatio;
P3(3) = P1(3) + ((P2(1,3) - P1(3)) /norm) * rangeRatio;
我试着也常模= 1,和我得到的结果稍有不同,但仍然不总是共线。
谢谢
哇,你已经过度复杂的问题。 – ja72