11. 외적

CJB_ny·2023년 3월 3일
0

이득우 겜수

목록 보기
8/9

정리글

11-1

외적 Cross Product

내적과 다르게 3차원공간에서만 사용이가능하다.

외적의 결과는 언제나 "3차원 벡터"가된다.
외적 계산식의 패턴은 x성분의 결과를 만들기위해 x축과 관련이 없는 나머지 두 성분 y, z를 결합해 만든다는 것이다. y, z도 동일.

외적은 교환법칙 X, 결합 법칙 X, 분배 법칙 O


  • 동일한 벡터끼리 내적 => 해당 벡터크기를 제곱한 값.
  • 동일한 벡터 외적시 항상 "영벡터"나온다.

외적은 "평행성 판별"에 사용한다.
내적은 "직교성 판별"에 사용함.

외적은 상대방에 직교하는 "벡터 성분"만 사용되는 성질이 있다.

그래서 직교성분 벡터의 크기는 즉 "외적의 크기"는 sin함수에 비례한다.

외적의 성질

벡터 외적의 중요한 성질중 하나는 "직교하는 벡터를 만들어 낸다"는 점이다.

정리글 에서처럼 외적의 결과는

두 벡터에 모두 직교함을 알 수 있다.

"선형 독립"의 관계를 가지는 두 벡터의 "선형 결헙"은 "평면"을 만들어낸다.
그러면 두 벡터의 외적은 두 벡터가 만드는 평면에 직교하는 즉, 평면이 향하는 방향에 대한 벡터를 만들어낸다.

이게 "법선 벡터 Normal Vector"이다.

법선벡터의 방향은 "오른손 법칙"으로 정할 수 있다.

좌우 판별

A 나 B 이런식으로 있는 경우

왼쪽에 있는 물체는 시선방향 벡터 Forward Vector와 외적시 평면에 위로향하는 법선벡터가 만들어지고

나 기준 오른쪽에 있는 물체와의 벡터랑 forward vector의 외적은 평면의 아래방향으로 향하는 법선벡터가 만들어진다.

벡터의 외적 방향의 결과를 스칼라 값으로 알기위해 "내적"을 함께 사용하여 "판별"할 수 있다.

외적으로 나온 결과 벡터 (법선 벡터)와 내적에 사용할 World 좌표의 UpVector의 내적 결과에 따라 위로향하는지 아래로 향하는지 알 수 있다.

두 벡터의 방향이 같다면 내적값은 "양수", 반대 방향이라면 "음수"이다.

카메라 위치

이런경우 Local z는 물체의 위치와 카메라 위치를 빼서 정규화를 하면 LocalZ를 구할 수 있다.
LocalX의 경우 World좌표의 UpVector와 LocalZ를 외적하여 얻을 수 있고
LocalY의 경우 LocalX와 LocalZ를 외적하면 LocalY를 얻을 수 있다.

결과

투영변환은 아직 적용 안함.

11-2

Backface Culling

Mesh의 정점버퍼와 인덱스 버퍼를 가지고 와서

인덱스 버퍼의 정점 인덱스값을 기반으로 mesh의 삼각형 면이 향하는 방향을 구한뒤

카메라와의 시선 방향과 내적을 통해 방향이 같으면 그리지 않고,

카메라의 시선방향과 방향이 다르다면 그려준다.


mesh의 인덱스 버퍼의 정점 인덱스를 계산하는 방법은 인덱스 순서대로

좀더 정확한 그림은 정리글 참고 바람. 오른손 좌표계로 삼각형 면의 방향을 구해준다음에

"뷰공간"에서 카메라의 시선 방향은 -Z축이므로 (0, 0, -1)과 내적을 하여 스칼라 값이 음의 부호를 가질때만 그려준다.

내적결과가 양의 부호라면 같은 방향이고, 내적결과가 음의
부호라면 다른 방향이기 때문이다.

결과

11-3

로드리게스 회전

Axis-Angle rotation

삼중곱

스칼라 삼중곱

벡터 a, b, c

a ( b x c )

이전에 왼쪽 오른쪽 판별하는 것과 backface Culling도 스칼라 삼중곱이다.

외적으로 만든 벡터의 크기는 평행사변형임과 동시에 외적으로 만들어진 벡터의 크기임을 알 수 있다.

정리글로 보면은 "스칼라 삼중곱"의 "절대값"은 세 벡터가 만드는 평행육면체의 부피를 의미한다.

외적으로 생성된 벡터의 크기는 두 벡터가 만드는 평행 사변형의 넓이와 동일.
이는 행렬식의 절대값과 동일하다.

행렬식은 평면에서 평행사변형을 이루는 두 벡터가 서로 "선형독립"의 관계를 가지는지를 판별하는 수식이였다.
이와 마찬가지로 "스칼라 삼중곱"은 3차원에서 세 벡터가 모두 선형독립의 관계를 가지는지 판단하는 판별식으로 볼 수 있다.

스칼라 삼중곱이 0 이 나오는 경우는 평면을 이루는 두벡터와 평행하거나, (외적의 결과가 영벡터)

b, c가 만드는 평면에 속하는 경우 스칼라 삼중곱이 0이 나온다. (외적한 법선 벡터와 내적을 하면 직교하기에 0이 나온다)

벡터 삼중곱

벡터 a, b, c

a x ( b x c )

"삼중곱 전개" 또는 "라그랑주 공식"이라고함.

짧게 정리하면 "벡터 삼중곱"은 복잡한 외적을 두개의 내적 연산으로 변환한다는 특징이 있다.

벡터 삼중곱으로 만들어지는 벡터는 두벡터 b, c가 만드는 평면에 속한다.

profile
공부 일기장으로 변해버린 블로그 (https://cjbworld.tistory.com/ <- 이사중)

0개의 댓글