4-2-6.ä¿ì±â ¸ðµå

´Ü¼øÇÑ Æнº´Â ¾îµð°¡ ¾ÈÀÌ°í ¾îµð°¡ ¹ÛÀÎÁö ÆÇ´ÜÇϱ⠽±Áö¸¸ Æнº°¡ º¹ÀâÇØÁö¸é ¾îµð°¡ ³»ºÎÀÌ°í ¾îµð°¡ ¿ÜºÎÀÎÁö ÆÇ´ÜÇϱ⠾ָÅÇØÁø´Ù. Æнº¸¦ ±¸¼ºÇÏ´Â ¼±ºÐÀÌ °ãÄ¡¸é ¾È°ú ¹Û¿¡ ¸íÈ®ÇÏÁö ¾Ê¾Æ À̸¦ ÆÇ´ÜÇÏ´Â º¹ÀâÇÑ ¾Ë°í¸®ÁòÀÌ ÇÊ¿äÇÏ´Ù. ¿©·¯ °¡Áö ¾Ë°í¸®ÁòÀÌ ÀÖÀ¸¸ç ´Ù¸¥ ±×¸®±â ½Ã½ºÅÛÀº ÀÌ ¾Ë°í¸®ÁòÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ĵ¹ö½º´Â 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

function draw() {

     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·Î ä¿ï ¶§ ¾îµð°¡ ä¿öÁö´Â°¡°¡ ´Ù¸£¸ç ¶ÇÇÑ Æнº¿¡ È÷Æ® Å×½ºÆ®¸¦ ÇÒ ¶§µµ ³»ºÎ, ¿ÜºÎ ÆÇ´Ü ¹æ¹ýÀÌ ´Ù¸£´Ù. µÎ °³ ÀÌ»óÀÇ ºÐ¸®µÈ ¿µ¿ªÀ» °¡Áö´Â º¹ÀâÇÑ µµÇüÀ̳ª ¼±ºÐ³¢¸® °ãÄ¡´Â µµÇüÀ» ±×¸± ¶§´Â ¿øÇÏ´Â È¿°ú¸¦ ³»±â À§ÇØ ±×¸®´Â ¹æÇâµµ ÁÖÀÇÇØ¾ß ÇÑ´Ù.