ํ•œ๋งˆ๋””๋กœ ๋งํ•˜๋ฉดย 

์ด๋ฏธ 3D ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š”๋ฐ ์ถ”๊ฐ€์ ์œผ๋กœย ๋ฒกํ„ฐ2๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ดย ๊ฐ™์€ ๋™์ž‘์„ ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€๋กœย ์˜ค๋ฒ„๋กœ๋”ฉ ํ•ด์•ผํ•ด์„œ ๊ทธ๋Ÿฐ๊ฑฐ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋งคย ์—…๋ฐ์ดํŠธ๋‚˜ ํ”ฝ์Šค ๋„์ค‘์— ๋ˆ„๋ฝ๋˜๋Š”๊ฒƒ๋„ ์ƒ๊ธธ๊ฑฐ๊ณ , ๊ทธ๋กœ ์ธํ•ด ๋ฒ„๊ทธ๋„ ์–‘์‚ฐ๋ ํ…๋ฐย 

๊ทธ๋Ÿฐ ๋ฆฌ์Šคํฌ๋ฅผ ๊ฐ์ˆ˜ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๊ทธ๋ƒฅ ๋ฒกํ„ฐ3์„ ์“ฐ๋Š”๊ฒƒ์ด๋ผ ๋ณด๋ฉด ๋œ๋‹ค.


๊ทธ๋ ‡๋‹ค๊ณ  ๋ฒกํ„ฐ2๋ฅผ ์“ธ ์ด์œ ๊ฐ€ ์—†๋Š”๊ฑด ์•„๋‹ˆ๋‹ค.ย 

๊ทธ๋ƒฅ ์™„์ „ํžˆ 3D๊ฐ€ย ๋ฐฐ์ œ๋œย 2D์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฉด ๋ฒกํ„ฐ3 ๋Œ€์‹  ๋ฒกํ„ฐ2๋กœ๋„ ์™ธ์  ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์ถฉ๋ถ„ํžˆ ํ• ์ˆ˜ ์žˆ๋‹ค.


๋จผ์ € 2D๋Š” 3DOF์ธ๋ฐ,ย ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์›€์งˆ์ผ๋•Œ ๊ณต๊ฐ„์ƒ์—์„œ ์œ„์น˜์— ๋Œ€ํ•ด 2๊ฐœ์˜ ์ž์œ ๋„, ํšŒ์ „์— ๋Œ€ํ•ด 1๊ฐœ์˜ ์ž์œ ๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ ํšŒ์ „๊ณผ ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์„ ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์™ธ์ ์ด๋‹ค.ย 

๊ทผ๋ฐ ์™ธ์ ์˜ ์ •์˜๋Œ€๋กœ๋ผ๋ฉด ๋ฒกํ„ฐ3 ์ด์ƒ์€ ๋ณด์žฅ์ด ๋˜์•ผ ํ•˜๋Š”๋ฐย ๋ฒกํ„ฐ2๋กœ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜? ์ด๋Ÿฐ ์˜๋ฌธ์ด ๋“ค์ˆ˜์žˆ๋‹ค.ย 


๊ทธ๋Ÿฐ๋ฐ, ๊ทธ๋ƒฅ 3DOFย ์ •์˜๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด 2D์—์„œ ์œ„์น˜์— ๋Œ€ํ•ด (X, Y) ํšŒ์ „์— ๋Œ€ํ•ด (Z)๋ผ๋Š” ์ž์œ ๋„๋ฅผ ๊ฐ€์ง„๊ฒƒ์ด๊ณ 

์ด๊ฑธ ๊ทธ๋ƒฅ ๋ฒกํ„ฐ 3๋กœ ํ™•์žฅํ•˜๋ฉด (X, Y, 0), (0, 0, Z)๋ผ๋Š”๊ฒƒ๋„ ๊ธˆ๋ฐฉ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ •์—ญํ•™ ๊ฐ™์€ ๊ณผ๋ชฉ์„ ์ˆ˜๊ฐ•ํ–ˆ๋‹ค๋ฉด ๊ฑฐ๊ธฐ์„œ ๋ฐฐ์šฐ๋Š” ๊ด€์„ฑ ๋ชจ๋ฉ˜ํŠธ ๊ณ„์‚ฐ๋•Œ ๋น„์Šทํ•œ ๋А๋‚Œ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๊ฑธ ์•Œ๊ฒƒ์ด๋‹ค.ย 

๊ทธ๋ž˜์„œ ๋”ฑ ์ € ๋ฒกํ„ฐ2(X, Y)์™€ ๋ฒกํ„ฐ1 (Z)๋งŒ ๊ฐ€์ง€๊ณ  ์—ฐ์‚ฐํ•˜๋ฉด 2D์—์„œ๋„ ์ถฉ๋ถ„ํžˆ ๊ด€๋ จ ์—ฐ์‚ฐ์„ ํ• ์ˆ˜ ์žˆ๋‹ค.


์ผ๋‹จ ์ด๊ฒŒ ๋ฒกํ„ฐ 3์˜ ์™ธ์  ๊ณ„์‚ฐ ์‹์ด๋‹ค.


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec81fa11d02831ce3cef1b9542c00ceb084720faa1823aadecd2725dc666ff505115e2a50b110daa286c059c731ed3b8dc88acba984adb4ca3ab81


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec81fa11d02831ce3cef1b9542c00ceb084720faa1823aadecd2725dc666ff5051158fcb0813094a97b994ebd39372f4982c375b615313b4c131


2D ๋ฒกํ„ฐ๋ฉด ์—ฌ๊ธฐ์„œ Z๊ฐ’์ด 0์ธ ๋ฒกํ„ฐ3,ย 

1D ๋ฒกํ„ฐ๋ฉด ์—ฌ๊ธฐ์„œ Z๊ฐ’๋งŒ ์žˆ๋Š” ๋ฒกํ„ฐ3๋กœ ๊ฐ€์ • ํ•˜๊ณ ย ๊ณ„์‚ฐํ•˜๋Š”๊ฒŒ ๊ทธ ๋ฐฉ๋ฒ•์ด๋‹ค.


ย  ย  Real CrossProduct(const Vector2& vec1, const Vector2& vec2)

ย  ย  {

ย  ย  ย  ย  return (vec1.x * vec2.y - vec1.y * vec2.x);

ย  ย  }


ย  ย  Vector2 CrossProduct(Real vec1, const Vector2& vec2)

ย  ย  {

ย  ย  ย  ย  return Vector2(-vec1 * vec2.y, vec1 * vec2.x);

ย  ย  }


ย  ย  Vector2 CrossProduct(const Vector2& vec1, Real vec2)

ย  ย  {

ย  ย  ย  ย  return Vector2(vec2 * vec1.y, -vec2 * vec1.x);

ย  ย  }


์ด๋ ‡๊ฒŒย ๋ฒกํ„ฐ 3์˜ย ์œ ํšจ ํ•ญ๋งŒ ๊ณ„์‚ฐํ•˜๋Š” ์‹์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


๊ทธ๋ƒฅ ์ € ๊ณ„์‚ฐ์‹์— a1, a2, a3์™€ b1, b2, b3์—ย 

(a1, a2, 0) X (b1, b2, 0)

(0, 0, a3) X (b1, b2, 0)

(a1, a2, 0) X (0, 0, b3)


์ด๋ ‡๊ฒŒ ๋„ฃ๊ณ  ๊ณ„์‚ฐํ•ด ๋ด๋ผย 

(0, 0, a1b2-a2b1)

(-a3b2, a3b1, 0)

(a2b3, -a1b3, 0)

๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋‚˜์˜ฌ๊ฑฐ๋‹ค ใ…‡ใ…‡.


๋ฒกํ„ฐ3๋กœ 2D ๊ณต๊ฐ„์˜ ๊ณ„์‚ฐ์„ ํ• ๋•Œย ์ € ํ˜•ํƒœ์˜ ๊ฐ’๋“ค ์™ธ์— ๋‹ค๋ฅธ๊ฐ’์ด ๋‚˜์˜ค๋ฉดย 

์ค‘๊ฐ„์— ์—ฐ์‚ฐย ์‹ค์ˆ˜๋‚˜ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š” ๋œป์ด๋‹ˆ๊นŒย ๋””๋ฒ„๊น…์„ ํ•ด์•ผํ•˜๋Š”๊ฒƒ์ด๋‹ค.


๊ฒฐ๋ก ์€ย ์•„์˜ˆ 2D๋ฅผ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋ฉด ๋ฒกํ„ฐย ์—ฐ์‚ฐ์„ ์ด๋ ‡๊ฒŒ ํ•ด๋„ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ

3D ์‹œ๋ฎฌ๋ ˆ์ด์…˜์œผ๋กœ ์ด๋ฏธ ๊ฐœ๋ฐœ๋œ๊ฒƒ์— 2D๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š”๊ฑฐ๋ฉด ๊ตณ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋” ์งค ์ด์œ ๊ฐ€ ์—†์–ด์„œ ๊ทธ๋Ÿฐ๊ฑฐ๋ผ ์ดํ•ดํ•˜๋ฉด ํŽธํ•˜๋‹ค.