已知三点的坐标,和一个坐标未知的点到三个已知点的距离,求未知点的坐标


已知三点坐标 a(x1, y1),b(x2, y2),c(x3, y3),ad=X,bd=Y,cd=Z,求 d 点坐标。希望有人给个好的算法,最好是 Java、C++、C 的算法。

c java 算法

萌喵小女仆 12 years, 4 months ago

这个问题有点毛病,在平面上不见得有解(三个圆不见得共点),如果在三维坐标系中就有解了,实际上就是求三个球的交点。假设这个交点的坐标是(x, y, z),于是:
(1) (x-x1)^2+(y-y1)^2+z^2=X^2
(2) (x-x2)^2+(y-y2)^2+z^2=Y^2
(3) (x-x3)^2+(y-y3)^2+z^2=Z^2

(1)-(2):
(x-x1)^2-(x-x2)^2
+(y-y1)^2-(y-y2)^2 = X^2-Y^2
即:
(x2-x1)(2x-x1-x2)+(y2-y1)(2y-y1-y2)=X^2-Y^2
(4) 2(x2-x1)x+2(y2-y1)y+(x1^2-x2^2+y1^2-y2^2-X^2-Y^2) = 0
同样
(1)-(3):
得到
(5) 2(x3-x1)x+2(y3-y1)y+(x1^2-x3^2+y1^2-y3^2-X^2-Z^2) = 0

(4),(5)可以解出x, y来,然后再用(1)解出z,这就是交点的三维坐标。
这里不多写了。

冷面小瓜子 answered 12 years, 4 months ago

Your Answer