12. point, vector, ray, box, matrix, transform
Point : 점. 위치값. 3d 좌표일 경우 (x,y,z,1)로 w 컴포넌트를 1로 두어 벡터와 구분한다. (동차좌표계)
계산 편의를 위해 연산자 오버로딩 제공
Vector : 벡터, 방향와 크기값. 3d 좌표일 경우 (x,y,z,0)로 w 컴포넌트를 0으로 두어 점과 구분한다. (동차좌표계)
계산 편의를 위해 연산자 오버로딩 제공
Length, Swap, Normalize, Scale, Dot, Angle, IsThereFront(가시성 판단), Projection, Cross 제공
Ray : 원점과 방향이 지정된 반 무한의 선.
광선은 스칼라값 t의 함수로 광선이 지나가는 점의 집합.
물체와의 교차를 체크, 모션블러를 위한 시각값, 반사 횟수 제한을 위한 depth값이 필요하다.
Box : 물체를 둘러싸는 경계 입체(Bounding Box), aabb방식
공간 중첩체크, 특정 지점 포함 체크, 면적, 부피, 축 길이, 점 보간, 위치 offset, 광선 교차 같은
함수를 제공한다.
Matrix : 기본적으로 4x4 형태를 가진다. 행우선으로 저장한다.
전치, 역행렬, 행렬끼리 연산 관련 제공
Transform : Point, Vector, Normal을 동차표현으로 전환해 변환을 적용. 반환전에 원래 형태로 전환.
기본적인 연산자 오버로딩 제공, SRT 연산제공, LookAt, 직교투영, 원근투영, 좌표계 변환(왼손, 오른손)
Quaternion : 아래 사원수 링크 참고. 사원수로 변환. 사원수를 행렬로 변환, 구면 선형 보간
AnimationTransform : 변환 보간
고민중...
1. core 프로젝트의 math 라이브러리중 friend 멤버 함수인 애들은 다른 프로젝트에서 어떻게 호출시킬까..
dll export로 하면 2039 err 남
=> 이건 선언쪽에 같은 스코프에 정의까지 같이해줘야함.
참고 : friend 함수 (MSDN)
2. 1120 err 문제. 위와 같은 상황이지만 struct임. h로 옮겨서 정의해도 함수를 못찾고 에러남.
=> 결국 문제는 내가 예상했던 문제가 아니라 내부 구현에서 사용한 함수를 export 안시켜서 그럼.
결국 유틸함수도 함수 자체 dll로 만들어 버림.
그냥 static function으로
참고 : 프로젝트 설정 dll,
Reference Link
- Vector
- Matrix
- Homogeneous Coordinates (동차 좌표계)
- 첨자 연산자
- 구면좌표계
'작업장 > Mgin 제작' 카테고리의 다른 글
14. character (0) | 2017.11.27 |
---|---|
13. max plugin (0) | 2017.11.20 |
shader 구조를 대략 만들고 결과물을 띄웠다. (0) | 2016.06.17 |
static function 실수 (0) | 2016.06.11 |
하루동안 삽질한 버그. (0) | 2016.04.09 |