[英]Closest Point on a Sphere to Another Point
给定球面S(c,r)
, c
为中心点(x,y,z)
, r
为半径,则存在一个点p(x', y', z')
在S
内部或外部。
我想找到点q
,使得q
在S
和|pq|
最小。 |pq|
表示p
和q
之间的欧几里得距离。
我试图创建一条从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.