2013-02-01 120 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