好的,这个问题有点抽象。
我有一个沿着一条线移动的图标,该图标由一系列存储在矢量中的坐标表示,我正在迭代它们。坐标之间的距离是可变的。因此,有时图标会缓慢而平稳地移动,而有些图标会一次跳几个像素。
我无法想出一个算法来分割它必须在一组相对坐标之间移动的算法,其中数字基于大小,因此无论有多少个共同点,转换都是平滑的。在一条线上。
任何想法都会非常感激。谢谢:))
答案 0 :(得分:2)
看一下Main Game Loop的讨论。
以下是该页面的引用:
在此步骤中,更新所有 游戏世界中的物体是 计算和执行。通常,a 时间步长值传递给所有 更新方法表明了多少 自上次更新以来已经过去了 ...
你需要知道3件事:
通过这些,您可以计算对象的当前位置。
答案 1 :(得分:1)
如果你想让物体以恒定速度移动,我会建议一个基于时间的模型,你的物体实际上以一定的速度(像素/秒)移动。如果沿曲线(例如catmull-rom曲线)进行样条曲线,您仍然可以使其击中每个点(ish)。
答案 2 :(得分:0)
所以你想沿着一条线从一个初始点(x0 / y0)移动到一个终点(x1 / y1),步数可变,但每步的距离最大?
这可以通过以下方式完成:
int stepdist = 10; // max pixels per step
double xdiff = x1 - x0;
double ydiff = y1 - y0;
double dist = sqrt( xdiff * xdiff + ydiff * ydiff );
int steps = (int) ( ( dist - 1 ) / stepdist );
if( steps > 0 )
{
xdiff /= steps;
ydiff /= steps;
while( --steps >= 0 )
{
x0 += xdiff;
y0 += ydiff;
moveTo( (int) x0, (int) y0 );
}
}
moveTo( (int) x1, (int) y1 );