¿øÀ̳ª ¿øÈ£¸¦ ±×¸± ¶§´Â ´ÙÀ½ ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù.
arc(x, y, r, st, ed, anticlockwise)
(x, y)´Â ¿øÀÇ Áß½ÉÁ¡ÀÌ°í rÀº
¹ÝÁö¸§ÀÌ´Ù. st, ed´Â ½ÃÀÛ°¢°ú ³¡°¢Àε¥ °¢µµ´Â ¼¼½Ã ¹æÇâÀ» 0µµ·Î
ÇÏ¿© ½Ã°è ¹æÇâÀ¸·Î Áõ°¡ÇÏ´Â ¶óµð¾È °ªÀÌ´Ù. 6½Ã ¹æÇâÀÌ 90µµÀÌ°í 9½Ã ¹æÇâÀÌ 180µµÀÌ´Ù.
¶óµð¾ÈÀº ¹ÝÁö¸§°ú ¿øÁÖ ±æÀÌ°¡ °°¾ÆÁö´Â °¢µµ¸¦ ÀǹÌÇÑ´Ù. ¿ì¸®´Â ¶óµð¾Èº¸´Ù´Â
°¢µµ¿¡ ´õ Àͼ÷Çѵ¥ 360ºÐ¹ýÀÇ °¢µµ¸¦ ¶óµð¾ÈÀ¸·Î ¹Ù²Ù·Á¸é ´ÙÀ½ °ø½ÄÀ» »ç¿ëÇÑ´Ù.
¶óµð¾È = °¢µµ * Math.PI/180
¿ÏÀüÇÑ ¿øÀ» ±×¸®·Á¸é 0µµ ~
360µµ±îÁö ¿øÈ£¸¦ ±×¸°´Ù. anticlockwise´Â ¿øÈ£ÀÇ ¹æÇâÀ» ÁöÁ¤ÇÑ´Ù. trueÀÌ¸é ¹Ý½Ã°è, falseÀÌ¸é ½Ã°è ¹æÇâÀÌµÇ »ý·«½Ã false°¡ Àû¿ëµÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â
0µµ ~ 120µµ±îÁö ¿øÈ£¸¦ µÎ ¹æÇâÀ¸·Î °¢°¢ ±×¸°´Ù.
drawarc.html
function draw() {
ctx.beginPath();
ctx.arc(100,100,70,0
* Math.PI / 180, 120 * Math.PI / 180, false);
ctx.stroke();
ctx.beginPath();
ctx.arc(300,100,70,0
* Math.PI / 180, 120 * Math.PI / 180, true);
ctx.stroke();
}
½ÃÀÛ°¢°ú ³¡°¢Àº °°Áö¸¸ ¿øÈ£ÀÇ ¹æÇâÀÌ ´Ù¸£´Ù. ¿ÞÂÊ ¿øÀº 0µµ¿¡¼ ½ÃÀÛÇؼ ½Ã°è ¹æÇâÀ¸·Î 120µµ±îÁö µ¹°í ¿À¸¥ÂÊ ¿øÀº 0µµ¿¡¼ ¹Ý½Ã°è ¹æÇâÀ¸·Î 120µµ±îÁö µ·´Ù. ¹æÇâÀÌ ´Ù¸§À¸·Î ÀÎÇØ ¿øÈ£ÀÇ ±æÀ̵µ ´Ù¸£´Ù.
µÎ°³ÀÇ ºÐ¸®µÈ ¿øÈ£À̹ǷΠÆнº¸¦ ºÐ¸®ÇÏ¿© µÎ ¹ø ±×·È´Ù. arc´Â
¼ºê Æнº°¡ ÀÖÀ¸¸é ÇöÀç À§Ä¡¿Í È£ÀÇ ½ÃÀÛÁ¡À» ¿¬°áÇÑ´Ù. µÎ ¿øÈ£¸¦ °°Àº Æнº¿¡ ³ÖÀ¸¸é ù¹ø° ¿øÈ£ÀÇ
³¡Á¡°ú µÎ¹ø° ¿øÈ£ÀÇ ½ÃÀÛÁ¡ÀÌ ¿¬°áµÇ¾î ¿À¸¥ÂÊ ±×¸²Ã³·³ µÇ¾î ¹ö¸± °ÍÀÌ´Ù.
drawarc2.html
function draw() {
ctx.beginPath();
ctx.arc(100,100,70,0
* Math.PI / 180, 120 * Math.PI / 180, false);
ctx.arc(300,100,70,0
* Math.PI / 180, 120 * Math.PI / 180, true);
ctx.stroke();
}
fill ¸Þ¼µå·Î ¿øÈ£ÀÇ ¾ÈÂÊÀ» ä¿ì¸é ¿øÈ£ÀÇ ¾çÂÊ ³¡ÀÌ ¿¬°áµÇ¾î
¹Ý´Þ ¸ð¾çÀÌ ±×·ÁÁø´Ù. ¿øÈ£ÀÇ ³¡À» ¿øÀÇ Á߽ɰú ¿¬°áÇÏ¿© ÇÇÀÚ ¸ð¾çÀ¸·Î ±×¸®°í ½Í´Ù¸é moveTo ¸Þ¼µå·Î ½ÃÀÛÁ¡À» ¿øÀÇ Á߽ɿ¡ µÎ°í ¿øÈ£¸¦ ±×·Á ä¿î´Ù. ´ÙÀ½
¿¹Á¦´Â ¹Ý´Þ°ú ÇÇÀÚ¸¦ ±×¸°´Ù.
drawpie.html
function draw() {
ctx.beginPath();
ctx.arc(100,100,70,0
* Math.PI / 180, 120 * Math.PI / 180);
ctx.fill();
ctx.beginPath();
ctx.moveTo(300,100);
ctx.arc(300,100,70,0
* Math.PI / 180, 120 * Math.PI / 180);
ctx.fill();
}
¿øÈ£ÀÇ ½ÃÀÛ°¢, ³¡°¢Àº °°´Ù. ù¹ø°
¿øÈ£´Â ¿øÁÖÀÇ ³¡À» ¿¬°áÇؼ ´ÝÀ¸¹Ç·Î ¹Ý´Þ ¸ð¾çÀÌ´Ù. µÎ¹ø° ¿øÈ£´Â Áß½ÉÀ¸·Î À̵¿ÇÑ »óÅ·Π±×¸®¹Ç·Î
Á߽ɰú ¿øÈ£ ½ÃÀÛÁ¡°ú ¿¬°áµÇ°í fill ¸Þ¼µå¿¡ ÀÇÇØ ¿øÈ£ ³¡Á¡ÀÌ Á߽ɰú ¿¬°áµÇ¹Ç·Î ÇÇÀÚ ¸ð¾çÀÌ µÈ´Ù.
µÎ¹ø° ¿øÈ£´Â ´ÙÀ½°ú °°ÀÌ ±×·Áµµ ¸¶Âù°¡ÁöÀÌ´Ù. ¿øÁÖ¸¦ ÀÏ´Ü ±×·Á
³õ°í Áß½ÉÁ¡±îÁö ¼±À» ±×À¸¸é ¼±³¡°ú ¿øÁÖ ½ÃÀÛÁ¡Àº fill ¸Þ¼µå°¡ ¾Ë¾Æ¼ ¿¬°áÇØ ÁØ´Ù.
ctx.beginPath();
ctx.arc(300,100,70,0 * Math.PI / 180, 120 *
Math.PI / 180);
ctx.lineTo(300,100);
ctx.fill();
¿øÈ£°¡ ¾Æ´Ï¶ó ¿ÏÀüÇÑ ¿øÀ» ±×¸®¸®¸é 0 ~ 360µµ±îÁö ¿øÈ£¸¦ ´Ù
±×¸®¸é µÈ´Ù.
drawcircle.html
function draw() {
ctx.beginPath();
ctx.arc(200,100,80,0,
2 * Math.PI);
ctx.stroke();
}
360µµ´Â 2 * Math.PI ¶óµð¾ÈÀ̹ǷÎ
±»ÀÌ 360 * Math.PI / 180À̶ó°í ¾²Áö ¾Ê¾Æµµ µÈ´Ù. ¿øÁÖ
Àüü¸¦ ±×¸®¹Ç·Î ¹æÇâµµ Àǹ̰¡ ¾ø´Ù. ¿ÞÂÊÀ¸·Î µµ³ª ¿À¸¥ÂÊÀ¸·Î µµ³ª ¾îÂ÷ÇÇ ¿ø Àüü°¡ ´Ù ±×·ÁÁø´Ù.
Á¤¿øÀ» ±×¸®´Â ¸Þ¼µå´Â µû·Î Á¦°øµÇÁö ¾ÊÁö¸¸ arc ÇÔ¼ö¸¦ ·¡ÇÎÇϸé
½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ¿øÀ» ±×¸± ÀÏÀº ¾ÆÁÖ ÈçÇÏ°í ¶Ç ÇÇÀÚ ¸ð¾çÀÇ ÆÄÀ̵µ Á¾Á¾ »ç¿ëµÈ´Ù. ÀÚÁÖ »ç¿ëÇÏ´Â ¸Þ¼µå°¡ ÀÖ´Ù¸é ÄÁÅؽºÆ®¸¦ È®ÀåÇÏ¿© Á¤ÀÇÇÏ¸é µÈ´Ù. ´ÙÀ½
¿¹Á¦´Â ¿øÀÇ ¿Ü°û¼±À» ±×¸®´Â ¸Þ¼µå¿Í ¿øÀÇ ¾ÈÂÊÀ» ä¿ì´Â ¸Þ¼µå¸¦ Á¤ÀÇÇÑ´Ù.
arcfunc.html
CanvasRenderingContext2D.prototype.strokeCircle = function(x, y, r)
{
this.beginPath();
this.arc(x,
y, r , 0, 2 * Math.PI);
this.stroke();
}
CanvasRenderingContext2D.prototype.fillCircle = function(x, y, r) {
this.beginPath();
this.arc(x,
y, r , 0, 2 * Math.PI);
this.fill();
}
function draw() {
ctx.strokeCircle(100,
100, 80);
ctx.fillCircle(300,
100, 80);
}
¸Þ¼µå À̸§Àº ĵ¹ö½ºÀÇ ´Ù¸¥ ±×¸®±â ¸Þ¼µå¿Í °°ÀÌ stroke~, fill~·Î
ÀÛ¼ºÇÏ¿© ÀÏ°ü¼ºÀ» À¯ÁöÇß´Ù. ÄÁÅؽºÆ®¿¡ ¸Þ¼µå°¡ Ãß°¡µÇ¹Ç·Î ±âÁ¸ÀÇ ¸Þ¼µå¿Í µ¿ÀÏÇÑ ¹æ¹ý´ë·Î »ç¿ëÇÒ ¼ö
ÀÖ´Ù.
ÀåÃà°ú ´ÜÃàÀÌ ´Ù¸¥ Ÿ¿øÀ» ±×¸®´Â ¸Þ¼µå´Â ´ÙÀ½¿¡ ¹è¿ï º¯È¯ ±â¹ýÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¸¶Âù°¡Áö·Î ÀÚÁÖ »ç¿ëÇÑ´Ù¸é ·¡ÇÎÇØ ³õÀ¸¸é µÈ´Ù. ´ÙÀ½ ¸Þ¼µå´Â µÎ
Á÷¼±¿¡ ³»Á¢ÇÏ´Â ¿øÈ£¸¦ ±×¸°´Ù.
arcTo(x1, y1, x2, y2, r)
ÀÌ ¸Þ¼Òµå°¡ µ¿ÀÛÇÏ·Á¸é Æнº¿¡ ÇöÀç À§Ä¡°¡ ÁöÁ¤µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. ÇöÀç
À§Ä¡¸¦ (x0, y0)À̶ó°í ÇÒ ¶§ ÇöÀç À§Ä¡¿¡¼ (x1, y1)±îÁö
°¡»óÀÇ ¼±À» ±ß°í ´Ù½Ã (x2, y2)±îÁö °¡»óÀÇ ¼±À» ±×Àº ÈÄ µÎ ¼±¿¡ ³»Á¢ÇÏ´Â ¹ÝÁö¸§ rÀÇ ¿øÈ£¸¦ ±×¸°´Ù. ±×¸®°í ÇöÀç À§Ä¡¿Í ¿øÈ£ÀÇ ½ÃÀÛÁ¡À» ¿¬°áÇÑ´Ù. µ¿ÀÛÀÌ º¹ÀâÇؼ Á÷°üÀûÀ¸·Î ÀÌÇØÇϱ⠾î·Á¿ì¹Ç·Î ¿¹Á¦¸¦ º¸ÀÚ.
arcto.html
ctx.beginPath();
ctx.moveTo(10, 10);
ctx.arcTo(100, 150, 200, 10, 40);
ctx.stroke();
}
Æнº¸¦ ½ÃÀÛÇÏÀÚ ¸¶ÀÚ moveTo ¸Þ¼µå·Î ÇöÀç À§Ä¡¸¦ (10, 10)À¸·Î ÁöÁ¤Çß´Ù. ÇöÀç À§Ä¡°¡ ¾øÀ¸¸é arcTo ¸Þ¼µå´Â ¾Æ¹« °Íµµ ±×¸®Áö ¾Ê´Â´Ù. (10, 10) - (100,
150) ±îÁöÀÇ Á÷¼±°ú (100, 150) - (200, 10)±îÁöÀÇ Á÷¼±¿¡ ³»Á¢ÇÏ´Â ¹ÝÁö¸§ 40ÀÇ Å¸¿øÀ» ±×¸®°í ÇöÀç À§Ä¡¿Í ¿¬°áÇÑ´Ù.
½ÇÇà °á°ú¸¸ ºÁ¼´Â ¾ó¸¥ °¨ÀÌ ¿ÀÁö ¾ÊÀ» °ÍÀÌ´Ù. ¾î°¼ ÀÌ·± ±×¸²ÀÌ
³ª¿À´ÂÁö ÁÂÇ¥¸¦ ºÐ¼®ÇØ º¸ÀÚ.
µÎ Á÷¼±Àº ¿øÈ£ÀÇ ¿ÜÁ¢ ¸ð¾çÀ» °áÁ¤Çϱâ À§ÇÑ °¡»óÀÇ ¾È³»¼±ÀÏ »ÓÀ̹ǷΠÃâ·ÂµÇÁö ¾Ê´Â´Ù. ´Ù¸¸ ÇöÀç À§Ä¡¿Í ¿øÈ£ÀÇ ½ÃÀÛÁ¡Àº ¿¬°áµÇ¹Ç·Î ±×·ÁÁø´Ù. ¸ð¼¸®°¡
µÕ±Ù »ç°¢ÇüÀ» ±×¸± ¶§ ÀÌ ¸Þ¼µå¸¦ È°¿ëÇÑ´Ù.
roundarc.html
function draw() {
ctx.beginPath();
ctx.moveTo(10,
10);
ctx.arcTo(200,
10, 200, 50, 50);
ctx.lineTo(200,
100);
ctx.arcTo(200,
150, 10, 150, 50);
ctx.lineTo(10,150);
ctx.stroke();
}
ÁÂÇ¥°¡ Á» º¹ÀâÇѵ¥ ¾î¶² ±×¸²ÀÌ ³ª¿ÃÁö Á÷Á¢ ¿¬½ÀÀå¿¡ ±×·Á º¸°í ºÐ¼®ÇØ º¸ÀÚ.
ÀÌ ¸Þ¼µå¸¦ Àß È°¿ëÇÏ¸é µÕ±Ù »ç°¢ÇüÀ» ±×¸± ¼ö ÀÖ´Ù. 4º¯¿¡ ´ëÇØ arcTo¸¦ ÀÏÀÏÀÌ È£ÃâÇØ¾ß ÇϹǷΠÁÂÇ¥ °è»êÀÌ Á» º¹ÀâÇÏ´Ù. ÀÚÁÖ
»ç¿ëÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ·¡ÆÛ ¸Þ¼µå¸¦ ÀÛ¼ºÇØ µÐ´Ù.
roundrect.html
CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h,
r) {
this.beginPath();
this.moveTo(x+r,
y);
this.arcTo(x+w,y,x+w,y+h,r);
this.arcTo(x+w,y+h,x,y+h,r);
this.arcTo(x,y+h,x,y,r);
this.arcTo(x,y,x+w,y,r);
}
CanvasRenderingContext2D.prototype.strokeRoundRect = function (x, y,
w, h, r) {
this.roundRect(x,
y, w, h, r);
this.stroke();
}
CanvasRenderingContext2D.prototype.fillRoundRect = function(x, y, w,
h, r) {
this.roundRect(x,
y, w, h, r);
this.fill();
}
function draw() {
ctx.strokeRoundRect(10,
10, 120, 100, 20);
ctx.fillRoundRect(150,
10, 120, 100, 30);
}
¿ÞÂÊ ¸ð¼¸®¿¡¼ ½ÃÀÛÇؼ ½Ã°è ¹æÇâÀ¸·Î °¢ ²ÀÁöÁ¡À» µ¹¸ç 4º¯À» arcTo ¸Þ¼µå·Î ¿¬°áÇß´Ù. Æнº¸¦ ¸¸µå´Â ÄÚµå´Â °°°í ÃÖÁ¾ÀûÀ¸·Î
È£ÃâÇÒ ¸Þ¼µå°¡ strokeÀÎÁö fill ÀÎÁö¸¸ ´Ù¸£¹Ç·Î
Æнº¸¦ Á¤ÀÇÇÏ´Â º°µµÀÇ µµ¿ì¹Ì ¸Þ¼µå¸¦ Çϳª ´õ ¸¸µé¾ú´Ù.
arcTo ¸Þ¼µå´Â Á÷°üÀûÀÌÁöµµ ¾Ê°í »ç¿ëÇϱ⵵ ºÒÆíÇÏ´Ù. µÕ±Ù »ç°¢ÇüÀ» À§Çؼ¶ó¸é Â÷¶ó¸® À§¿¡¼ ¸¸µç roundRect ¸Þ¼µå¸¦
Á¦°øÇÏ´Â °ÍÀÌ ´õ ³º¾ÒÀ» °ÍÀÌ´Ù. ±×·¯³ª arcTo ¸Þ¼µå¸¦
±»ÀÌ Á¦°øÇÏ´Â ÀÌÀ¯´Â ÀÌ ¸Þ¼µå¸¦ ÀÀ¿ëÇÏ¸é µÕ±Ù »ï°¢Çüµµ ±×¸± ¼ö Àֱ⠶§¹®ÀÌ´Ù. ´ÙÀ½ ¿¹Á¦´Â µÕ±Ù
»ï°¢ÇüÀ» ±×¸°´Ù.
triangle.html
function draw() {
ctx.beginPath();
ctx.moveTo(14,152);
ctx.arcTo(90,
0, 180, 180, 20);
ctx.arcTo(180,
180, 0, 180, 20);
ctx.arcTo(0,
180, 90, 0, 20);
ctx.stroke();
}
¿¹¸¦ º¸À̱â À§ÇØ È£ÀÇ ³¡ ÁÂÇ¥´Â ´«´ëÁßÀ¸·Î ´ëÃæ ³¢¿ö ¸ÂÃß¾úÀ¸¸ç ¸Þ¼µå·Î Ãß°¡ÇÏÁö´Â ¾Ê¾Ò´Ù. È£ÀÇ ³¡À» Á¦´ë·Î °è»êÇÏ·Á¸é ¾à°£ º¹ÀâÇÑ ¼ö½ÄÀ» µ¿¿øÇØ¾ß ÇÑ´Ù.
ºñ½ÁÇÏ°Ô ÀÀ¿ëÇÏ¸é ¸ð¼¸®°¡ µÕ±Ù ¿À°¢Çü, À°°¢Çü, ÆÈ°¢Çüµµ ¸¸µé ¼ö ÀÖÀ¸¸ç ³¡ÀÌ ¹¶ÅöÇÑ º°¸ð¾çµµ ¸¸µé ¼ö ÀÖ´Ù. ÀÌ·±
ÀÀ¿ëÀÌ °¡´ÉÇϱ⠶§¹®¿¡ arcTo ¸Þ¼µå°¡ Á¦°øµÇ´Â °ÍÀÌ´Ù.