Java 计算三维长方体外部周围最短路径的距离

Java 计算三维长方体外部周围最短路径的距离,java,distance,cube,shortest,Java,Distance,Cube,Shortest,有人给我布置了一项作业,我需要一些数学方面的帮助。问题是计算蚂蚁到糖果的距离。糖果总是放在盒子的顶部,蚂蚁可以在盒子的两侧以外的任何地方。蚂蚁可以在顶部和两侧爬行,但不能飞行。它们给你蚂蚁和糖果的坐标,作为一排6个数字。前三个是蚂蚁的,下三个是糖果的。我遇到的问题是第三个示例输入(0 0 5 4 3.0)。他们如何得到8.60个单位作为答案?当向上距离为3,到拐角的距离为6.40时,总距离应为9.40。我的猜测是他们在上升的时候拐弯了,但我不知道如何制作一个公式来计算出这样的最短长度。谢谢你的帮

有人给我布置了一项作业,我需要一些数学方面的帮助。问题是计算蚂蚁到糖果的距离。糖果总是放在盒子的顶部,蚂蚁可以在盒子的两侧以外的任何地方。蚂蚁可以在顶部和两侧爬行,但不能飞行。它们给你蚂蚁和糖果的坐标,作为一排6个数字。前三个是蚂蚁的,下三个是糖果的。我遇到的问题是第三个示例输入(0 0 5 4 3.0)。他们如何得到8.60个单位作为答案?当向上距离为3,到拐角的距离为6.40时,总距离应为9.40。我的猜测是他们在上升的时候拐弯了,但我不知道如何制作一个公式来计算出这样的最短长度。谢谢你的帮助:D如果你需要更多信息,尽管问

该框是(5,4,3)的x、z、y格式

Sample Input:                       
3 1 3 3 3 3            
2.25 0 2 2.5 2 3          
0 0 0 5 4 3.0   
0 4 3 5 0.0 3        
5 0 3 5 4.00 3           

Sample Output:               
Shortest distance = 2.00 units            
Shortest distance = 3.01 units        
Shortest distance = 8.60 units             
Shortest distance = 6.40 units            
Shortest distance = 4.00 units

首先,正如gap_j所指出的,这显然是错误的。也就是说,答案在于微积分——你必须将导数设为零,并确定最小值。根据您提供的尺寸和一两个推论,长方体在x轴上为5个单位,在y轴上为4个单位,在z轴上为3个单位。这意味着,正如您所注意到的,首先沿z轴移动的最短距离为9.40个单位:

p(z)=z+sqrt(x2+y2)

另外还有两种选择,首先是直接沿轴移动;x-优先和y-优先:

p(x)=x+sqrt(y2+z2)

p(y)=y+sqrt(x2+z2)

这些路径的值分别为10(精确)和9.83

为了达到问题中给出的
p=8.6
,沿x轴必须有一定距离a,以便:

p(a)=sqrt((x-a)2+z2)+sqrt(y2+a2)

否则,沿y轴留出一定距离b,以便:

p(b)=sqrt((y-b)2+z2)+sqrt(x2+b2)

p(a)
p(b)
必须小于直接沿轴移动。
p(a)
有无数这样的值


因为这大概是微积分课的一个家庭作业问题,我将把求导数的任务留给你,但公式是按规定的。只有一个变量,所以这应该不会特别困难。当然,这些是可以概括的,计算结果并确定较短的路径是一项相当简单的任务。

属于,很抱歉,我没有提到,但这是编程任务的一部分,我只是需要数学方面的帮助,所以我想去math.stachexchange.com会更容易理解,但我想既然这是一个程序,就可以在这里发布;当我开始回答时,它是开放的。我向mods道歉——你的问题因离题而关闭。不过,如果时间允许,我还是会在这里发表评论。这两个
p(a)
p(b)
公式是基于一个角上开始的蚂蚁(如第三个样本)。如果我们对直接沿轴(在边上)的路径不感兴趣,我们将开始穿过曲面(x-z平面或y-z平面)。绘制一个三维长方体,并标记轴。将点a沿x轴放置,将点b沿y轴放置。在哪里不重要。该点表示长方体顶部边缘上的目标。公式表示整个路径的两个组成部分:沿[x-z或y-z]平面的部分(侧面)和沿x-y平面的部分(顶部)。第一项是侧路径,第二项是顶部路径。如果你只是在一个预科课程中,并且你被期望知道如何编写代码,那么你的导师就是笨蛋。这类问题需要一个初级程序员通常不具备的抽象层次,而求导是相当容易的,实际上解决这类问题是一件很痛苦的事情。假设你说的是实话,这就是问题的Wolfram | Alpha分析。您将希望关注“全局最小值”。要将其推广到任何合法的起始位置对,您必须修改两个
p(a)
p(b)
公式以接受变量输入(并让Wolfram | Alpha来解决它)——但我必须回家,所以我将这留给您。我可能会在周末回来看看,但没有承诺。让我们一起去吧