[Libasm] 어셈블리어, NASM?
·
42Seoul/Libasm
어셈블리어란? 어셈블리어(assembly language)는 이해하기 어려운 기계어를 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어이다. 어셈블리어로 작성한 원시 프로그램은 어셈블러를 통해 목적프로그램(기계어)로 어셈블 하는 과정을 거쳐야 한다. 프로그램에 기호화된 명령 및 주소를 사용한다. 어셈블리어의 기본 동작은 동일하지만 작성 CPU마다 사용되는 어셈블리어가 다를 수 있다. 어셈블리어에서 사용되는 명령은 의사명령과 실행명령으로 구분할 수 있다. 컴파일 vs 어셈블 Compile(컴파일) : 고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일이라고 한다. Assemble(어셈블) : 어셈블리어로 작성한 원시 프로그램을 어셈블러가 번역하는 작업을 어..
[Cub3D] bitmap (비트맵) 구조
·
42Seoul/Cub3D
cub3D mandatory 파트 중 스크린샷을 저장하기가 있다. //In case the Deepthought has eyes one day to evaluate your project, your program //must save the first rendered image in bmp format when its second argument is //"––save". 실행파일의 두번째 인자가 --save인 경우 스크린샷을 bitmap으로 저장해야한다. Bitmap이란? 비트맵은 컴퓨터 분야에서 디지털 이미지를 저장하는 데 쓰이는 이미지 파일 포멧 또는 메모리 저장 방식의 한 형태이다. 이미지 저장방식에는 래스터 그래픽스(점방식)과 벡터 그래픽스(벡터방식)이 있는데 비트맵은 래스터 그래픽스이다. 비트..
[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는 피타고라스 정리로 구할 수 있다. 모든 벡터는 기준이 되는 벡터로 표현이 가능..
[Cub3D] mlx 함수 (1)
·
42Seoul/Cub3D
1. 디스플레이와 프로그램의 연결 mlx는 프로그램과 디스플레이 사이의 연결을 초기화 하기 위해서 mlx_init() 함수를 호출하여, 연결에 성공하면 void * 타입의 포인터를 연결 식별자로 반환한다. 2. 윈도우 생성 void*mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title); size_x, size_y로 새로 띄울 창의 너비와 높이를 설정할 수 있다. title로 창의 이름을 설정할 수 있다. 성공적으로 새로운 창을 생성했다면 void * 타입의 포인터를 연결 식별자로 반환한다. 3. 이미지 생성 void *mlx_new_image(void *mlx_ptr, int width, int height); width, height로 ..
[Cub3D] 레이캐스팅(Ray casting)이란?
·
42Seoul/Cub3D
github.com/365kim/raycasting_tutorial/blob/master/2_basics.md 365kim/raycasting_tutorial (한글ver) 레이캐스팅 튜토리얼 번역. Contribute to 365kim/raycasting_tutorial development by creating an account on GitHub. github.com lodev.org/cgtutor/raycasting.html Raycasting #define mapWidth 24 #define mapHeight 24 #define screenWidth 640 #define screenHeight 480 int worldMap[mapWidth][mapHeight]= { {1,1,1,1,1,1,1,1..
WONILLISM
'42Seoul' 카테고리의 글 목록 (2 Page)