2012-08-02 76 views
2

有沒有一種方法來遍歷java 2D中一行上的所有點?如何迭代直線上的點?

我已經查看了類文檔,看不到它內置的任何東西。如果不是,擴展類並寫我自己的方法來計算行的方程,然後去通過每個點? (這實際上是否像一條線的理論方程式和它實際繪製的像素似乎略有不同)

+9

爲什麼要這樣做?從理論上講,一條線有無數的點數(屏幕上繪製的總是近似值)。你將如何處理這條線的縮放? – 2012-08-02 17:39:03

+0

我試圖讓一個精靈沿着一條斜坡坡道移動。所以精靈座標跟隨着線的上下移動。我認爲最好的方法是迭代每個點或幾個點,然後將它們添加到精靈座標中。也許這很愚蠢,但我想不出更好的解決方案。 – 2012-08-02 17:44:52

+0

查看[Line2D文檔](http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/geom/Line2D.html#getPathIterator(java.awt.geom.AffineTransform))似乎有一個迭代器。我從來沒有使用Java 2D,但它看起來就是你想要的。 – 2012-08-02 17:58:00

回答

2

對於某物以恆定速度在線上移動,其座標是時間的仿射函數:

x(t) = vx*t + x0 
y(t) = vy*t + y0 

(vx,vy)哪裏是等速(或速度)矢量和(x0,y0)原點位置(在時間0)。

我建議閱讀kinematics

一些基本的入門課程所以,你可能不希望「就行了迭代」,而是簡單地在屏幕上移動的東西,這是計算其位置在每個時間量子。

(我在高中學到這樣的公式,在法國)