[Cub3D] DDA알고리즘을 이용한 Ray Casting
·
42Seoul/Cub3D
www.youtube.com/watch?v=eOCQfxRQ2pY&t=205s lodev.org/cgtutor/raycasting.html Raycasting #define screenWidth 640 #define screenHeight 480 #define texWidth 64 #define texHeight 64 #define mapWidth 24 #define mapHeight 24 int worldMap[mapWidth][mapHeight]= { {4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7}, {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0, lodev.org 위 자료들을 참고하여 이제 실전! 코드로 옮겨보자. 우선 계속 혼동이 왔던이유..
[Cub3D] 벡터의 정규화
·
42Seoul/Cub3D
정규화 (Normalize)란 기준이 되는 개념을 만들겠다라는 뜻이다. 앞서 포스팅하였듯이 기하학에서는 크기와 방향이 같으면 모두 같은 벡터로 취급한다. 하지만 대수학에서는 좌표에 초점을 맞추기 때문에 좌표가 다르면 다른 벡터이다. 기하학과 대수학 양쪽에 모두 적용할 수 있는 것이 바로 단위 벡터이다. 즉, 벡터의 정규화는 일반 벡터를 단위벡터로 만들어주는 것을 말한다. 따라서, 일반 벡터를 그 벡터의 크기로 나누어주어 단위 벡터를 구하는 것이다. 이 방법을 이용하여 앞에서 덧셈의 뺄셈에 대한 의문이 풀리지 않을까? 방향벡터를 이용하여 시점만 변경해주면 될 것 같다.
[Cub3D] vector의 덧셈과 뺄셈
·
42Seoul/Cub3D
벡터의 덧셈은 각 성분을 더해주는 것이다. 말보다는 아래 그림으로 이해는게 빠를 것이다. 위 그림을 보면 벡터AB = 벡터OA, 벡터BC = 벡터OB라고 했을 때 같은 결과임을 알 수 있는데, 기하학적인 의미에서 벡터는 시점에 관계없이 벡터는 방향과 크기가 같으면 같은 벡터라고 말할수있다. 하지만, 같은 벡터라고 해서 좌표까지 같은 것은 아니다. 왼쪽의 방법이 삼각형법, 증가된 좌표만큼 이동한다는 것이다. 오른쪽의 방법이 평행사변형법, 시점을 기준으로 두 벡터와 평행한 선을 그려 얻어내는 방법이다. 벡터의 뺄셈은 마이너스 부호가 붙은 벡터의 반대 방향으로 연산을 해주면 된다. 그림에는 나오지 않지만, 왼쪽그림에서 OA - OB에서 OB벡터의 반대방향이 OC라고할 때 OA + OC의 결과의 벡터와 BA벡터..
[Cub3D] Vector 란?
·
42Seoul/Cub3D
수학, 과학에서 벡터는 물리학과 공학에서 방향과 크기, 선형대수학에서 벡터 공간의 원소, 기하학에서 크기와 방향을 갖고 있는 개념을 수학적으로 표현한 것 컴퓨터에서 벡터는 화상의 표현 요소로서의 방향을 지닌 선, 동적 배열 자료구조, 기계 학습 분야에서 입력 데이터를 표시하는 방법 cub3d에서 player의 이동과 시야를 위해 기하학과, 컴퓨터 화상의 표현요소로 사용하는 벡터의 개념을 이용할 것이다. 기하학에서 벡터는 시점(tail)부터 종점(head)까지 그은 반직선(방향을 갖는 직선)을 의미한다. 좌표계로 가져오면 아래와 같은 그림이 된다. 시점이 (0,0), 종점이 (a1, a2), 크기 a인 벡터이다. 이때 크기 a는 피타고라스 정리로 구할 수 있다. 모든 벡터는 기준이 되는 벡터로 표현이 가능..
WONILLISM
'Cub3d' 태그의 글 목록