Java 球体上距离另一点最近的点
给定一个球体Java 球体上距离另一点最近的点,java,geometry,implementation,Java,Geometry,Implementation,给定一个球体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
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
这个问题似乎是离题的,因为它是关于3D几何的,而不是关于编程的。在编写代码之前,您需要定义数学算法,但您似乎还没有定义。清楚的解释。评论也一样。