计算3D框外部最短路径的距离

时间:2013-05-10 16:59:29

标签: java distance cube shortest

我需要一些帮助来完成我给出的任务背后的数学。问题是计算从蚂蚁到糖果的距离。糖果总是在盒子顶部,蚂蚁可以在任何地方,但两侧。蚂蚁可以爬到顶部和两侧,但不能飞。它们将蚂蚁和糖果的坐标作为连续6个数字给你。前3个是蚂蚁,接下来3个是糖果。我遇到的问题是第3个样本输入(0 0 0 5 4 3.0)。他们如何获得8.60个单位作为答案?当距离向上为3并且到角落的距离为6.40时,总距离应为9.40。我的猜测是他们在上升时切入角落,但我不知道如何制定一个公式来找到最短的长度。感谢您的帮助:如果您需要更多信息,请致电。

方框是(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

1 个答案:

答案 0 :(得分:1)

首先,正如gap_j所指出的那样,这显然是在错误的领域。也就是说,答案在于微积分 - 你必须将导数设置为零并确定最小值。根据您提供的尺寸和一个或两个推断,框在x轴上为5个单位,在y轴上为4个单位,在z轴上为3个单位。这意味着,正如您所指出的那样,首先沿z轴行进的最短距离将是9.40单位:

  

p(z)= z + sqrt(x 2 + y 2

关于首先沿轴直接行进,还有另外两种选择; x-first和y-first:

  

p(x)= x + sqrt(y 2 + z 2

     

p(y)= y + sqrt(x 2 + z 2

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

为了实现问题中给出的p = 8.6,沿着x轴必须有一些距离 a ,这样:

  

p(a)= sqrt((x - a) 2 + z 2 )+ sqrt(y 2 + a 2

沿y轴有一段距离 b ,这样:

  

p(b)= sqrt((y - b) 2 + z 2 )+ sqrt(x 2 + b 2

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

由于这可能是微积分课的作业问题,我会留下找到你的衍生物,但公式是提供的。只有一个变量,所以这不应该特别困难。当然,这些可以概括,计算结果和确定较短路径是一项相当简单的任务。