목록42 (71)
치춘짱베리굿나이스
Inheritance 상속 함수 선언 뒤에 const 의미 C++ 함수 뒤에 const - dydtjr1128's Blog void foo(void) const; 이 함수 (foo) 내에서는 어떠한 변수도 바꿀 수 없다는 뜻 클래스의 멤버 변수도 바꿀 수 없고 다른 변수도 수정할 수 없으며 const 함수를 제외한 어떠한 함수도 호출할 수 없다 void foo() vs void foo(void) Is it better to use C void arguments "void foo(void)" or not "void foo()"? void foo(void) 이 함수에는 필요한 인자가 없다는 뜻이다 void foo() C++에서는 void foo(void) 와 같은 의미를 갖지만, C에서는 ‘임의의 인자를 몇..
Ad-hoc polymorphism, operator overloading and Orthodox Canonical class form 임시 다형성, 연산자 오버로딩과 캐노니컬 클래스 임시다형성? 자바스크립트에서의 객체지향 (1) 객체지향 기본 자바스크립트에서의 객체지향 (1) 객체지향 기본 객체지향 올 것이 왔다 자바스크립트 프로그래밍을 하면서 그 편의성 때문에 클래스를 종종 이용하는데, 물론 잘 알고 쓰는 것은 아니다 심지어 자바스크립트의 클래스는 정석적인 클래스도.. blog.chichoon.com 예전에 정리했던 객체지향 글 복붙 (자스 기준이긴 하지만…) 여기서 임시 다형성이란 ‘같은 이름을 가진 함수가 타입에 따라 다르게 행동할 수 있는 성질' 이라고 정리했었다 오버로딩이 그 예이자 임시다형성..
CPP01 Memory allocation, pointers to members, references, switch statement 메모리 할당, 멤버 포인터, 참조, switch 구문 string.npos 의미 C++ - std::string::npos (npos의 의미) size_type 값으로, string.find() 메서드와 함께 사용된다 문자열을 찾지 못했을 경우 npos가 반환된다 no position 이라는 뜻이 아닐까 참조와 포인터 차이 참조 원본 변수와 같은 값을 가리키며, 원본 변수에 변동이 있을 경우 참조의 값도 변한다 따로 메모리 공간을 할당하여 저장하지 않으므로, 원본 변수와 같은 주소를 갖는다 선언과 동시에 초기화하지 않으면 오류가 난다 한번 초기화한 값은 재할당할 수 없다 ..
CPP Module 시리즈 오마이갓 너무많다 중간에 프리온보딩 참여한다고 42과제 완전 소홀하게 해가지구… CPP 00 터지고 나서 손도 못댔다 7월초까지는 화이팅 해보기.. 주의사항 C++98 버전만 사용가능 (타 버전 메서드나 연산자 등 사용할 경우 0점) C 함수들 (malloc, free, printf 등) 사용 불가 c++로 컴파일 (g++, clang 등 금지) 클래스명은 파스칼케이스, 함수명은 카멜케이스 놂 안지켜도됨 (만쉐이~) CPP Module 08 제외, STL 사용금지 (Vector, list, map 등 일절 금지) CPP Module 02부터 클래스는 Orthodox Canonical Form으로 작성 헤더 가드 추가 안 하면 0점 CPP Module 목록 하나씩 추가예정,, C..
signal이란? 프로그램 구동 중에 Interrupt가 발생했을 때, 프로세스에 어떠한 Interrupt가 발생했음을 알리는 간단한 메시지를 전송하는 것 signal을 받은 프로세스는 해당 시그널이 무엇인지에 따라 지정된 기본 동작을 수행하거나, 사용자가 정의한 함수에 의해 무시하거나, 또는 사용자 정의 함수를 통해 특별한 처리를 해 줄 수 있다 예시 프로세스 동작 중에 ctrl + c를 누르면 프로세스가 종료 (kill) 되는 현상도 Signal이 발생하였다고 볼 수 있다 Signal 함수 종류 헤더에 기본적인 동작들과 signal 관련 함수들이 정의되어 있음 기본적으로 정의된 동작은 주로 프로세스를 종료하거나, 코어 덤프를 생성 Kill int kill(pid_t pid, int sig); Kill..
텍스쳐 입히기 직전에는 벽에 단색을 입혔지만 이번엔 텍스쳐를 입혀보자 벽이 왜곡되어 보여야 하므로 어느 높이에 어떤 텍스쳐 색을 넣어야 할 지 계산해야 한다 동서남북 텍스쳐 저장하기 .xpm 또는 .png 파일을 불러와서 포인터 배열 또는 구조체에 저장해둔다 perpWallDist 구하기 Raycasting 구현 - 화면에 벽 그리기 의 방법으로 perpWallDist를 구한다 벽이 바라보는 위치 구하기 벽이 바라보는 방향이 어느 쪽인지 (동서남북) 에 따라 다른 텍스쳐를 적용해야 하므로, 부딪힌 광선의 방향을 가진rayDirX와 rayDirY, 벽이 위치한 축 (x 또는 y)을 담은 side 변수를 사용하여 벽의 방향을 구한다 벽의 x축 거리의 비율 구하기 광선이 벽의 어느 지점에 닿았는지 구해야 텍스..
키 이벤트 시야 회전 (←, →) 플레이어의 시야를 좌우로 회전하기 위해선 시선 (dir벡터 : dirX, dirY) 과 카메라평면 (plane벡터: planeX, planeY) 이 같이 회전되어야 한다 시선 (dir) 회전하기 dirX = dirX * cos(theta) - dirY * sin(theta); dirY = dirX * sin(theta) + dirY * cos(theta);카메라평면 (plane) 회전하기 planeX = planeX * cos(theta) - planeY * sin(theta); planeY = planeX * sin(theta) + planeY * cos(theta);캐릭터 이동 (w, a, s, d) 카메라평면 (plane) 과 시선벡터 (dir) 는 방향벡터이며, ..
화면에 벽 그리기 이번 예제에서는 텍스쳐 대신 색상을 사용하여 벽을 그린다 벽의 높이 계산하기 카메라 평면부터 벽까지의 거리를 구했으니 이제 벽의 높이를 계산하고, 실제로 화면에 벽을 그릴 단계에 왔다 가중치 없는 기본값으론, 카메라 평면과 벽 사이 거리가 정확히 1일 때 벽의 높이가 height와 일치한다고 가정한다 화면상 표시되는 벽의 높이는 카메라 평면과 벽 사이의 거리 (perpWallDist) 에 비례한다 이때 취향에 따라 height를 보정하여 사용하여도 상관 없다 height의 가중치가 클 수록 벽의 높이가 높아진다 벽을 그리기 위한 벽의 시작점, 끝점 계산 startPoint = (height / 2) - (lineHeight / 2); if (startPoint < 0) startPoin..