一連の長方形をキャンバス ブロックの特定の点に向けるのに非常に苦労しました。私は一連の点を繰り返し処理し、すべてが特定の点に面しているはずの長方形を描画しています。
まず、半径、焦点、長方形を設定します
var Angle = Math.PI;
_.each(Points, function(Point) {
var Radius = 10;
var Focus = {
X: 500,
Y: 1000
}
var Rect = [
{
X: (Point.X - Radius/2),
Y: (Point.Y - Radius/2)
},
{
X: (Point.X + Radius/2),
Y: (Point.Y - Radius/2)
},
{
X: (Point.X + Radius/2),
Y: (Point.Y + Radius/2)
},
{
X: (Point.X - Radius/2),
Y: (Point.Y + Radius/2)
}
];
次に、アンダースコアを使用して繰り返し処理し、別の応答で読んだ方法を使用しました。
var index = 0;
_.each(Rect, function (V) {
var dx2 = Focus.X - V.X;
var dy2 = Focus.Y - V.Y;
var dx2_ = dx2 * Math.cos(Angle) - dy2 * Math.sin(Angle);
var dy2_ = dy2 * Math.sin(Angle) + dy2 * Math.cos(Angle);
V.X = dx2_ + V.X;
V.Y = dy2_ + V.Y;
Rect[index] = V;
index++;
});
次に、通常のキャンバスにすべて設定します。context と fillStyle は事前に定義されています。
ctx.beginPath();
ctx.moveTo(Rect[0].X, Rect[0].Y);
ctx.lineTo(Rect[1].X, Rect[1].Y);
ctx.lineTo(Rect[2].X, Rect[2].Y);
ctx.lineTo(Rect[3].X, Rect[3].Y);
ctx.lineTo(Rect[0].X, Rect[0].Y);
ctx.fill();
});
これらは最初の正方形です(各ループの回転なし)
回転なし
これは私が代わりに得たものです(長方形がポイントに向かって回転するのではなく、ポイントを中心に回転しているようです)
私が取得しようとしている動作は、それらを下の中央に向けることです。(500,1000) キャンバスが 1000x1000 の場合。
JSFiddle: http://jsfiddle.net/nmartin413/cMwTn/7/
私は一生、何がうまくいかないのか理解できません。あなたに際立っているものがあれば、私に知らせてください:)。長い質問で申し訳ありませんが、これは私を本当にイライラさせました。
前もって感謝します!