次のコードは、単純なイーズ関数を使用して線をマウスの位置に向かって回転させますが、問題は、atan2()メソッドが-PIからPIまで機能し、角度がいずれかの限界に達すると線を後方に回転させることです。 0からTWO_PIに回転させますが、targetAngleに到達するまで線が後方に回転するため、違いはありません。-PIからPIへのジャンプが目立たないため、イージング計算を使用しない場合は正常に機能します。私の回転とこの問題を回避しますか?
float angle = 0;
float targetAngle = 0;
float easing = 0.1;
void setup() {
size(320, 240);
}
void draw() {
background(200);
noFill();
stroke( 0 );
// get the angle from the center to the mouse position
angle = atan2( mouseY - height/2, mouseX - width/2 );
// check and adjust angle to go from 0 to TWO_PI
if ( angle < 0 ) angle = TWO_PI + angle;
// ease rotation
targetAngle += (angle - targetAngle) * easing;
pushMatrix();
translate( width/2, height/2 );
rotate( targetAngle );
line( 0, 0, 60, 0 );
popMatrix();
}
ありがとう