曲線の描画
キャンバスにベジェ曲線(→Wikipedia)を描画します。ベジェ曲線は二次、三次のものが使用可能です。それぞれの引数は以下の通りです。それぞれの引数であるcpxとcpyは制御点を表わしています。
// 二次ベジェ曲線 quadraticCurveTo(cp1x, cp1y, x, y); // 三次ベジェ曲線 bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
サンプル
サンプルは二次ベジェ曲線と三次ベジェ曲線を描いています。右上の図形は二次ベジェ曲線に補助線と制御点を加えたものです。二次ベジェ曲線はこの青い制御点を基準として、指定された座標(x, y)まで曲線を描いていきます。
// 二次ベジェ曲線の描画(左上) cx.beginPath(); cx.moveTo(60, 40); cx.quadraticCurveTo(100, 140, 140, 40); cx.stroke(); // 二次ベジェ曲線に補助線と制御点を加えたもの(右上) cx.beginPath(); cx.moveTo(180, 40); cx.quadraticCurveTo(220, 140, 260, 40); cx.stroke(); // 補助線の描画 cx.beginPath(); cx.moveTo(180, 40); cx.lineTo(220, 140); cx.lineTo(260, 40); cx.strokeStyle = "rgb(256, 100, 100)"; cx.stroke(); // 制御点の描画 cx.beginPath(); cx.moveTo(220, 140); cx.arc(220, 140, 5, 0, 2*Math.PI, false); cx.fillStyle = "rgb(100, 100, 256)"; cx.fill(); // 三次ベジェ曲線の描画 cx.beginPath(); cx.moveTo(60, 200); cx.bezierCurveTo(120, 300, 160, 100, 230, 200); cx.stroke();