おわかりのように、2 次曲線と 3 次ベジエ曲線はどちらも 2 点を曲線で接続するだけです。
3 次曲線にはより多くの制御点があるため、それらの 2 点間のパスがより柔軟になります。
たとえば、この文字「R」を描きたいとしましょう。
R の「非曲線」部分から描画を開始します。
二次曲線で曲線を描いてみます。
二次曲線は、私たちが望むものよりも「とがっている」ことに注意してください。
これは、2 次曲線を定義するための制御点が 1 つしかないためです。
次に、3 次ベジエ曲線で曲線を描いてみます。
3 次ベジエ曲線は、2 次曲線よりもきれいに丸められています。
これは、3 次曲線を定義する 2 つの制御点があるためです。
つまり...制御点が多いほど、「曲線」をより細かく制御できます
ここにコードとフィドルがあります: http://jsfiddle.net/m1erickson/JpXZW/
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<style>
body{ background-color: ivory; padding:20px; }
#canvas{border:1px solid red;}
</style>
<script>
$(function(){
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
ctx.lineWidth=8;
ctx.lineCap="round";
function baseR(){
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.beginPath();
ctx.moveTo(30,200);
ctx.lineTo(30,50);
ctx.lineTo(65,50);
ctx.moveTo(30,120);
ctx.lineTo(65,120);
ctx.lineTo(100,200);
ctx.strokeStyle="black";
ctx.stroke()
}
function quadR(){
ctx.beginPath();
ctx.moveTo(65,50);
ctx.quadraticCurveTo(130,85,65,120);
ctx.strokeStyle="red";
ctx.stroke();
}
function cubicR(){
ctx.beginPath();
ctx.moveTo(65,50);
ctx.bezierCurveTo(120,50,120,120,65,120);
ctx.strokeStyle="red";
ctx.stroke();
}
$("#quad").click(function(){
baseR();
quadR();
//cubicR();
});
$("#cubic").click(function(){
baseR();
cubicR();
});
}); // end $(function(){});
</script>
</head>
<body>
<button id="quad">Use Quadratic curve</button>
<button id="cubic">Use Cubic Bezier curve</button><br><br>
<canvas id="canvas" width=150 height=225></canvas>
</body>
</html>