´Ü¼øÇÑ Æнº´Â ¾îµð°¡ ¾ÈÀÌ°í ¾îµð°¡ ¹ÛÀÎÁö ÆÇ´ÜÇϱ⠽±Áö¸¸ Æнº°¡ º¹ÀâÇØÁö¸é ¾îµð°¡ ³»ºÎÀÌ°í ¾îµð°¡ ¿ÜºÎÀÎÁö
ÆÇ´ÜÇϱ⠾ָÅÇØÁø´Ù. Æнº¸¦ ±¸¼ºÇÏ´Â ¼±ºÐÀÌ °ãÄ¡¸é ¾È°ú ¹Û¿¡ ¸íÈ®ÇÏÁö ¾Ê¾Æ À̸¦ ÆÇ´ÜÇÏ´Â º¹ÀâÇÑ ¾Ë°í¸®ÁòÀÌ
ÇÊ¿äÇÏ´Ù. ¿©·¯ °¡Áö ¾Ë°í¸®ÁòÀÌ ÀÖÀ¸¸ç ´Ù¸¥ ±×¸®±â ½Ã½ºÅÛÀº ÀÌ ¾Ë°í¸®ÁòÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ĵ¹ö½º´Â nonzero winding ruleÀ̶ó´Â °íÁ¤µÈ
¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ´Ù.
µµÇü ³»ºÎ¿¡¼ ¹Ù±ùÂÊÀ¸·Î ¼±À» ±ßµÇ ½Ã°è ¹æÇâÀ¸·Î µµ´Â ¼±ºÐÀ» ¸¸³ª¸é Ä«¿îÆ®¸¦
1Áõ°¡½ÃÅ°°í ¹Ý½Ã°è ¹æÇâÀ¸·Î µµ´Â ¼±ºÐÀ» ¸¸³ª¸é Ä«¿îÆ®¸¦ 1 °¨¼Ò½ÃŲ´Ù. Æнº ¹ÛÀ¸·Î ³ª¿ÔÀ» ¶§ Ä«¿îÆ®°¡ 0ÀÌ ¾Æ´Ï¸é ¾ÈÀ̶ó°í ÆÇ´ÜÇϸç 0ÀÌ¸é ¹ÛÀ̶ó°í ÆÇ´ÜÇÑ´Ù. ¼ÓÀÌ ²Ë ä¿öÁø ´Ù°¢ÇüÀº ¿ÜºÎ·Î ³ª¿À±â
À§ÇØ ¼±À» Çϳª ¸¸³ª¹Ç·Î Ä«¿îÆ®°¡ Ç×»ó 0ÀÌ ¾Æ´Ï¸ç ±×·¡¼ ´Ù°¢ÇüÀÌ ´Ùµæ ä¿öÁø´Ù. ¼±ÀÇ ¹æÇâ¿¡ ¿µÇâÀ» ¹ÞÁöµµ ¾Ê´Â´Ù.
±×·¯³ª ¼±ºÐ³¢¸® ¼·Î ¸¸³ª´Â º¹ÀâÇÑ µµÇüÀº ¹ÛÀ¸·Î ³ª¿À±â Àü¿¡ ¼±ºÐÀ» ¿©·¯ °³ ¸¸³ª¸ç À̶§ ¼±ºÐ ¹æÇâ¿¡ µû¶ó
³»ºÎ¿¡ Æ÷ÇԵǴÂÁö ¿©ºÎ°¡ ´Þ¶óÁø´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.
fillmode.html
function draw() {
ctx.beginPath();
ctx.moveTo(100,50);
ctx.lineTo(300,50);
ctx.lineTo(100,150);
ctx.lineTo(300,150);
ctx.lineTo(200,10);
ctx.lineTo(200,190);
ctx.closePath();
ctx.fill();
}
¼±ºÐÀ¸·Î Z ¸ð¾çÀ» ±×¸®°í °è¼Ó ÀÌ¾î¼ Z¸¦ ¿·À¸·Î ¼¼¿î ¼±ºÐÀ» ±×Àº ÈÄ Æнº¸¦ ´Ý¾Ò´Ù. stroke·Î Æнº¸¦
±×¸®¸é ¿ÞÂÊ°ú °°Àº µµÇüÀÌ ±×·ÁÁø´Ù. ÀÌ µµÇüÀ» fill·Î
ä¿ì¸é ¾îµð°¡ ¾ÈÂÊÀΰ¡¿¡ µû¶ó ä¿ì´Â ¿µ¿ªÀÌ ´Þ¶óÁø´Ù.
Æнº³»ÀÇ ¼±ºÐ³¢¸® ¸¸³ª¹Ç·Î µµÇü ³»ºÎ¿¡ ¶Ç ´Ù¸¥ ÀÛÀº ´Ù°¢Çü ¿µ¿ªÀÌ Á¸ÀçÇÑ´Ù.
°¢ ¿µ¿ª¿¡ ´ëÇØ ¾ÈÀÎÁö ¹ÛÀÎÁö´Â ¿ÜºÎ·Î ³ª°¡¸é¼ ¸¸³ª´Â ¼±ÀÇ °³¼ö¿Í ¹æÇâ¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.
¨ç¹ø ¿µ¿ªÀº ¼±ºÐ°ú Çѹø¸¸ ¸¸³ª¹Ç·Î Ä«¿îÆ®°¡ 0ÀÌ ¾Æ´Ï¸ç µû¶ó¼ ³»ºÎÀÌ´Ù. ¨è¹ø¿µ¿ªÀº ¹Ý½Ã°è ¹æÇâÀÇ ¼±ºÐ°ú ½Ã°è
¹æÇâÀÇ ¼±ºÐÀ» Çѹø¾¿ ¸¸³ª¹Ç·Î µµÇüÀÇ ¿ÜºÎ·Î Ãë±ÞµÈ´Ù. ´õ º¹ÀâÇÑ µµÇüµµ °°Àº ¾Ë°í¸®ÁòÀ¸·Î ³»ºÎ¿Í ¿ÜºÎ¸¦
ÆǺ°ÇÑ´Ù.
»ç½Ç ÀÌ·± º¹ÀâÇÑ µµÇüÀ» ±×¸®´Â °æ¿ì°¡
¸¹Áö´Â ¾ÊÀ¸¹Ç·Î °£´ÜÇÑ µµÇü¸¸ ±×¸°´Ù¸é Å©°Ô ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø´Ù. º¼·ÏÇÑ Æó°î¼±À» ±×¸±
¶§´Â ä¿ì±â ¸ðµå°¡ º° ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù. ±×·¯³ª Æнº·Î ¾ÈÂÊÀÌ ¶Õ¸° µµÇüÀ» ±×¸± ¶§´Â ä¿ì±â ¸ðµå¿¡ µû¶ó ³»ºÎ¿Í ¿ÜºÎ°¡ ´Þ¶óÁö´Â °æ¿ì°¡ ÀÖÀ¸¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.
fillmode2.html
ctx.beginPath();
ctx.rect(10, 10, 180, 180);
ctx.arc(100, 100, 50, 0, 2*Math.PI, true);
ctx.fill();
ctx.beginPath();
ctx.rect(210, 10, 180, 180);
ctx.arc(300, 100, 50, 0, 2*Math.PI, false);
ctx.fill();
}
rect ¸Þ¼µå´Â Ç×»ó ½Ã°è ¹æÇâÀ¸·Î Æнº¸¦ ±×¸°´Ù. ¾î´À ¹æÇâÀ¸·Î ±×¸®³ª ¾îÂ÷ÇÇ »ç°¢ÇüÀÌ´Ù. ÀÌ¿¡ ºñÇØ arc´Â ±×¸®´Â ¹æÇâÀ» Àμö·Î Àü´ÞÇÒ ¼ö ÀÖ´Ù. ÇÑ Æнº¾È¿¡ »ç°¢Çü°ú
¿øÀ» ±×¸®µÇ ¿øÀÇ ¹æÇâÀ» ´Ù¸£°Ô ÇÑ ÈÄ ³»ºÎ¸¦ ä¿ü´Ù.
¿ÞÂÊÀº »ç°¢ÇüÀº ½Ã°è, ¿øÀº ¹Ý½Ã°è ¹æÇâÀ̹ǷΠÁß¾ÓÀÇ ¿ø¿¡¼ ¹ÛÀ¸·Î
¼±À» ±×À» ¶§ Ä«¿îÆ®°¡ 0ÀÌ µÈ´Ù. µû¶ó¼ ¾ÈÂÊÀÇ ¿ø ¿µ¿ªÀº
µµÇüÀÇ ³»ºÎ°¡ ¾Æ´Ï´Ù. ¹Ý¸é ¿À¸¥ÂÊÀº µÑ ´Ù ½Ã°è ¹æÇâÀ̹ǷΠī¿îÆ®°¡
1ÀÌ´Ù. µû¶ó¼ ÀÌ °æ¿ì´Â ¾ÈÂÊÀÇ ¿ø ¿µ¿ªÀÌ µµÇüÀÇ ³»ºÎÀÌ´Ù.
fill·Î ä¿ï ¶§ ¾îµð°¡ ä¿öÁö´Â°¡°¡ ´Ù¸£¸ç ¶ÇÇÑ Æнº¿¡ È÷Æ® Å×½ºÆ®¸¦
ÇÒ ¶§µµ ³»ºÎ, ¿ÜºÎ ÆÇ´Ü ¹æ¹ýÀÌ ´Ù¸£´Ù. µÎ °³ ÀÌ»óÀÇ
ºÐ¸®µÈ ¿µ¿ªÀ» °¡Áö´Â º¹ÀâÇÑ µµÇüÀ̳ª ¼±ºÐ³¢¸® °ãÄ¡´Â µµÇüÀ» ±×¸± ¶§´Â ¿øÇÏ´Â È¿°ú¸¦ ³»±â À§ÇØ ±×¸®´Â ¹æÇâµµ ÁÖÀÇÇØ¾ß ÇÑ´Ù.