https://color-change.tistory.com/54

 

(기하와 벡터) 회전변환 식 유도

::(기하와 벡터) 회전변환 식 유도:: - 개념, 공식, 증명, 유도 이 포스팅은 기하와 벡터의 회전변환 공식을 유도하는 글 입니다. 회전변환은 고교 수학(자연계) 기하와 벡터 과목의 전반부에서 처

color-change.tistory.com

'Directx12 > 기본이론' 카테고리의 다른 글

전치행렬, 단위행렬, 행렬식, 딸림행렬, 역행렬  (0) 2022.10.29
행렬 대수  (0) 2022.09.05
외적 , 직교화 , 점  (0) 2022.07.21
내적, 직교투영 , 직교화  (0) 2022.07.18
벡터의 길이와 단위벡터  (0) 2022.07.17

1.  전치행렬

행렬의 전치(transpose), 즉 전치행렬은 행렬의 행들과 열들을 맞바꾼 것이다. 따라서 m x n 행렬의 전치는  n x m 행렬이다. 행렬 M의 전치행렬은 다음과 같이 표기한다.

행렬 M의 전치행렬

다음과 같이 행과 열을 바꿉니다.

1행 -> 1열 , 2행 -> 2열, 3행 -> 3열... 이렇게 위치를 바꿉니다.

 

전치행렬에는 다음과 같은 유용한 성질이 있다.

 

2. 단위행렬

단위행렬(identity matrix) 이라고 부르는 특별한 행렬이 있다. 열 수과 행 수가 같은 정사각형의 행렬을 정방행렬(square matrix)이라고 부른다. 정방행렬의 좌상에서 우하로의 주된 대각선에 있는 성분들은 주대각(main diagonal) 성분이라고 부르는데, 단위행렬은 주대각 성분들만 1이고 나머지는 모두 0인 정방행렬이다.

 

    예를 들어 다음은 2 x 2, 3 x 3, 4 x 4 단위행렬이다.

   단위행렬은 곱셈의 항등원 역할을 한다.

   즉, A가  m  x n  행렬이고 B가 n x p 행렬, I가 n x n 단위행렬이면 아래와 같다.

   다른 말로 하면, 어떤 행렬에 단위행렬을 곱해도 그 행렬은 변하지 않는다. 단위행렬을 1의 행렬 버전이라고 생각하면 된다. 특히, M이 정방행렬일 때 단위행렬과의 곱셈은 교환법칙을 만족한다.

 

3. 행렬식

행렬식(Determinant)은 정방행렬을 입력받아서 실숫값을 출력하는 특별한 함수이다. 정방행렬 A의 행렬식을 흔히 det A로 표기한다. 기하학적으로 행렬식이 3차원 입체의 부피와 관련이 있다는 점과 행렬식이 선형변환 하에서 그 부피가 변하는 방식에 대한 정보를 제공한다는 점을 증명하는 것이 가능하다. 또한, 행렬식은 크라메르의 법칙(Cramer's rule)을 이용해서 1차 연립방정식을 푸는 데에도 쓰인다. 그러나 여기에서는 행렬의 역(역행렬)을 구할 때 행렬식이 쓰인다. 또한, 다음과 같은 정리가 있다.

  위의 정리를 이용하면 주어진 행렬의 역을 구하는 것이 가능한지를 손쉽게 판정할 수 있다. 행렬식을 정의하기 전에, 먼저 소행렬이라는 개념부터 살펴보자.

  3.1 소행렬

  예를 들어 보자.

소행렬 예제

   3.2 행렬식의 정의

     행렬의 행렬식은 재귀적으로 정의된다. 예를 들어 4 X 4 행렬의 행렬식은 3 X 3행렬의 행렬식들로 정의되고, 3 X 3 행렬의 행렬식은 2 X 2 행렬의 행렬식들로, 2 X 2 행렬의 행렬식은 1 X 1 행렬의 행렬식들로 정의된다. (1 x 1 행렬 A = [A¹¹]의 행렬식은 자명하게 정의되는데, 바로 det[A¹¹] = A¹¹이다. )

 

행렬식 공식

다음기회에 적자

'Directx12 > 기본이론' 카테고리의 다른 글

회전변환 식 유도 잘나온 사이트  (0) 2022.11.22
행렬 대수  (0) 2022.09.05
외적 , 직교화 , 점  (0) 2022.07.21
내적, 직교투영 , 직교화  (0) 2022.07.18
벡터의 길이와 단위벡터  (0) 2022.07.17

※ 행렬 사용 이유

    ▶ 3차원 컴퓨터 그래픽에서 행렬은 비례나 회전, 이동 같은 기하학적 변환을 간결하게 서술하는 데 쓰이며, 점이나 벡터의 좌표를 한 기준계에서 다른 기준계로 변환하는 데에도 쓰인다. 

 

※ 정의

    ▶ m x n 행렬 M은 m개의 행과 n개의 열로 이루어진 실수들의 정사각 배열이다. 행(row)들의 개수와 열(column)들의 개수의 곱(이를테면 4x4)을 행렬의 차원이라고 부른다. 행렬을 구성하는 수들을 성분(entry) 또는 원소(element; 또는 요소)라고 부른다. 

행렬의 한 성분을 나타낼 때에는 다음과 같이 나타낸다.

i는 행, j는 열이다.

 

    ▶ 다음 행렬들을 생각해 보자.

          1.  A = 4 x 4 행렬 , B =  3 x 2  행렬, u = 1 x 3 행렬, v = 4 x 1 행렬이다.

          2.  행렬 A의 4행(넷째 행) 2열(둘째 열)의 성분(-5)을 A₄₂라고 표기한다.

          3.  행렬 u , v는 각각 행과 열이 하나라는 점에서 특별한 행렬이다. 이런 종류의 행렬을 행벡터열벡터라고 부른다. 이것은 벡터를 행렬 형태로 표기할 때 쓰이기 때문이다. (예를 들어 벡터( x , y , z)를 행렬[ x , y , z]로 맞바꾸어 사용할 수 있다.)

 

    ▶ 종종 한 행렬의 행들을 벡터로들로 간주하는 것이 편리할 때가 있다. 예를 들어 행렬을 다음과 같이 표기할 수도 있다.

 

# 행렬의 상등, 덧셈, 스칼라 곱셈, 뺄셈 연산을 정의

    1. 두 행렬은 오직 대응되는 성분들이 상등일 때에만 상등이다.(두 행렬의 상등을 비교하려면 두 행렬의 행 개수들, 열 개수들이 같아야 된다.)

    2. 두 행렬을 더할 때에는 대응되는 성분들을 더한다. 따라서 차원이 같은 행렬들만 더할 수 있다.

    3. 행렬에 하나의 스칼라를 곱할 때에는 행렬의 모든 성분에 그 스칼라를 곱한다.

    4. 행렬의 뺄셈은 스칼라 곱셈과 행렬 덧셈으로 정의한다. 즉 (A - B = A + (-1 x B) = A + (-B))이다.

 

    ▶ 행렬 덧셈과 스칼라 곱셈은 성분별로 이루어지므로, 행렬 덧셈과 스칼라 곱셈도 실수의 덧셈 및 곱셈의 다음과 같은 성질들을 만족한다.

   

※ 행렬 곱셈

     # 정의 : 만일 A가 m x n 행렬이고 B가 n x p 행렬이면 둘의 곱 AB가 정의된다. 곱 AB는 하나의 m x p 행렬이다. 이를 C라고 할 때 , C의 ij번째 성분은 A의 i번째 행벡터와 B의 j번째 열벡터의 내적이다. 즉, 

행렬곱셈 정의

이다. 따라서 행렬 곱 AB가 정의되려면 A의 열 수와 B의 행수가 같아야 된다. 다른 말로 하면, A의 행벡터들의 차원과 B의 열벡터들의 차원이 같아야 된다. 이 차원들이 일치 하지않으면 내적이 말이 안된다.

Ex 1) 

    ▶ A의 행벡터들의 차원은 2이지만 B의 열벡터들의 차원은 3이므로, 두 행렬의 곱 AB는 정의되지 않는다. 좀 더 구체적으로, A의 첫 행벡터와 B의 첫 열벡터의 내적을 취할 수가 없다. 2차원 벡터와 3차원 벡터의 내적을 취할 수 없기 때문이다.

Ex 2) 

    ▶ 이 경우에는 곱 AB가 정의된다. A의 열 수와 B의 행 수가 같기 때문이다. 

     곱 BA는 정의되지 않음을 주목하기 발나다. B의 열 수와 A의 행수가 같지 않기 때문이다. 이 예에서 보듯이, 일반적으로 행렬 곱셈에는 교환법칙이 성립하지 않는다. 즉 AB ≠ BA이다.

 

# 벡터와 행렬의 곱셈

   다음과 같은 벡터 x 행렬 곱셈을 생각해 보자.

   이 경우 uA가 1 x 3 행벡터로 평가됨을 주목하기 바란다. 위의 내용을 다음 행렬곱셈으로 적용하면 다음과 같이 나온다.

행렬곱셈 정의

   이 것은 선형결합(linear combination, 일차결합)의 한 예이다. 이 식은 벡터 x 행렬 곱 uA가 행렬 A의 행벡터들과 벡터 u로 주어진 스칼라 계수 x , y , z의 선형결합에 해당함을 말해준다. 이 예는 1 x 3행벡터와 3 x 3 행렬의 경우이지만, 앞의 문장은 일반적으로도 참임을 주목하기 바란다. 즉 , 어떤 1 x n 행벡터 u와 어떤 n x m 행렬 A에 대해, 곱 uA는 A의 행벡터들과 u의 스칼라 계수들의 선형결합이다.

 

# 결합법칙

행렬 곱셈에는 몇 가지 편리한 대수적 성질들이 존재한다. 예를 들어 행렬 곱셈은 덧셈에 대한 분배법칙을 만족한다. 즉,  A(B + C) = AB + AC이고 (A + B)C = AC + AB이다. 더욱 중요한 것은, 행렬 곱셈이 다음과 같은 결합법칙을 만족한다는 것이다. 

※ 외적(Cross dot 또는 Outer product)

 - 외적은 벡터와 벡터를 곱하면 내적과 달리 벡터가 나온다. (내적은 스칼라 값이 나온다.)

    오직 3차원 벡터에서만 정의 된다. (2차원은 x)

    두 3차원 벡터 u , v를 외적을 취하면 u,v 모두에 직교인 또 다른 벡터 w가 나온다.

 

- 정의

U x V 일 때

V x U 일때

W가 외적 방향이다.

    왼손 좌표계 적용시 두벡터를 반대로 곱하면 새로 나오는 벡터가 뒤집어 진다.

      - 계산해보면

U = (2 , 1 , 3)  , V = (2 , 0 , 0) 할 때 , W = U x V 와 Z = V x U를 비교하교 직교임을 확인해보자.

W = U x V

W = ( (1 x 0) - (3 x 0) , (3 x 2) - (2 x 0) , (2 x 0) - (1 x 2) ) 

W = (0 , 6 , -2)

 

Z = V x U

Z = ( (0 x 3) - (0 x 1) , (0 x 2) - (2 x 3) , (2 x 1) - (0 x 2))

Z = (0 , -6 , 2)

이 결과 U x V  ≠  V x U 라는 사실을 알게된다.(외적은 교환 법칙 성립 X)

U x V = -V x U 는 된다.

 

 

W가 U또는 V에 직교임을 확인하는 방법은 W●U , W●V 내적을 해서 0이 나오면 서로 직교이다.

 

      - 계산해보면

W●U = WxUx + WyUy + WzUz(공식)

W●U = (0 , 6 , -2) ● (2 , 1, 3) 

W●U = (0x2) + (6 x 1)  + (-2 x 3) = 0

 

W●V = (0 , 6 , -2)●(2 , 0 , 0)

W●V = (0x2) + (6x0) + (-2 x 0) = 0

직교임을 알 수 있다.

 

 

※ 직교화

   - 내적에서 그람슈미트 공정을 통한 직교화를 알아봤다. 여기서는 다른 공정을 통해서 직교화를 구해본다.

다음 공정을 진행한다.

기하학 그림

 

W2 ⊥ W0이고 ll W2 ll = ll W0 ll = 1 이므로 ll W2 x W0 ll = 1이다. 따라서 정규화는 필요하지 않다.

 

 

※ 점

 - 3차원 그래픽 프로그램안에서는 어떤 물체의 위치를 지정할 수 있어야 된다.

    그래서 벡터를 사용해서 위치를 나타내는데 , 벡터의 머리 끝 좌표를 이용하여 위치를 나타낸다. 이것을 위치벡터라 한다.

점 P

  - 활용

    점과 점 사이에 어느 방향으로 바라보고 있는지를 구할 때 사용한다.

 끝

'Directx12 > 기본이론' 카테고리의 다른 글

전치행렬, 단위행렬, 행렬식, 딸림행렬, 역행렬  (0) 2022.10.29
행렬 대수  (0) 2022.09.05
내적, 직교투영 , 직교화  (0) 2022.07.18
벡터의 길이와 단위벡터  (0) 2022.07.17
벡터의 좌표 , 연산  (0) 2022.07.15

※ 내적

     - 내적(inner product)은 점곱(dot product)이라고도 불린다.

      표기법 )  U ● V 

 

      내적은 스칼라 값을 나타내는 벡터 곱셈이다. 곱셈 결과는 스칼라 값이 나온다.

      다음과 같이 내적이 정의 된다.

U = (Ux , Uy,  Uz) 인 벡터

V = (Vx , Vy , Vz) 인 벡터

 

U ● V  = Ux Vx  + Uy Vy  + Uz Vz

      실제계산)

U = (-1 , 3 , 6)

V = (-5 , 2 , 9)

 

U ● V =  (-1 x -5) + (3 x 2) + (6 x 9) = 65

 

     ★ 내적의 정의만 봐서는 내적의 기하학적 의미가 분명하지 않다. 그래서 코사인 법칙을 적용하면

          다음과 같은 관계를 찾을 수 있다.

 

U ● V = ll U ll x ll V ll x cosΘ 

(여기서 Θ는  0 ≤  Θ ≤ π)

(U가 단위 벡터 , V가 단위 벡터 이면 U ● V = cosΘ 가 된다.)

 

         - 여기서 유용한 속성 몇가지를 이끌어낼 수 있다.

           1.  U ● V = 0 이면 ,  U ⊥ V 이다 (수직이다. 즉 두 벡터는 직교이다.)

           2.  U ● V > 0 이면, 두 벡터 사이에 각도 Θ는 90도 보다 작다.

           3.  U ● V < 0 이면, 두 벡터 사이에 각도 Θ는 90도 보다 크다.

 

        실제계산)

        U =  (1 , 2 , 3) 인 벡터

        V =  (-4 , 0 , -1) 인 벡터

※ 직교투영

     - 수직으로 내린 그림자 라는 뜻인데 어떤건지는 다음과 같이 보자.

     ★ 공식을 구해보자.         

          벡터 V , 단위벡터 n이 주어졌을 때 P를 내적을 이용해서 v와 n으로 표현하는 공식을 구해보자.

P = kn을 만족하는 스칼라 k가 존재

ll n ll = 1이므로 

ll P ll =  = ll kn ll = l k l x ll n ll = l k l 

(P와 n이 반대 방향일 때 k는 음수를 가져서 절대값으로 나타낸다.)

 

이제 삼각함수 법칙들을 적용하면 

COSΘ = k / ll v ll

k = ll v ll COSΘ

 

따라서 

P = kn

P = (ll v ll COSΘ)n 

 

그런데 n은 단위 벡터이므로 다음과 같이 표현

P = (ll v ll COSΘ)n

P = (ll v ll x 1 x COSΘ)n

P = (ll v ll x ll n ll x COSΘ)n

P = (V ● N)n

 

이 공식에 따르면 k = V ● N이다. n이 단위 벡터일 때 V ● N의 기하학적 의미를 말해준다.

이러한 P를 n에 대한 v의 직교투영(orthographic projection  ; 또는 정사영)이라고 한다.

 

표기법)

 

※ 직교화(orthonormal)

     - 벡터 집합{V0 ~ Vn-1}의 모든 벡터가 단위 길이고 , 서로 직교일 때 그러한 벡터 집합을 정규직교(orthonormal)집합라 한다.  (집합의 모든 벡터가 다른 모든 벡터와 수직이다.)

단, 주어진 벡터 집합이 정규직교에 가깝지만 완전히 정규직교가 아닌경우도 있다. 이러한 벡터 집합을 정규직교벡터 집합으로 만드는 걸 직교화(orthonormal) 이라고 한다.

 

    - 왜 쓰는가?  

     최적화 하려고 쓴다고 한다. 예를 들어 어떤 벡터를 단위 벡터로 만들지 않고 쓰면 계산이 복잡해 진다. 즉 연산량이 많아진다. 그래서 크기 단위가 1인 벡터로 만들어 사용하면 연산이 적어진다. 고로 벡터 집합들을 단위 벡터로 다 모아두면 필요로한 벡터연산을 할 때 연산량을 적게 들이고 연산을 할 수 있다.

 

- 설명

다음 서로 직교인 2차원 벡터 집합을 만들어보자.

1. W0 = V0으로 시작해서 , 벡터 V1이 W0과 직교가 되게 만든다. 이를 위해 W0의 방향으로 작용하는 부분을 V1에서 뺀다.

이제 서로 직교인 벡터 집합 {W0 , W1} 이 만들어 졌다.

이제 집합을 정규화해서 단위 길이로 만들어 사용한다.

정규화 그림

 

3차원도 비슷하다 단계만 늘어날 뿐이다.

서로 직교인 3차원 벡터 집합

1. W0 = V0 시작 V1이 W0 직교되게 만든다.  이를 위해 W0 작용하는 부분을 V1에서 뺀다.

1번

2. V2가 W0과 W1 모두에 직교가 되게 한다. 이를 위해 W0방향으로 작용하는 부분과 W1방향으로 작용하는 부분을 V2에서 뺀다.

이제 서로 직교인 벡터 집합 {W0 , W1, W2} 가 만들어 졌다.

이제 이를 일반화해서 , N개의 벡터들의 집합 {V0 , V1 ... Vn-1}을 정규직교 집합 {W0,W1....Wn-1}으로

직교화 할때는 그람-슈미트 직교화라는 공정을 적용한다.

 

'Directx12 > 기본이론' 카테고리의 다른 글

전치행렬, 단위행렬, 행렬식, 딸림행렬, 역행렬  (0) 2022.10.29
행렬 대수  (0) 2022.09.05
외적 , 직교화 , 점  (0) 2022.07.21
벡터의 길이와 단위벡터  (0) 2022.07.17
벡터의 좌표 , 연산  (0) 2022.07.15

1. 벡터의 크키(길이) 정의

    - 기하학적으로 한 벡터의 크기는 해당 지향 선분의 길이이다. (지향 선분 : 방향이 있는 벡터)

      표기법 : ll u ll

피타고라스 정리에 의해서

U 벡터의 크기(길이)가 나온다.

벡터의 크기(길이)는 알아봤다. 하지만 벡터는 순전히 방향만 나타내는 용도로만 쓰인다. 그래서 다음과 같이 길이가 1인 단위로 환산하여 단위벡터를 만들어서 사용한다.

 

2. 단위벡터(unit vector)

    - 길이가 1인 단위로 만든 벡터. 길이가 1인 벡터로 만드는 것을 정규화(nomalization)이라고 한다. 

       다음은 정규화 공식이다.

정규화 공식

    - 공식 확인

    - 계산

      벡터 u = (-1 , 3 , 4) 정규화를 해보자

 

 

'Directx12 > 기본이론' 카테고리의 다른 글

전치행렬, 단위행렬, 행렬식, 딸림행렬, 역행렬  (0) 2022.10.29
행렬 대수  (0) 2022.09.05
외적 , 직교화 , 점  (0) 2022.07.21
내적, 직교투영 , 직교화  (0) 2022.07.18
벡터의 좌표 , 연산  (0) 2022.07.15

+ Recent posts