繁体   English   中英

球上到另一个点的最近点

[英]Closest Point on a Sphere to Another Point

给定球面S(c,r)c为中心点(x,y,z)r为半径,则存在一个点p(x', y', z')S内部或外部。
我想找到点q ,使得qS|pq| 最小。 |pq| 表示pq之间的欧几里得距离。

我试图创建一条从c开始并穿过p的射线,并找到射线与球体的交点。

但是,由于我正在为此问题实现Java代码,因此无法逐步解决它。 请你帮助我好吗?

您只需要对向量p - c进行归一化,然后乘以r并加c

Vector v = p - c; // v.x = p.x - c.x, v.y = p.y - c.y, v.z = p.z - c.z
length = v.length; // = sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
v = v.normalize; //v.x = v.x / length , v.y = v.y / length, v.z = v.z / length
v = v * r // v.x = v.x * r , v.y = v.y * r, v.z = v.z * r
q = v + c // q.x = v.x + c.x, q.y = v.y + c.y, q.z = v.z + c.z

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM