티스토리 뷰
지난번에 올린 쿼터니안 해설관련 자료를 올리고 친구와 동료들에게 많은 피드백을 받았습니다. 다수가 문제로 지적했던 점은 제가 올린 자료는 쿼터니안을 수식적으로 분석해서 3차원 회전과 등가임을 증명한 것일 뿐 어떻게 저러한 방식의 연산을 유도했는지에 관한 해설이 부족해 보인다는 것입니다. 저도 친구들에 말에 공감하였고, 제가 그러한 방식으로 글을 올리지 않은 이유는 순전히 저도 몰랐기 때문입니다. 사실 그 첫 글을 쓸 당시는 해밀턴이 어떤 생각으로 쿼터니안 연산을 유도했는지 전혀 짐작해보지 않았습니다. 해밀턴이 과연 어떤 사고를 밟았는지 궁금해졌고 지난 2주간 고민을 한 뒤, 어느 정도 짐작을 마쳤습니다. 이번자료와 다음자료에서는 해밀턴이 어떤 생각의 과정으로 쿼터니안의 연산을 개발했는지에 관한 저의 생각을 전개해 보겠습니다.
이번자료에선 먼저 벡터의 곱셈에 관하여 고찰해보겠습니다. 쿼터니안을 이해하기 전에 과연 백터의 내적과 외적이 무엇인지에 관한 납득이 필요했습니다. 물리적으로 사용되는 응용분야에 대해선 많이 알려져 있습니다. 예를 들어 내적은 에너지 계산 외적은 돌림힘 계산 등으로 말입니다. 그러나 순전히 수학적으로 왜 벡터의 곱셈이 이렇게 두가지 타입으로 정의되는지에 관한 어느정도 설명을 얻고 싶었습니다. 이에 대한 제 고민과 답을 얻는 과정을 기술하겠습니다.
내적과 외적이 벡터의 곱하기로 분류되는 이유는 스칼라 사이의 곱하기와 어떠한 유사점들을 갖고 있을 것이라 추측하였습니다. 다시 말해서 벡터의 곱하기란 어떤 연산인지는 모르겠지만 스칼라 사이의 곱하기와 어떠한 성질들을 공통으로 갖고 있는 연산이라고 상정하였습니다. 그 성질들은 아래 세 가지입니다.
이 조건들을 만족시키는 연산을 곱셈이라고 상정하였을 때 벡터 사이에서 위 조건들을 만족시키는 연산들은 어떠한 형태가 될까요? 임의의 두 삼차원 벡터 a와 b를 정의한 후 전개하도록 하겠습니다.
벡터 사이의 곱셈연산은 무엇인지 모르지만 서클 기호를 통해 표현하겠습니다. 곱셈연산은 분배법칙을 만족하는 연산이므로 벡터의 곱은 아래와 같이 아홉 개의 항으로 전개 가능합니다.
이 연산을 더 전개하기 위해선 아래 아홉 개의 벡터 곱의 정체에 대해 생각해봐야합니다.
우선 i벡터와 i벡터 사이의 곱셈에 대하여 분석해보겠습니다.
위의 수식과 같이 i벡터 곱하기 i벡터의 정체가 무엇인지는 모르겠지만 스칼라 값 + 벡터 값으로 가장 일반적인 형태로 가정하였습니다. 스칼라 값아 벡터의 i,j,k방향 성분을 각각 알파, 베타, 감마, 오메가 네가지 미정계수로 정의하였습니다. 이제 각 미정계수들이 어떤 값이어야 하는지 분석해보겠습니다. 이 때 가장 중요한 발상은 자연 현상이나 수학적 기술은 좌표축에 독립하다는 것입니다. 즉 좌표축은 사람이 전하는 것이기 때문에 ijk 방향이 어떠한 방향으로 설정되어도 수학적 성질이나 물리적현상이 변하지 않는다는 것입니다.
위 두 그림에서 x축의 방향이 같다면 i벡터 곱하기 i백터 값은 두 좌표계 시스템에서 같아집니다. 왜냐하면 y축 z축 방향에 상관없이 i벡터의 값은 오로지 x축 방향에 결정되기 때문입니다. 따라서 i벡터 곱하기 i백터 값에 j와 k 성분은 존재하면 안됩니다. 두 성분이 있다면 세 좌표계에서 i벡터 곱하기 i백터 값이 변하기 때문입니다.
위의 두 좌표계에서 i벡터와 i’벡터는 크기와 방향이 같으므로 i곱하기 i와 i’곱하기 i’의 값은 같습니다. 그러나 위의 수식에서 j와 j’ 값이 다르고 마찬가지로 k와 k’값이 다릅니다. 따라서 베타와 오메가가 0이여야함 좌표계1과 좌표계2의 i곱하기 i이 같아질 수 있습니다.
그러면 알파와 베타를 추정하기 위해서 -i와 -i사이의 곱하기에 대해서 생각해 보겠습니다.
이 값은 i곱하기 i와 같다는 것을 알 수 있습니다. 즉 아래의 식이 성립합니다.
즉 베타 값이 0이 되어야 한다는 것을 추론할 수 있습니다. 다시 i곱하기 i가 분배, 결합, 스칼라 곱 교환법칙을 만족한다면, 스칼라 값이 나와야 합니다. 마지막 남은 알파 값을 확정하지는 못하였습니다. 편의상 알파를 p로 두겠습니다.
다시한번 강조하지만 좌표축이란 것은 물리적 현상에 대하여 독립적입니다. 즉 어떤 상황에서 i로 잡은 방향을 j로 잡을 수도 있으며 k로 잡을 수도 있습니다. 그러므로 아래의 식이 성립합니다.
그렇다면 분석하기로 한 아홉 개의 벡터 곱셈 중 세 가지의 결과를 얻었습니다. 나머지 여섯 개의 곱셈도 어떤 결과가 나올지 알아보겠습니다.
위의 i벡터의 제곱을 유도할 때와 같이 -i벡터와 -j벡터의 곱은 i벡터와 j벡틔 곱과 같아야 합니다. 두 좌표계의 k벡터는 오른손 법칙에 의해 동일합니다.
두 서로 다른 방향의 벡터인 i와 j의 선형 조합이 0이 나오기 위해선 베타와 감마같이 0이어야만 합니다. 즉, 베타와 감마는 0입니다.
이제 미정계수를 줄이기 위해 곱셈의 성질 중 결합 법칙을 이용해 보겠습니다.
즉, 알파 값이 0이어야만 결합법칙이 성립함을 알 수 있다. 다시 정리하자면 i벡터와 j벡터의 곱은 아래와 같습니다.
추가적으로 생각해봐야할 것은 역시 좌표 선택의 독립성입니다. 어떤 좌표계에서 x축과 y축은 다른 좌표계에서 y축과 z축일 수 있으며, 또는 z축과 x축일 수 있습니다. 그러므로 각 축의 유닛벡터들의 곱인 j와 k의 곱과 k와 i곱이 i와 j의 곱과 같은 방식으로 정의됨을 추론할 수 있습니다. 수식으로 정리하자면 아래와 같습니다. 오메가의 값은 앞으로 편이상 q로 대체하겠습니다.
마지막으로 고려해 볼 것은 -i벡터와 j사이의 곱입니다. 이는 기하학적으로 j벡터와 i벡터 사이의 곱과 같습니다. -x축은 또다른 좌표계에선 y축일 수 있으며, y축이 그 좌표계에서 x축일 수 있기 때문입니다.
위의 내용을 전부 조합하면 아홉 개의 벡터 곱은 아래와 같습니다.
그렇다면 위의 아홉 개의 수식을 이용해서 일반적인 벡터 a, b의 곱을 다시 전개해보겠습니다.
p와 q의 값은 대칭성과 상정된 벡터 곱셈의 세가지 성질만으로 알아낼 수가 없어서 여전히 미지수입니다. 확정할 수 있는 법에 대해 아이디어가 있으신 분들은 댓글 부탁드립니다. p와 q의 값에 따라 벡터의 곱하기의 종류가 무궁무진하게 많아질 수 있음을 알 수 있습니다.
위 곱의 식을 아래 두개의 기호를 차용하여 간소화하겠습니다.
위의 식을 통해, 일반적인 벡터의 곱셈은 우리가 이미 알고 있는 벡터의 내적과 외적의 선형조합으로 표현됨을 알 수 있습니다. 때, p가 1이고 q가 0인 경우가 벡터의 내적이며, p가 0이고 q가 1 인 특수한 경우가 벡터의 외적임을 알 수 있습니다
마지막으로 정리하자면, 쿼터니안을 유도하면서 벡터의 내적과 외적이 무엇일까에 관한 의문이 생겼으며, 벡터의 곱셈이란 무엇인가에 관해 깊게 생각해보았습니다. 그래서 벡터 사이의 곱셈은 스칼라 사이의 일반적인 곱셈이 만족하는 세 가지 성질을 만족하는 연산이라 가정하였고, 삼차원 벡터를 이용해서 그러한 연산은 어떠한 형식이어야 하는지 추론하였습니다. 결과는 우리가 익히 알고 있는 내적과 외적에 상수를 곱한 것들의 합임을 알 수 있습니다. 즉 저는 앞으로 쿼터니안 내용을 전개할 때 벡터의 일반적인 곱셈이라고 한다면 p와 q값이 정해지지 않은 형태를 의미할 것입니다. 그리고 다음 자료의 결론부터 말하자면 p가 -1이고 q가 1인 경우가 쿼터니안 연산으로 추측됩니다. 이상입니다. 긴 글 읽어 주셔서 감사합니다.
'수학&물리' 카테고리의 다른 글
열역학자료 2: 입자의 속도 분포에 관하여 (0) | 2019.12.06 |
---|---|
열역학자료 1: 온도의 정의에 관하여 (2) | 2019.10.26 |
쿼터니안과 삼차원 회전 2 (0) | 2019.09.23 |
쿼터니안과 삼차원 회전 1 (0) | 2019.09.23 |
OpenGL 및 Assimp를 활용한 스켈레톤 애니메이션 프로그래밍 (2/3) (2) | 2019.08.29 |
- Total
- Today
- Yesterday
- 참조 형식
- MeshProcessing
- C#
- 유니티
- RubiksCube
- RL
- Unreal
- static batching
- collision detection
- reference type
- 값 형식
- normalized device coordinate
- value type
- VTK
- opengl
- Mesh
- 강화학습
- Scriptable Render Pipeline
- AABB
- perspective projection
- transform
- 루빅스큐브
- dynamic batching
- CollisionDetection
- NDC
- Transformation
- SRP
- Unity
- batching
- Mesh Processing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |