2013-02-01 80 views
0

我有两个位置(经度,纬度),其中一个位置是当前位置,另一个位置是目标位置。我想要做的是有一个循环,将当前位置分阶段地移动到目标位置。我不完全确定将当前位置移到目标位置的数学。向目标位置移动位置

+0

你看哪种类型的路径呢?直线或曲线或任何之字形路径? –

+0

只要一条直线 – FlabbyRabbit

+2

试试[Bresenham的线算法](http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm)。这非常有效。 – OldCurmudgeon

回答

1

这里是粗糙演示代码,实现所有点两个points.I希望之间的阶段,这将是对你有帮助:

import java.awt.Point; 
public class Path 
{ 
    public static void main(String[] args) 
    { 
     Point start   = new Point(0,0); 
     Point destination = new Point(100,150); 
     int iStages = 9;//Suppose I want to reach to destination in 9 jumps 
     int jumpX = (destination.x - start.x)/iStages; 
     int jumpY = (destination.y - start.y)/iStages; 
     Point currPos = start; 
     for (int i = 0; i < iStages ; i++) 
     { 
      System.out.println(currPos); 
      currPos = new Point(currPos.x + jumpX , currPos.y + jumpY); 
     } 
     currPos = new Point(destination.x , destination.y); 
     System.out.println(currPos); 
    } 
} 
+0

谢谢。我正在寻找使每个步骤的距离保持恒定而不是步骤的数量。因此,举例来说,如果您从0,0开始,则需要两倍的步数才能达到100,100而达到50,50。这是基于两点之间的距离计算iStages的情况吗? – FlabbyRabbit

+0

你的意思是,如果路径是从点(10,10)到点(100,100)或从点(32,23)到点(50,60)',那么你希望每个步长都是恒定的说'd = 10'? –

+0

我想基于点之间的距离的步数。所以我把距离分成了一个任意的数字,并且用它来表示完美运作的步数。感谢您的帮助。 – FlabbyRabbit