Java-已知三点的坐标,和一个坐标未知的点到三个已知点的距离,求未知点的坐标
已知三点坐标 a(x1, y1),b(x2, y2),c(x3, y3),ad=X,bd=Y,cd=Z,求 d 点坐标。希望有人给个好的算法,最好是 Java、C++、C 的算法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
已知三点坐标 a(x1, y1),b(x2, y2),c(x3, y3),ad=X,bd=Y,cd=Z,求 d 点坐标。希望有人给个好的算法,最好是 Java、C++、C 的算法。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
数学上的知识太多了,公式有些记不住了。说下思路;
先简化问题,已知a,b坐标,和ad,bd的长度,求d。
会出来两个点(以a为圆心,ad为半径画圆,和以b位圆心,bd为半径画圆,两个圆的交叉点)
做出方法(需要查一些公式,我就不帮你做了)
注:
main方法应该这样
这两个数组肯定有一个点的x,y是相同的,那么这个点就是你要找的点,在纸上画画就明白了
这个问题有点毛病,在平面上不见得有解(三个圆不见得共点),如果在三维坐标系中就有解了,实际上就是求三个球的交点。假设这个交点的坐标是(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,这就是交点的三维坐标。
这里不多写了。
可以先求两个圆的交点,然后判断交点是不是在第三个圆上,就可以出来了啊。
求两个圆的交点的话可以参考下这篇文章:
http://blog.csdn.net/sooowhat/article/details/6538797