ใ…Žใ…‡
์ €๋ฒˆ์— ์ฑ…์ƒ์ด๋ž‘ ์กฐ๋ช…์„ ์†๋ณธ๋‹ค๋Š”๊ฒŒ
์ฝœ๋ผ์ด๋” ๋งŒ์ง€๋‹ค ๋ณด๋‹ˆ ๋’ค๋กœ ๋ฐ€๋ฆผ
๋˜๊ฒŒ ์‰ฝ๊ฒŒ ๋๋‚ ๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ
์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์Šˆ๊ฐ€ ์ƒ๊ฒจ์„œ ์ด๊ฑธ๋กœ ์ผ์ง€๋ฅผ ์˜ฌ๋ฆฌ๊ฒŒ ๋ฌ์Œ

์ผ๋‹จ ๊ธฐ์กด ์ฝœ๋ผ์ด๋”์™€ ์ƒˆ๋กœ์šด ์ฝœ๋ผ์ด๋”๋ฅผ ๋ณด์ž


์™ผ์ชฝ์˜ ๋นจ๊ฐ„์ƒ‰์ด ์ƒˆ๋กœ๋งŒ๋“  ์‹ค๋ฆฐ๋” ์ฝœ๋ผ์ด๋”๋กœ ๋งŒ๋“  ์•Œ
์˜ค๋ฅธ์ชฝ์ด ๊ธฐ์กด์˜ ์บก์А ์ฝœ๋ผ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์•Œ
์œ ๋‹ˆํ‹ฐ 3d์—๋Š” ์‹ค๋ฆฐ๋” ์ฝœ๋ผ์ด๋”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—
์–ด์ฉ”์ˆ˜ ์—†์ด ์บก์А ์ฝœ๋ผ์ด๋”๋ฅผ ์“ฐ๊ณ  ์žˆ์—‡์ง€๋งŒ ์ด๋ฒˆ์— ๊ฑ ์ฝœ๋ผ์ด๋”๋ฅผ ๋จผ์ € ์†๋ด์•ผ๊ฒ ๋‹ค ์ƒ๊ฐํ–ˆ์–ด
์‹ค๋ฆฐ๋” ์ž์ฒด๋Š” ๋งŒ๋“ค๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋ธ”๋žœ๋”๋กœ ์ด๋ ‡๊ฒŒ

๋š๋”ฑ ๋งŒ๋“ค์–ด์„œ ์ ์šฉ์‹œ์ผœ์ฃผ๊ณ 
์ด๋ฒคํŠธ๋ž‘ ์Šคํฌ๋ฆฝํŠธ ์ ์šฉ์‹œ์ผœ์ฃผ๊ณ ..
ํ•ด์„œ ์ž˜ ๋‚ ๋ผ๊ฐ€๊ณ  ์›€์ง์ด๊ธธ๋ ˆ ใ…Žใ…Ž ์‰ฝ๊ตฐ ํ–ˆ๋Š”๋ฐ

์—„์ฒญ๋‚œ ๊ฐ•์ ์ด ๋‚จ์•„์žˆ์—ˆ์Œ
๋ถ€๋”ซํ˜”์„๋•Œ ์ด์Šˆ๊ฐ€ ์ƒ๊ธด๊ฑฐ์ง€

๋ฐ”๋กœ ๋”ฑ ๋ถ™์–ด์„œ ๋ถ€๋”ซํžˆ๋ฉด ์ด๊ฒŒ ์„œ๋กœ ๋ฐ•ํ˜€๋ฒ„๋ฆผ..
๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌํ–ˆ์ง€
๋‹น์—ฐํžˆ continuous๋Š” ์ผœ์ ธ์žˆ์—‡๊ณ  ๋ญ๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ์ฒœ์ฒœํžˆ ์‚ดํŽด๋ณด๋‹ˆ
reflectํ•จ์ˆ˜๊ฐ€ ์ž˜ ์ž‘๋™์„ ์•ˆํ•˜๋Š”๊ฑฐ์•ผ
์ด๊ฒŒ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์˜ค๊ธธ๋ ˆ ์•„! reflect ํ•จ์ˆ˜๋ฅผ ๊ณ ์น˜๋ฉด ๋˜๊ฒ ๊ตฌ๋‚˜! ํ•ด์„œ ๋ฐ”๋กœ ์ฐฉ์ˆ˜ํ–ˆ์ง€

์ด๊ฒŒ ๊ธฐ๋ณธ์ ์ธ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•ด๋‘” ์ถฉ๋Œ์‹œ ๋ฌผ๋ฆฌ๋ ฅ์ด์•ผ
ํ˜„์‹ค์„ธ๊ณ„์˜ ์•Œ๊นŒ๊ธฐ๋ž‘์€ ์ข€ ๋‹ค๋ฅด์ง€
์›๋ž˜ ๋ถ€๋”ซํžŒ ์•Œ์— ๋Œ€๋ถ€๋ถ„์˜ ์šด๋™๋ ฅ์„ ์ฃผ๊ณ  ๋‚ ๋ผ์˜จ ์•Œ์€ ๊ทธ ์ž๋ฆฌ์— ๋ฉˆ์ถฐ์„œ๋Š”๊ฒŒ ๋งž์ง€๋งŒ
์ฒ˜์Œ ๊ฒŒ์ž„์„ ๊ธฐํšํ• ๋•Œ ๊ณผ์—ฐ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์žฌ๋ฐ‹์„๊นŒ? ๋ผ๋Š”์ƒ๊ฐ์ด ๋“ค์—ˆ์–ด
์—ฌ๋Ÿฌ๊ฐœ์˜ ์•Œ์„ ํ•œ๋ฒˆ์— ๊ฐ๋„๋ฅผ ์ž˜ ์กฐ์ ˆํ•ด์„œ ๋•Œ๋ฆฌ๋ฉด ๋” ์žฌ๋ฏธ์žˆ๊ณ  ๊ฒŒ์ž„์˜ ๊นŠ์ด๊ฐ€ ๊นŠ์–ด์ง€์ง€ ์•Š์„๊นŒ?
๋งˆ์น˜ ๋‹น๊ตฌ์ฒ˜๋Ÿผ ๋ง์ด์ง€

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ๋„์‹๋„?๋ฅผ ๊ทธ๋ ค๋†“๊ณ  ๊ตฌํ˜„์„ ํ–ˆ์–ด
v1์ด ๋“ค์–ด์˜จ ๋ฐฉํ–ฅ

v2๊ฐ€ ๊ณต๊ฒฉ๋‹นํ•œ ์•Œ์˜ ๋ฐฉํ–ฅ
v3๊ฐ€ ํŠ•๊ฒจ์ ธ ๋‚˜๊ฐ€๋Š” ๋ฐฉํ–ฅ
v2๋Š” ๋‹จ์ˆœํžˆ reflect ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ฉด ๊ตฌํ• ์ˆ˜ ์žˆ์—‡์ง€
๊ทผ๋ฐ ์ด reflect ํ•จ์ˆ˜๊ฐ€ ๋จนํ†ต์ด๋‹ˆ.. ์ง์ ‘ ๊ตฌํ˜„์„ ํ•˜๋Š” ์ˆ˜๋ฐ–์— ์—†์—ˆ์–ด
๋‚ด์ ๊ณผ ์™ธ์ ์œผ๋กœ sin๊ฐ’๊ณผ cos๊ฐ’์„ ๊ตฌํ•˜๊ณ  ๊ทธ ๊ฐ๋„๋กœ v1์„ ํšŒ์ „์‹œํ‚ค๋Š” rotate ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์คฌ์ง€

public float Inner(Vector3 v1, Vector3 v2) { return (v1.x * v2.x + v1.z * v2.z) / (v1.magnitude * v2.magnitude); } public float Cross(Vector3 v1, Vector3 v2) { return (v1.z * v2.x - v1.x * v2.z) / (v1.magnitude * v2.magnitude); } public Vector3 rotate(Vector3 v, float cos, float sin) { Vector3 ret = new Vector3(); ret.x = v.x * cos - v.z * sin; ret.z = v.x * sin + v.z * cos; ret.y = 0; return ret; }

ํ™•์ธํ•ด๋ณด๋‹ˆ v2๊ฐ’๋„ v3๊ฐ’๋„ ์•„์ฃผ ์ž˜๋‚˜์™”์–ด
๊ทธ๋ž˜์„œ ์ด์ œ ํ•ด๊ฒฐ ๋๊ฒ ์ง€?
ํ–ˆ์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋‚˜์˜ ์˜ค์‚ฐ, ๋ฌธ์ œ๋Š” ๊ทธ๋Œ€๋กœ์˜€์–ด
reflect๋Š” ๊ณ ์ณ์กŒ์ง€๋งŒ ์—ฌ์ „ํžˆ ์•Œ์— ๋ฐ•ํ˜€๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ๋Š” ๊ทธ๋Œ€๋กœ์˜€์ง€..

๋ฌด์–ธ๊ฐ€ ๋ฉ”์‹œ ์ฝœ๋ผ์ด๋”๊ฐ€ ์ผ๋ฐ˜ ์œ ๋‹ˆํ‹ฐ 3d์—์„œ ์ง€์›์„ ํ•ด์ฃผ๋Š” ์ฝœ๋ผ์ด๋”์™€ ๋‹ฌ๋ผ์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋ผ๋Š”๊ฑด ๊นจ๋‹ฌ์•˜์ง€๋งŒ
๋„์ €ํžˆ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ๊ณ ์น  ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ์ด ์•ˆ๋‚˜๋Š”๊ฑฐ์ง€
๋ฐ”๊พผ๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ์บก์А ์ฝœ๋ผ์ด๋”๋ฅผ ์“ฐ๊ณ  y์ขŒํ‘œ ๊ณ ์ •ํ•˜๊ณ  ๋ฐ”๋‹ฅ์˜ ์ฝœ๋ผ์ด๋”๋ฅผ ์ œ๊ฑฐํ•œ์ฒด ํ…์Šค์ณ๋งŒ ์”Œ์šฐ๋Š” ๋ฐฉ๋ฒ•
ํ˜น์€ 2d๋กœ ์—ฌํƒœ๊ป ํ–ˆ๋˜ ๋ชจ๋“ ๊ฒƒ์„ ๋‹ค์‹œ ํฌํŒ…ํ•˜๊ธฐ..
ํ•˜์ง€๋งŒ ๋‚œ 3d๋ฅผ ํฌ๊ธฐํ•˜๊ธด ์‹ซ์—ˆ๊ณ  ์ข€๋งŒ๋” ์ฐพ์•„๋ณด๊ณ  ๋กค๋ฐฑ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ
๊ฒฐ๊ตญ ์ฐพ์•„๋ƒˆ์–ด
continuous dynamic์„ ์ป๋”๋‹ˆ ํ•ด๊ฒฐ์ด ๋ฐ”๋กœ ๋˜๋”๋ผ๊ณ 

์ฒ˜์Œ์— ๊ณต๋ถ€ํ• ๋•Œ ๋ฌผ์ฒด๊ฐ€ ๋น ๋ฅด๋ฉด ๊ด€ํ†ตํ• ์ˆ˜ ์žˆ๋‹ค ๊ทธ๋Ÿฌ๋‹ˆ ๊ทธ๋•Œ๋Š” continuous๋ฅผ ์“ฐ๋ฉด ํ•ด๊ฒฐ์ด๋œ๋‹ค
๋”ฑ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์•Œ๊ณ  ์žˆ์—‡๊ธฐ ๋•Œ๋ฌธ์ด์•ผ..
continuous dynamic์„ ์“ฐ๋Š”๋งŒํผ ๊ฒŒ์ž„์€ ๋ฌด๊ฑฐ์›Œ ์ง€๊ฒ ์ง€๋งŒ
๊ฒŒ์ž„ ์ž์ฒด๊ฐ€ย ๊ฐ€๋ณ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„ ๋ฌธ์ œ๋Š” ์—†์„๊ฑฐ๋ผ ์ƒ๊ฐํ•ด
๋