我有一个问题,如果我的解决方案是正确的,请告诉我。
我有一个已知点,位于位置 A(x1,y1,z1) 和原点 O(0,0,0),我想找到位于的点 B(x2,y2,z2) 的坐标线OA,距离OB是OA的1.2倍。
所以,我的想法是求出点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)。未知
我可以替换为距离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;
我也尝试了 norm = 1,得到的结果略有不同,但并不总是共线的。
谢谢