最適なオプションは、独自のローカル座標系で三角形を定義することです。キャンバスを動かす予定がある場合はキャンバスの原点に従う必要があります。しかし、三角形の位置と回転だけを変更する必要はありません。
したがって、三角形を独自の座標系の点の集合として定義します。ここで、0,0は回転の中心です。点のセットから形状を描画する
// you had
/*
ctx.moveTo(5,0);
ctx.lineTo(10,10);
ctx.lineTo(0,10);
ctx.lineTo(5,0); */
// subtracting 5 from x and y to give
var triangle = [0,-5,5,5,-5,5]; // dont need the last point will use closePath
機能は人生少し楽に
function drawShape(shape, close){
var i = 0;
ctx.beginPath();
ctx.moveTo(shape[i++], shape[i++]);
while(i < shape.length){
ctx.lineTo(shape[i++], shape[i++]);
}
if(close){ ctx.closePath() }
ctx.stroke();
}
今すぐ変換
function setPosScaleRotation(x,y,scale,rot){
ctx.setTransform(scale,0,0,scale,x,y);
ctx.rotate(rot);
}
// and a function to restore the default transform
function restoreDefaultTransform(){
ctx.setTransform(1,0,0,1,0,0);
}
を設定する機能は、今では描きやすいです作りますあなたが望む形状
setPosScaleRotation(5,5,1,deg * Math.PI/180); // 30Pi/180 = 3Pi/18 = Pi/6
drawShape(triangle,true);
それとも
drawShape(triangle, true, 5, 5, 1, Math.PI /6);
drawShape(triangle, true, 100, 100,1, Math.PI + Math.PI/6); // draw at 100,100 at 180 from other triangle
に続いて[HTML5のキャンバス - 座標を移動せずにオブジェクトを回転]の可能複製同じ関数に変換し、描画
を置く(http://stackoverflow.com/questions/17125632を/ html5-canvas-rotate-object-moving-coordinates-coordinateなし) – Sphinxxx