如何以CPU高效的方式混合移动圆的运动,这仍然允许相当准确的碰撞检测?我试过伸展和旋转和椭圆,但看起来不自然。我尝试在下面的草图之间画画。但是帧之间的运动仍然是锯齿状的,并且在具有透明度的圆圈之间画很多是很昂贵的。有一个更好的方法吗?例如,通过贝塞尔变换桥接形状或平滑运动?也许在数组中保留最后两个位置并使用当前和最后两个位置绘制贝塞尔曲线并在最后位置和当前位置之间绘制曲线形状以及来自所有三个点的数据?你如何处理需要避免“...”效应的快速运动,还需要使用当前位置进行碰撞检测等等?
int xprev;
int yprev;
int xcur;
int ycur;
float size = 10;
float scale;
int rotation = 0;
void setup() {
size(600, 600);
}
void draw () {
background(0);
xcur= int(cos(radians(rotation))*200) + width/2;
ycur = int(sin(radians(rotation))*200) + height/2;
rotation = rotation + 5;
//scale = dist(xcur, ycur, xprev, yprev)/2;
//println(scale);
drawEllipse();
xprev = xcur;
yprev = ycur;
}
void drawEllipse() {
for (int i = 1; i < 10; i++) {
noStroke();
fill(255, i*20);
ellipse(xprev+ (xcur - xprev) * i/10, yprev + (ycur - yprev) * i/10, size, size);
}
fill(255);
ellipse(xcur, ycur, size, size);
}