Raphael JSを使用して、3 つの要素からなる単純な 2D 車を作成しました。そのために、イメージとしてのボディと 2 つのタイヤがあります。アニメーションでタイヤを回転させたいので、要素を分離しました。
var curCar = raphael.image("car.png", /* x */ 0, /* y */ 0, /* width */ 120, /* height*/ 82)
var tires = raphael.set();
tires.push(
raphael.image("tire.png", 2, 50, 32, 32),
raphael.image("tire.png", 84, 50, 32, 32)
);
ご覧のとおり、タイヤは車の「下」に配置されており、すでに正しい位置に配置されています。現在、curCar は Raphael.animate を使用してパスをたどりますが、これは正常に機能します。アニメーションを更新するたびに、タイヤを curCar の位置に変換します。次のようになります。
function animationUpdate (pos) {
curCar.transform("t" + [pos.x, pos.y] +" r"+ pos.alpha);
tires.transform("t" + [pos.x, pos.y ]);
};
"t" は translate(x,y) を表し、r は回転を表します。これらの値は Raphael によって自動的に計算されます。直線経路をたどる場合、これはすべてうまくいきますが、curCar が回転するとすぐに、タイヤの計算が失敗します。
例:
curCar は x: 100 / y: 200 の位置にあり、10° 回転しています。タイヤは x:102 / y:150 および x: 184 / y: 250 に変換されます。したがって、curCar は 10° 回転し、タイヤはずれています。
私の主な質問は次のとおりです。
回転を考慮して正しい X/Y 位置を計算するにはどうすればよいですか? これを行う共通の数式が存在する必要があります。