● 벡터
- 길이와 가르키는 방향( 벡터는 양도 양이지만 방향) vector(힘의 세기, 방향)
- 위치는 벡터의 속성이 아님(위치를 가끔 담을수도 있는데 그건 바로 Point)
- point(위치를 표시) : 좌표 시스템 내의 한 위치를 나타냄
- u벡터와 v 벡터는 동일하다.
● 스칼라 : 갯수
● D3DVECTOR3
- 3공간 내의 벡터를 표현
- 벡터를 담으면 벡터 point를 담으면 포인트, 단지 자료형일 뿐
- sizeof(D3DVECTOR3) == 12 이다
※ 보통 D3DVECTOR2,3,4가 있고 지금 당장 3을 쓰지만 나중에는 4를 많이 쓰게 될 것이다. 또 3을 쓰더라도 내부적인 연산에 있어서는 4를 이용한다.
● 좌표계
- 왼손좌표계
눈이기준 모니터 쪽으로 들어가는것이 + z
오른쪽이 +x
위쪽이 +y
openGL은 오른손 좌표계
● 표준 기저 벡터 : x,y,z축을 따라 진행하는 벡터
● 단위벡터 : 크기로 1을 가지는 벡터
● 0벡터 : 벡터의 모든 성분이 0인 것
● 벡터상등 : 두 벡터가 동일한 차원, 성분(길이,방향)이 같은 벡터를 말함
● EPSILON : 부동소수점의 부정확성을 위한 허용한계를 제공하는 것으로 두벡터를 비교해서 상등에 가까운지를 판단하게 하는 일종의 상수값
(실수의 경우 정밀도가 100%가 아니기 때문에 이런식으로 상동에 가까운지를 비교판단)
● 팁
1. 3D에서는 float를 쓰는게 좋음 double을 쓰면 느려짐 좋은게 아님 그기유는 float와 double의 연산정밀도는 차이가 4배정도 이기 때문에 double을 쓰면 그만큼 더 계산해야해서 느려짐 ㅇㅇ
● 벡터의 크기 계산
- 벡터의 길이
FLOAT D3DXVec3Length(CONSTD3DXVECTOR3 * pv)
// 크기를 리턴하는 함수
리턴 값 : 스칼라값(크기)
인수 1 : 길이를 계산하려는 벡터
● 벡터의 정규화
- 벡터의 정규화
- 어떤 벡터를 u로 나눠주는것
- 벡터의 크기를 1로 만들어 단위벡터가 되도록 하는것
- D3DXVECTOR3 * D3DXVec3Normalize(D3DXVECTOR3 * pOut, CONST D3DXVECTOR3* pv)
인수 1: 결과
인수 2: 정규화하려는 벡터