const int speed = 512;
float t = 1.0F * (System.frameCounter % speed) / speed;
for (int i = 0; i < dreams.length; i++)
{
int bestValue = 10000000;
int best = 0;
pair<int16> dm = Hexgrid.getHexCenter3d(dreams.data[i].x, dreams.data[i].y);
pair<int16> gr;
for (int j = 0; j < groves.length; j++)
{
gr = Hexgrid.getHexCenter3d(groves.data[j].x, groves.data[j].y);
int value = sqr(absv(dm.x - gr.x)) + sqr(absv(dm.y - gr.y));
if (value < bestValue)
{
bestValue = value;
best = j;
}
}
float t = 1.0F * (((speed / 16D) * i + System.frameCounter) % speed / speed);
gr = Hexgrid.getHexCenter3d(groves.data[best].x, groves.data[best].y);
int x = dm.x + t * (gr.x - dm.x) + 64F * t * (1F - t) * trigo(36F * i + 192F * t).x;
int y = dm.y + t * (gr.y - dm.y) + 0.2F * t * (1F - t) * (gr.y + dm.y) + 32F * t * (1F - t) * trigo(24F * i + 192F * t).y;
int rad = 3 + 3 * absv(trigo(48F * i + 192F * t).x);
bitmap.drawCircleLight(x, y, rad, white, 0.5F);
}
//注意:
//从起点(村庄)到终点(树林)的抛物线路径,具有一个小的trigo(正弦)贡献,使梦境动画看起来犹豫,像一只蛾的飞行。
评论 (0)