์ A, B, C๋ก ์ผ๊ฐํ์ ํ์ฑํ๊ณ ์ D๊ฐ ์ฃผ์ด์ก์ ๋ ์๊ฐ ์ผ๊ฐํ ์์ ์๋์ง ํ๋ณํ๋ ๊ฒ์ ๋ํ ์ง๋ฌธ์ ๋๋ค.
๋ฒกํฐ AB, BC, CA๋ฅผ ๋ฒกํฐ v1, v2, v3๋ผ๊ณ ํ๊ณ ๋ฒกํฐ AD, BD, CD๋ฅผ ๋ฒกํฐ u1, u2, u3๋ผ๊ณ ํ์ ๋
u1 x v1 = w1
u2 x v2 = w2
u3 x v3 = w3
์ด๋ ๊ฒ ์ธ์ ํ ๊ฒฐ๊ณผ์ธ w1, w2, w3๊ฐ ํํ ํด์ผ์ง ์ D๊ฐ ์ผ๊ฐํ ์์ ์๋ ๊ฒ ์๋๊ฐ์?
w1 * w2 = |w1| * |w2|
w1 * w3 = |w1| * |w3|
w2 * w3 = |w2| * |w3|
์ฆ ์ด๋ ๊ฒ ๋ด์ ํ ย ๋ ์ฌ์ด๊ฐ์ด ๋ค 0๋๋ผ์ cos 0๋๋ฅผ ๊ณฑํด์ค์ผ ํ๋ ๊ฒ์ด ์๋๊ฐ์?ย
๊ทธ๋ฐ๋ฐ ์ ๊ฐ ๋ณธ ์ฑ ์์๋ ๋ด์ ์ ๊ฒฐ๊ณผ๊ฐ 0๋ณด๋ค ํฌ๊ธฐ๋ง ํ๋ฉด ๋๋ค๊ณ ํํํฉ๋๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉดย ์ธ์ ๋ฒกํฐ์ ์ฌ์ด๊ฐ์ด 90๋ ์์ชฝ์ด๊ธฐ๋ง ํ๋ฉด ๋๋ ๊ฒ ์๋๊ฐ์?
์ฆ ์ D๊ฐ ์ผ๊ฐํ ํ๋ฉด ์์ ์๋ ๊ฒ์ด ์๋๋ผ ์ ๋นํ ์ผ๊ฐํ ์์ชฝ์ ์์ด๋ ์๊ด ์์ด์ง๋ ๊ฒ์ด ์๋๊ฐ์?
// ๋ฒกํฐ ๊ณ์ฐ v0 = C - A v1 = B - A v2 = P - A // ๋ด์ ๊ณ์ฐ dot00 = dot(v0, v0) dot01 = dot(v0, v1) dot02 = dot(v0, v2) dot11 = dot(v1, v1) dot12 = dot(v1, v2) // ๋ฌด๊ฒ ์ค์ฌ ์ขํ ๊ณ์ฐ invDenom = 1 / (dot00 * dot11 - dot01 * dot01) u = (dot11 * dot02 - dot01 * dot12) * invDenom v = (dot00 * dot12 - dot01 * dot02) * invDenom // ์ ์ด ์ผ๊ฐํ์ ์๋์ง ํ์ธ return (u >= 0) && (v >= 0) && (u + v < 1)
๊ฐ๋จํ ์ํ์ธ๋ฐ ๊นํ๋ธ ๋ค์ ธ๋ ๋ง์. ๊ณต๋ถ์ฉ์ผ๋ก ํ๋๊ฑด ์ข์๋ฐ ๊ฐ๋ฐ์ฉ์ด๋ฉด ์ ๋ฐ ์ด๋ฏธ ์๋ ค์ง ์ํ์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ์.
๊ฐ๋ฐํ ๊ฑด ์๋๊ณ 3D ๊ณต๋ถํ๋ ์ค์ ๋ชจ๋ฅด๊ฒ ๋๊ฒ ์๊ฒจ์์....
ํด๋น ์ผ๊ฐํ์ ์์์ ์ขํํ๋ฉด์ ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณ์ x์ถ์ ์์ ๋ถํฐ ์์ํ ํ ์ ๋น๋ณ์ ์ง์ ์ ํจ์๊ฐ์ ๊ตฌํ ํ ๋ ์ง์ ์ ๊ตฌ๊ฐ์ ๊ต์งํฉ์ ์กฐ๊ฑด์์ ํฌํจ์์ผ์ ํ๋ณํ๋ฉด ๊ฐ๋จํ ๊ฑฐ๊ฐ์๋ฐ?
์ ๋น๋ณ์ ๋ํ ์ง์ ์๋ฐฉ์ ์ ๊ตฌํํ์ y๊ฐ ์ดํ์ ์กฐ๊ฑด์์ผ๋ก ์ ํ ํ ๋ ๋ฐฉ์ ์์ด ๊ต์ฐจํ๋ ์ฐ๋ฆฝ๋ฐฉ์ ์์ ์กฐ๊ฑด์์ผ๋ก ์ธ์ฐ๋ฉด ๋ฑ ์ผ๊ฐํ์ ๋ด๋ถ์ ์๋ ์ ์ ํ๋ณํ ์ ์๊ฒ๋๊ฒ ๋ค
์ ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํ๋ฉด v3๋ y์ถ ๊ฐ์ด ๋ ๊ฑฐ๊ณ v1, v2๋ ์ง์ ์ ๋ฐฉ์ ์์ผ๋ก ๊ตฌํํด์ ์ฐ๋ฆฝ๋ฐฉ์ ์ ๊ตฌํ๋ค์์ ๊ทธ ์ฐ๋ฆฝ๋ฐฉ์ ์์ ํด๊ฐ ๋ง์ผ๋ฉด ์ผ๊ฐํ ๋ด๋ถ์ ์๋ ํ ์ ์ผ๊ฑฐ๊ณ ํด๊ฐ ์๋๋ฉด ์ผ๊ฐํ์ ๋ด๋ถ์ ์๋ ์ ์ด ์๋๊ฑฐ์
์ ๊ฐ ๊ถ๊ธํ๊ฑด ๊ทธ๊ฒ ์๋์์ง๋ง ์ํผ ๊ฐ์ฌํฉ๋๋ค
์๊ฐํด๋ณด๋๊น ๋ค ์ ์ด ๋จผ์ ํ ํ๋ฉด ์์ ์๋์ง ํ์ ํ๊ณ ์ธ์ ๋ฒกํฐ๋ค์ ๋ด์ ์ํค๋ฉด ๋๋ ๊ฒ์ด์๋ค์
์ D๊ฐ ์ผ๊ฐํ์ด ์ด๋ฃจ๋ ํ๋ฉด ์์ ์์ง ์์ ๊ฒฝ์ฐ๋ ์์ ํ์ง ์์ ์กฐ๊ฑด์ธ๊ฑฐ ์๋์ผ?