Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 球体上距离另一点最近的点_Java_Geometry_Implementation - Fatal编程技术网

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几何的,而不是关于编程的。在编写代码之前,您需要定义数学算法,但您似乎还没有定义。清楚的解释。评论也一样。