23
단위 벡터(Unit Vector)
크기(길이)가 1인 벡터
- 목적: 벡터의 방향성만을 명시하거나 기준을 설정할 때 사용한다
- 표기: 일반 벡터 위에 삿갓모양의 기호(hat, )를 씌워 표시한다.
정규화
벡터 가 있을 때, 이와 같은 방향의 단위 벡터 는 다음과 같이 구한다.
예시: 벡터 의 크기는 이므로, 단위 벡터는 이다.
법선 벡터(Normal Vector)
공간 내 곡면/평면 또는 곡선 위 한 점에서 그 대상에 수직(orthogonal)인 방향을 가리키는 벡터
3차원 공간 평면 에서 법선 벡터는 로 표현되며 이는 평면의 기울기를 정의하는 핵심 요소이다.
벡터 내적이 게임에서 사용되는 지점
그림자 렌더링
3차원 물체 렌더링

카메라와 각 폴리곤(평면)의 법선벡터 간 내적 결과의 부호로 카메라를 등지고 있는지 확인할 수 있다. 여기서 중요한 것은 각도가 몇 도인지까지는 정확히 알아낼 필요가 없다는 것
반사 벡터

Vector3 reflect = velocity + 2 * normal * Vector3.Dot(-velocity, normal);- 벽을 향해 p의 속도로 움직이는 공의 속도 벡터 p를 반전시킨 뒤 벽의 법선 벡터 n과 내적한다
- 내적 결과값에 법선 벡터 n을 두배 곱해준다
- 속도 벡터 p를 더하면 반사 벡터가 구해진다
C++ typedef/using
typedef란 문자 그대로 타입의 또다른 별칭을 지을 수 있게 해주는 키워드이다.
#ifdef INT_2_BYTEStypedef char int8_t;typedef int int16_t;typedef long int32_t;#elsetypedef char int8_t;typedef short int16_t;typedef int int32_t;#endif위와 같이 플랫폼 설정에 따라 자료형의 크기를 같은 별칭의 타입으로 유연하게 사용할 수 있게 된다
// 예시 1int GradeTest();typedef int testScore_t;testScore_t GradeTest();// 예시 2typedef std::vector<std::pair<std::string, int>> pairlist_t;pairlist_t pairlist;bool hasDuplicates(pairlist_t pairlist) {}출처: [https://boycoding.tistory.com/182](https://boycoding.tistory.com/182) [소년코딩:티스토리]위와 같이 가독성이 떨어지는 긴 타입 선언도 별칭으로 가릴 순 있다.
하지만 개인적으로 이런 장난질은 선호하지 않는다.
- 어차피 시간이 지나면
testScore_t,pairlist_t가 뭔지 까먹어서 다시 들여다보게 돼있다 - 애초에 길게 적어야하는 상황 자체가 잘못됐을 확률이 높다. 또한 등급 테스트 함수가 점수를 반환하는 것 자체도 어색하다(등급 점수를 반환하고 싶으면
MeasureGrade()따위의 작명이 더 나을 것).