๋ชฉ๋ก์ ์ฒด ๊ธ (35)
๐ก

์๋์์ ๋ชจ๋ ๋ฌผ์ฒด๋ฅผ ๋ค ๊ทธ๋ฆฌ๊ธฐ์ ๋น์ฉ์ด ๋๋ฌด ๋ง์ด ๋ ๋ค -> Viewing frustum ์์ญ ๋ด๋ถ์ ๋ฌผ์ฒด๋ค๋ง rendering ํ์ ->DrawCall ์ ์ค์ด๋ ๊ฒ์ด๋๊น GPU ์ต์ ํ chunk์ ๊ฐ ๊ผญ์ง์ ์ ๋ํด ์ ๋์ฒด ๋ด๋ถ์ ์๋์ง ๊ฒ์ฌ -> ํ๋๋ผ๋ ๋ด๋ถ์ ์์ผ๋ฉด render 1. Projection space ๋ด์ ์ ๋์ฒด ์ขํ ์ค์ (x: -1 ~ 1, y: -1 ~ 1, z: 0 ~ 1) 2. ํด๋น ์ขํ๊ณ๋ฅผ world ์ขํ๊ณ๋ก ๋ณํ 3. ๊ณ์ฐ๋ ์ขํ๋ก 6๊ฐ์ plane ๋ง๋ค๊ธฐ(๋ชจ๋ ๋ด๋ถ๋ฅผ ๋ฐ๋ผ๋ณด๋) -> XMPlaneFromPoints() XMPlaneFromPoints ๋ก ๋ง๋ค์ด์ง ํ๋ฉด์ a, b, c, d ์ ๊ฐ์ ๊ฐ์ง vector ์ธ๋ฐ ์ด ๊ฐ์ $$ ax + by + cz + d = ..
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.

๊ณผ์ ์ค๋ช - ์ฃผ์ด์ง fdfํ์ผ ํ์ฑํ๊ณ ์ ๋ ฅ๋ฐ์ isometric projection ์ ์ฌ์ฉํด window์ ํํํ๊ธฐ ์ฌ์ ์ง์ - MiniLibx minilibx๋ 42์์ ํ์๋ค์ ์ํด ์ ๊ณต๋๋ ๊ฐ๋จํ ์๋์ฐ ์ธํฐํ์ด์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ์ ์ ๋ฆฌํด์ฃผ์ ๋ถ๋ค์ด ๊ณ์์ ๋ฐ๋ผํด๋ณด๋ฉฐ ๊ฐ์ ์ตํ๋ณด์ https://yeosong1.github.io/miniRT%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC miniRT, cub3d [์์ํ๊ธฐ ์ ์] MiniLibX ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๊ธฐ (man mlx) ๐ฅ 42 ํ์ต ๋ ธํธ by yeosong yeosong1.github.io https://malbongcode.tistory.com/149 cub3d - mlx์ฌ์ฉ๋ฒ ์์ฃผ๋ก ์ ๋ฆฌํ๊ธฐ (4..

ํ(Queue) : FIFO(First-In-First-Out) = ์ ์ ์ ์ถ -๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ ์๋ฃ๊ตฌ์กฐ But ์๋ฃ์ ์ถ๊ฐ๋ ๋งจ ๋ค(Rear)์์, ์ ๊ฑฐ๋ ๋งจ ์(Front)์์ ํ์ ์ฐ์ฐ ์ธํ(enqueue): ํ์ ๋งจ ๋ค์ ์๋ก์ด ์๋ฃ๋ฅผ ์ถ๊ฐ ๋ํ(dequeue): ํ์ ๋งจ ์์์ ์๋ ์๋ฃ๋ฅผ ์ ๊ฑฐํ ๋ค ๋ฐํ ํผํฌ(peek): ํ์ ๋งจ ์์ ์๋ ์๋ฃ๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ๋ฐํ ๋ฐฐ์ด์ ์ด์ฉํ ์ ํ ํ #include #include #include typedef struct ArrayQueueNodeType// ๋ ธ๋ ๊ตฌํ, ๋ ธ๋๋ก ์๋ฃ๋ฅผ ๊ฐ์ธ๋ ์ด์ ๋ ๋์์ ์ฌ๋ฌ๊ฐ์ ์๋ฃ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด { chardata; } ArrayQueueNode; typedef struct ArrayQueueType {..

์ด์ ํฌ์คํธ์์ ์ฌ์ฉํ linkedStack ์ ์ด์ฉํ ํค๋ํ์ผ #ifndef _LINKEDSTACK_ #define _LINKEDSTACK_ typedef struct LinkedStackNodetype { char data; struct LinkedStackNodetype *pLink;//๋งํฌ }LinkedStackNode; typedef struct LinkedStacktype { int currentCount; LinkedStackNode *pTop;// ํ ๋ ธ๋์ ํฌ์ธํฐ }LinkedStack; LinkedStack*createLinkedStack(void); intpushLS(LinkedStack *pStack, char data); intisLinkedStackEmpty(LinkedStack..
์คํ(Stack) : LIFO (Last-In-First-Out) = ํ์ ์ ์ถ - ๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ ์๋ฃ๊ตฌ์กฐ but ๋ฆฌ์คํธ์ ๋ค๋ฅด๊ฒ ์๋ฃ์ ์ถ๊ฐ, ์ ๊ฑฐ๊ฐ ์คํ์ ๋งจ์(top)์์๋ง ์ด๋ฃจ์ด์ง ์คํ์ ์ฐ์ฐ ํธ์(push) : ์คํ์ ๋งจ ์์ ์๋ก์ด ์๋ฃ๋ฅผ ์ถ๊ฐ, ์คํ์ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํด pushํ๋ฉด ์ค๋ฒํ๋ก์ฐ ํ(pop) : ์คํ์ ๋งจ ์์ ์๋ฃ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ, ๋น ์คํ์ popํ๋ฉด ์ธ๋ํ๋ก์ฐ ํผํฌ(peek) : ์คํ์ ๋งจ ์์ ์๋ฃ๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ๋ฐํ ๋ฐฐ์ด์ ์ด์ฉํ ์คํ #include #include #include typedef struct ArrayStackNodeType {// ๋ ธ๋ char data; } ArrayStackNode; typedef struct ArrayStackType {/..
๊ณตํต์ ์ฐจ์ด์ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋์ ์ฐ๊ฒฐ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์๋ฐฉํฅ ๋งํฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ํน์ ๋ ธ๋ ์ด์ ๋ ธ๋์ ๋ํ ์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋์ ์ฐ๊ฒฐ, ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋จ๋ฐฉํฅ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๋ง์ง๋ง ๋ ธ๋๊ฐ ํค๋๋ ธ๋์ ์ฐ๊ฒฐ, ์๋ฐฉํฅ - ๋ ธ๋์ ์ด์ ๋ ธ๋์ ๋ค์ ๋ ธ๋ == ๋ ธ๋์ ๋ค์ ๋ ธ๋์ ์ด์ ๋ ธ๋ == ๋ ธ๋ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ #include #include #include typedef struct CircularListNodeType { int data; struct CircularListNodeType *pLink; } CircularListNode;..
๊ตฌ๋ถ ๊ตฌํ ๋ฐฉ์ ์์ฐจ์ ์ ์ฅ์ ๊ตฌํํ ๋ฐฉ๋ฒ ์๋ฃ ์ ๊ทผ ์๋ ๊ตฌํ ๋ณต์ก๋ ๋ฐฐ์ด ๋ฆฌ์คํธ ๋ฐฐ์ด ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์์ฐจ์ ๋น ๋ฆ O(1) ๋ฎ์ ์ต๋ ์ ์ฅ ๊ฐ์ ํ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํฌ์ธํฐ ๋ ผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์์ฐจ์ ๋๋ฆผ O(n) ๋์ ๋ฐฐ์ด๋ฆฌ์คํธ๋ ํน์ ์ธ๋ฑ์ค์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์๋ฃ์ ๊ทผ ์๋๊ฐ O(1)์ด๊ณ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ํค๋๋ ธ๋๋ถํฐ ํฌ์ธํฐ๋ก ๋ ธ๋๋ฅผ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ n๋ฒ์งธ ์๋ฃ์ ์ ๊ทผํ๋ ค๋ฉด O(n) -- ๋ค๋ง ๋ฐฐ์ด๋ฆฌ์คํธ๋ ๋ ธ๋๋ฅผ ์ถ๊ฐ, ์ญ์ ํ๋ ค๋ฉด ์ถ๊ฐ, ์ญ์ ํ๋ ค๋ ๋ ธ๋ ์ค๋ฅธ์ชฝ์ ์๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ด๋์์ผ์ผํด์ ์๋ฃ์ ์ถ๊ฐ ์ญ์ ๊ฐ ๋ง์ผ๋ฉด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๋ ๊ฒ์ ์ถ์ฒ -์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ๊ตฌ์กฐ : ์๋ฃ + ์ฐ๊ฒฐ ์ ๋ณด(๋งํฌ) -์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ = NULL #include #includ..