±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
°ÔÀÓÁ¦ÀÛ °ÔÀÓÁ¦ÀÛ ÀÔ´Ï´Ù.
±Û³»¿ë - °ÔÀÓÁ¦ÀÛ
 [»ê¼ö 02] Çà±âÁØ Çà·Ä°ú ¿­±âÁØ Çà·Ä
¹Î¼º±â
(¼Õ´Ô)
2002-12-18 ¿ÀÈÄ 4:04:03
4521ȸ Á¶È¸


µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
 ºäº¯È¯ Çà·Ä¿¡ ´ëÇØ »ìÆ캸±â Àü¿¡ ¤°í ³Ñ¾î°¡¾ß ÇÒ ¹®Á¦°¡ ÀÖ½À´Ï´Ù. OpenGL°ú D3D¸¦ ¸»ÇÒ ¶§ °¡Àå Å« Â÷ÀÌÁ¡À¸·Î ¿À¸¥¼Õ ÁÂÇ¥°è³Ä ¿Þ ¼Õ ÁÂÇ¥°è³Ä¸¦ µûÁý´Ï´Ù. ±×¸®°í ¶Ç Çϳª ¾ê±âÇÏ´Â °ÍÀÌ ¹Ù·Î Çà±âÁØ Çà·ÄÀÌ³Ä ¿­±âÁØ Çà·ÄÀ̳Ĵ °ÍÀÌÁÒ...



 ÁÂÇ¥°è ¹®Á¦´Â ZÁÂÇ¥¸¦ µÚÁý±â¸¸ ÇÏ¸é ³¡³³´Ï´Ù. ¾Õ¿¡¼­ »ìÆìºÃ´ø ȸÀüÇà·Ä ¿ª½Ã ¿À¸¥¼Õ ÁÂÇ¥°è°¡ ¿À¸¥¼Õ ¹ýÄ¢À¸·Î ¾çÀÇ ¹æÇâÀ» ±ÔÁ¤ÇÏ´Â °Í ó·³ ¿Þ¼Õ ÁÂÇ¥°è´Â ¿Þ¼ÕÀÌ °¨±â´Â ¹æÇâÀ» ¾çÀÇ ¹æÇâÀ¸·Î Çϱ⠶§¹®¿¡ ȸÀüÇà·ÄÀ» ±×´ë·Î ¾µ ¼ö ÀÖ½À´Ï´Ù. ¾çÀÇ ¹æÇâ¿¡ ÇØ´çÇÏ´Â ÁÂÇ¥Æò¸é°ú ÃàÀ» 2Â÷¿ø¿¡ ¼³Á¤ÇØ ±×·Áº¸¸é ±Ý¹æ ¾Ë ¼ö ÀÖ½ÀÁÒ...



¿À¸¥¼Õ ÁÂÇ¥°è¿Í ¾çÀÇ È¸Àü¹æÇâ

(¿À¸¥¼ÕÀ¸·Î ZÃàÀ» °¨¾ÆÁæ ¶§ ³ª¸ÓÁö ¼Õ°¡¶ôµéÀÇ ¹æÇâÀ¸·Î ȸÀü)





¿Þ¼Õ ÁÂÇ¥°èÀÇ ¾çÀÇ È¸Àü¹æÇâ

(¿Þ¼ÕÀ¸·Î ZÃàÀ» °¨¾ÆÁæ ¶§ ³ª¸ÓÁö ¼Õ°¡¶ôµéÀÇ ¹æÇâÀ¸·Î ȸÀü)





 ¶§¹®¿¡ ±âº»ÀûÀÎ °Í¸¸ ¸í½ÉÇÏ¸é ±×´ÙÁö Çò°¥¸± ÀÌÀ¯°¡ ¾øÁÒ... ÇÏÁö¸¸ OpenGL¿¡¼­ »ç¿ëÇÏ´Â ¿­±âÁØ Çà·Ä°ú D3DÀÇ Çà±âÁØ Çà·ÄÀ̶õ ³à¼®µéÀº È®½ÇÇÏ°Ô ±× Â÷À̸¦ ÀÌÇØÇØ µÎÁö ¾ÊÀ¸¸é µÎ°í µÎ°í µÚÅë¼ö¸¦ ¸Â°Ô µË´Ï´Ù.

 Âü°í·Î ¾çÅ°µéÀº Çà±âÁØ Çà·Ä(Row major matrix) ÀÇ °ö¼ÀÀ» ÇÁ¸®¸ÖƼÇø®ÄÉÀ̼Ç(Pre-multiplication), ¿­±âÁØ Çà·Ä(Column major matrix) ÀÇ °ö¼ÀÀ» Æ÷½ºÆ®¸ÖƼÇø®ÄÉÀ̼Ç(Post-multiplication) À̶ó°í ±¸ºÐÇؼ­ ¾²´õ±º¿ä.



 ¾Æ¹«Æ° ¿ì¸®°¡ ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â Çà±âÁØ Çà·ÄÀº ¾Æ·¡Ã³·³ Á¤Àǵǰí,




  A(Row) = | a00 a01 a02 a03 |

           | a04 a05 a06 a07 |

           | a08 a09 a10 a11 |

           | a12 a13 a14 a15 |




 OpenGL ·¹ÆÛ·±½º¿¡ µû¸£¸é ¿­±âÁØ Çà·ÄÀº ´ÙÀ½°ú °°ÀÌ »ý°Ü¸Ô¾ú½À´Ï´Ù.




  A(Col) = | a00 a04 a08 a12 |

           | a01 a05 a09 a13 |

           | a02 a06 a10 a14 |

           | a03 a07 a11 a15 |




 Çà±âÁØ º¯È¯Çà·Ä A¿¡ ÀÇÇØ ÀýÁ¡ P(x,y,z,w) °¡ »õ·Î¿î ÀýÁ¡ P'(x',y',z',w') ·Î º¯È¯ÇÏ´Â °úÁ¤À» »ìÆ캸ÁÒ. °íµîÇб³ ¶§ ¹è¿üµíÀÌ Çà·ÄÀÇ °ö¼ÀÀÌ ¼º¸³ÇÏ·Á¸é Çà°ú ¿­ÀÇ °¹¼ö°¡ °°¾Æ¾ß ÇϹǷΠ´ÙÀ½°ú °°ÀÌ Àû¾îÁÝ´Ï´Ù. (Çà·ÄÀÇ ¾î¶² ¿ä¼Ò³¢¸® °öÇÏ´ÂÁö ¼Õ°¡¶ôÀ¸·Î ¤À¸¸é¼­ º¸¼¼¿ä.)




  | x' y' z' w' | =



  | x  y  z  w  | ¡¿ | a00 a01 a02 a03 |

                     | a04 a05 a06 a07 |

                     | a08 a09 a10 a11 |

                     | a12 a13 a14 a15 |



  x' = x*a00 + y*a04 + z*a08 + w*a12

  y' = x*a01 + y*a05 + z*a09 + w*a13

  z' = x*a02 + y*a06 + z*a10 + w*a14

  w' = x*a03 + y*a07 + z*a11 + w*a15





 ¿ø·¡ ¿­±âÁØ Çà·ÄÀº ÀýÁ¡, ¶Ç´Â º¤Å͸¦ Ç¥ÇöÇÏ´Â Çà·ÄÀ» ¼¼·Î, Áï ¿­·Î Ç¥ÇöÇϱâ À§ÇØ »ç¿ëÇÕ´Ï´Ù. º¤ÅÍ V(x,y,z,w) ¿¡ º¯È¯Çà·ÄÀÌ Àû¿ëµÈ »õ·Î¿î º¤ÅÍ V'¸¦ °è»êÇÏ´Â °úÁ¤À» ¿­±âÁØ Çà·Ä·Î Ç¥ÇöÇÒ ¶§´Â ´ÙÀ½°ú °°ÀÌ Àû¾î ÁÝ´Ï´Ù.




  | x' |   | a00 a04 a08 a12 |    | x |

  | y' | = | a01 a05 a09 a13 | ¡¿ | y |

  | z' |   | a02 a06 a10 a14 |    | z |

  | w' |   | a03 a07 a11 a15 |    | w |




 Ç®¾îº¸¸é ´ÙÀ½°ú °°½ÀÁÒ. (¼Õ°¡¶ôÀ» ¤À¸¸é¼­ º¸¼¼¿ä.)




  x' = a00*x + a04*y + a08*z + a12*w

  y' = a01*x + a05*y + a09*z + a13*w

  z' = a02*x + a06*y + a10*z + a14*w

  w' = a03*x + a07*y + a11*z + a15*w ... ¨ç




 ºñ±³ÇØ º¸³ª ¸¶³ª °°Àº °á°ú ÀÔ´Ï´Ù. ¾ö¹ÐÈ÷ ¸»ÇØ ¿­±âÁØ Çà·ÄÀº ¿­-Çà ¼øÀ¸·Î °öÇϱ⠶§¹®¿¡ ¼ø¼­´Â ±×´ë·Î µÎ°í ´ÙÀ½°ú °°ÀÌ Ç¥ÇöÇÏ´Â °ÍÀÌ ¸Â½À´Ï´Ù. (¼Õ°¡¶ô... ÀØÁö ¸¶½Ã±¸..)




  | x' |   | x |    | a00 a04 a08 a12 |

  | y' | = | y | ¡¿ | a01 a05 a09 a13 |

  | z' |   | z |    | a02 a06 a10 a14 |

  | w' |   | w |    | a03 a07 a11 a15 |



  x' = x*a00 + y*a04 + z*a08 + w*a12

  y' = x*a01 + y*a05 + z*a09 + w*a13

  z' = x*a02 + y*a06 + z*a10 + w*a14

  w' = x*a03 + y*a07 + z*a11 + w*a15 ... ¨è




 ±×·¯³ª OpenGL¿¡¼­´Â ¨ç ¿¡¼­ÀÇ ¹æ¹ýÀ¸·Î Çà·ÄÀ» Ç¥½ÃÇÏ°í °öÇØÁֳ׿ä. ÀÌ¹Ì ±ú´ÞÀ¸½Å ºÐµµ °è½Ã°ÚÁö¸¸, ¨è ÀÇ ¹æ¹ýó·³ ¿­-ÇàÀ¸·Î °öÇØÁÖ´Â °ÍÀº °°Àº ³»¿ëÀ» Çà±âÁØÀ¸·Î Ç¥½ÃÇÏ°í Çà-¿­ ¼øÀ¸·Î °öÇØÁÖ´Â °Í°ú °°½À´Ï´Ù. ÀÌ·¸°Ô °öÇÏ´Â ¹æ½ÄÀÌ Çà-·ÄÀÌ³Ä ¿­-ÇàÀ̳Ŀ¡ µû¶ó °öÇÏ´Â ¼ø¼­°¡ ¹Ù²ò´Ï´Ù. Áß¿äÇÏ´Ï±î ²À ±â¾ïÇϼ¼¿ä.



 Çà·Ä³¢¸®ÀÇ °ö¼Àµµ »ìÆ캸ÁÒ.



 ¸ÕÀú Çà±âÁØ Çà·ÄÀÇ °ö¼ÀÀ» Ç®¾î¼­ ½á º¾½Ã´Ù. Çà-¿­ ¼øÀ¸·Î °öÇÕ´Ï´Ù. (¸¶Âù°¡Áö·Î ¼Õ°¡¶ôÀ¸·Î Àß Â¤À¸¸é¼­ º¸¼¼¿ä..)




  R(Row) = M(Row) * T(Row)



  | r00 r01 r02 r03 |   | m00 m01 m02 m03 |    | t00 t01 t02 t03 |

  | r04 r05 r06 r07 | = | m04 m05 m06 m07 | ¡¿ | t04 t05 t06 t07 |

  | r08 r09 r10 r11 |   | m08 m09 m10 m11 |    | t08 t09 t10 t11 |

  | r12 r13 r14 r15 |   | m12 m13 m14 m15 |    | t12 t13 t14 t15 |



  r00 = m00*t00 + m01*t04 + m02*t08 + m03*t12

  r01 = m00*t01 + m01*t05 + m02*t09 + m03*t13

  r02 = m00*t02 + m01*t06 + m02*t10 + m03*t14

  r03 = m00*t03 + m01*t07 + m02*t11 + m03*t15



  r04 = m04*t00 + m05*t04 + m06*t08 + m07*t12

  r05 = m04*t01 + m05*t05 + m06*t09 + m07*t13

  r06 = m04*t02 + m05*t06 + m06*t10 + m07*t14

  r07 = m04*t03 + m05*t07 + m06*t11 + m07*t15



  r08 = m08*t00 + m09*t04 + m10*t08 + m11*t12

  r09 = m08*t01 + m09*t05 + m10*t09 + m11*t13

  r10 = m08*t02 + m09*t06 + m10*t10 + m11*t14

  r11 = m08*t03 + m09*t07 + m10*t11 + m11*t15



  r12 = m12*t00 + m13*t04 + m14*t08 + m15*t12

  r13 = m12*t01 + m13*t05 + m14*t09 + m15*t13

  r14 = m12*t02 + m13*t06 + m14*t10 + m15*t14

  r15 = m12*t03 + m13*t07 + m14*t11 + m15*t15 ... ¨é





 ´ÙÀ½¿¡´Â ¿­±âÁØ Çà·ÄÀÇ °ö¼ÀÀ» º¸°Ú½À´Ï´Ù. (¼Õ°¡¶ô...)




  R(Col) = M(Col) * T(Col)



  | r00 r04 r08 r12 |   | m00 m04 m08 m12 |    | t00 t04 t08 t12 |

  | r01 r05 r09 r13 | = | m01 m05 m09 m13 | ¡¿ | t01 t05 t09 t13 |

  | r02 r06 r10 r14 |   | m02 m06 m10 m14 |    | t02 t06 t10 t14 |

  | r03 r07 r11 r15 |   | m03 m07 m11 m15 |    | t03 t07 t11 t15 |



  r00 = m00*t00 + m04*t01 + m08*t02 + m12*t03

  r01 = m01*t00 + m05*t01 + m09*t02 + m13*t03

  r02 = m02*t00 + m06*t01 + m10*t02 + m14*t03

  r03 = m03*t00 + m07*t01 + m11*t02 + m15*t03


  ....(³ª¸ÓÁö´Â ½º½º·Î..) .... ¨ê




 ¿­±âÁØ Çà·Ä°ú Çà±âÁØ Çà·ÄÀÇ °ö¼ÀÀº ¨é°ú ¨ê¿¡¼­ º¸µí ÀüÇô ´Ù¸¥ °á°ú