Dear Prof Hwang,

I think I fixed a bug

//x3=x-y*Math.sin(c); //Rotating with Disk Viewpoint apparent trajectory
//y3=y-y*(1-Math.cos(c));
x3=x+y*Math.sin(c); //Rotating with Disk Viewpoint apparent trajectory[color=red][b] MUST change to + instead of -[/b][/color]
y3=y-y*(1-Math.cos(c));
//if(y<-R)_initialize();
if(y<-R)_pause(); // added pause by lookang
//vx3=vx-y*w*Math.cos(c)-vy*Math.sin(c);
//vy3=vy-y*w*Math.sin(c)-vy*(1-Math.cos(c));
vx3=vx+y*w*Math.cos(c)+vy*Math.sin(c); // differentiate
vy3=vy-y*w*Math.sin(c)-vy*(1-Math.cos(c));

Then the rotation is correct