2012-08-02 78 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

一些基本的入门课程所以,你可能不希望“就行了迭代”,而是简单地在屏幕上移动的东西,这是计算其位置在每个时间量子。

(我在高中学到这样的公式,在法国)