[Philosophers] 변수 및 허용 함수 정리
·
42Seoul/Philosophers
변수 number_of_philosophers : 철학자 수(+ 포크의 수) time_to_die : 지난 번 식사로부터 식사를 마칠 때까지 남은 시간. time_to_eat : 밥 먹는 데 걸리는 시간. 두 개의 포크를 사용해야 한다. time_to_sleep : 잠자는 데 걸리는 시간. number_of_times_each_philospher_must_eat : 옵션이며, 식사 횟수가 이 변수의 값과 같아지면 프로그램 종료. 허용 함수 usleep 마이크로초 단위로 측정한 간격 동안 쓰레드 실행을 일시 중단한다. #include #include intmain(int argc, char *argv[]) { printf("1초마다 출력 합니다.\n"); for (int i = 0; i < 10; i++)..
[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] 레이캐스팅(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..
[Cub3D] DDA 알고리즘 vs Bresenham 알고리즘
·
42Seoul/Cub3D
DDA (Digital Differential Analyzer) 알고리즘 DDA는 컴퓨터 그래픽에서 직선, 삼각형 또는 다각형을 형성하기 위해 직선을 그리는 데 사용된다. DDA는 한 좌표의 일정한 간격으로 라인을 따라 샘플을 정수로 분석하고 다른 좌표에 대해서는 라인에 가장 가까운 정수를 반올림한다. 따라서 선이 진행됨에 따라 첫 번째 정수 좌표를 스캔하고 두 번째 정수를 가장 가까운 정수로 반올림한다. 따라서 x 좌표에 DDA를 사용하여 그린 선은 x0 ~ x1이지만 y 좌표의 경우 y = ax + b가되고 함수를 그리려면 Fn (x, y 반올림)이된다. Bresenham 알고리즘 Bresenham Algorithm은 1962 년 J.E. Bresenham에 의해 개발되었으며 DDA보다 훨씬 정확하고..
[42Seoul] La Piscine 과정을 마치며...
·
Doodle Doodle
지난주 금요일(9/25) 42Seoul La Piscine 과정 최종 발표가 났다. 분명 한 달동안의 과정인데 코로나때문에 최종 시험이 계속 연기되면서 과정 시작부터 최종 발표까지 8주라는 시간이 걸렸다. La Piscine은 프랑스어로 수영장을 의미한다. 내 생각엔 그 수영장에 던져놓고 알아서 살아남으라는 뜻이 아닐까 싶다. 첫 주는 정말 맨붕이었다. 정말 말그대로 넓디 넓은 수영장에 홀로 떨어진 기분이었다. 허우적 허우적... 주로 리눅스 쉘 명령어와 C언어를 배운다. 더 이상의 자세한 설명은 과정에 대한 스포이므로 하지않겠다. 평소 wsl쓰면서 쉘 명령어가 얼마나 어렵겠어? 했는데 난관의 연속이었다... 겨우겨우 쉘을 넘기고 C언어로 넘어갔는데 이 것도 얕봤다가 혼쭐이 났다. 정말로 같이 교육받는 ..
WONILLISM
'42' 태그의 글 목록