변환행열 (Transformation Matrices)

개요(Introduction)

본 글은 변환행열 Q의 생성과 해석 측면에서 촛점을 맞춤으로써 이전 좌표변환 글을 보충하게 될 것이다. 좌표변환은 물체가 아닌 좌표축이 회전하는 것임을 다시 한번 강조한다.

사전복습(Quick Review)

변환행열 Q는 다음과 같이 벡터(vector)와 텐서(tensor)의 좌표변환에 사용된다(2등급 텐서를 1차 텐서, 4등급 텐서를 2차 텐서라고도 한다).

벡터                                  v=Qv
2등급(2nd rank) 텐서    σ=QσQT
4등급(4th rank) 텐서    C=QQCQTQT

또한 텐서표기법으로 쓰면 ...

벡터                vi=λijvj
2등급 텐서    σmn=λmiλnjσij
4등급 텐서    Cmnop=λmiλnjλokλplCijkl

2차원에서 Q

Q=[cosθsinθsinθcosθ]

여기서 θ는 변환전후 좌표축 간의 각도이다. 이것은 아래서 논의할 일반적인 3-D의 특별한 경우에 지나지 않는다.

변환행열의 성질(Transformation Matrix Properties)

변환행열은 아래의 2-D 벡터의 예에서 쉽게 알 수 있듯이 몇가지 특별한 성질이 있으며 3-D에도 동일하게 적용된다. 이 성질들은 만약 어떤 변환행열이 문제가 되었을 때 그것의 정확도를 검증하는데 유용하다. 변환행열이 이들 모든 항목을 통과하더라도 틀릴 수 있지만, 하나라도 만족하지 않으면 그것은 명백히 잘못된 것이다.

Q의 행열식(determinant)은 1이다.
● Q의 전치행열(transpose)은 그의 역행열(inverse)이다.
● 임의의 행 또는 열과 그 자신과의 내적(dot product)은 1이다.
     예 : (icosθ+jsinθ)(icosθ+jsinθ)=1
● 임의의 행과 다른 행과의 내적은 0 이다.
     예 : (icosθ+jsinθ)(isinθ+jcosθ)=0
● 임의의 열과 다른 열과의 내적은 0 이다.
     예 : (icosθjsinθ)(isinθ+jcosθ)=0

변환행열의 곱(Multiplication of Transformation Matrices)

위에서 변환행열의 임의의 두개의 다른 행 또는 열 간의 내적은 0 이고, 반면에 임의의 행 또는 열과 그 자신의 내적은 1 임에 주목한다. 이것은 행열과 텐서표기법으로 다음과 같이 쓸 수 있다.

QQT=I그리고λikλjk=δij

이것은 또한 변환행열의 전치는 그의 역행열임을 보여준다.

3-D에서 Q의 일반적인 정의는 다음과 같다.

Q=[cos(x,x)cos(x,y)cos(x,z)cos(y,x)cos(y,y)cos(y,z)cos(z,x)cos(z,y)cos(z,z)]

여기서 (x',x)는 x'와 x축 사이의 각도를 나타내고, (x', y)는 x'와 y축 사이의 각도를 나타낸다(이하 동일 규칙).

3-D로부터 2-D 축소(3-D Reduction to 2-D)

따라서 z-축에 대한 회전은 z'과 z 간의 각도가 0˚ 이기 때문에 cos(z',z)=1 이다. 반면에 cos(x',z)=cos(z',x)=0 이다. 왜냐하면 이들 축간의 각도는 90˚를 유지하기 때문이다.

x'와 y 사이의 각도는 (90˚-θ), 그리고 cos(x',y)=cos(90˚-θ)=sinθ.

같은 방법으로 y'과 x 사이의 각도는 (90˚+θ), 그리고 cos(y',x)=cos(90˚+θ)=-sinθ.

이들을 모두 종합하면

Q=[cosθsinθ0sinθcosθ0001]

여기서 3-D 변환행열 안에 2-D 행열이 포함되어 있음을 알 수 있다.

변환행열은 생성하고 해석하는 다른 방법은 다음과 같다.

[(xcompof i)(ycompof i)(zcompof i)(xcompof j)(ycompof j)(zcompof j)(xcompof k)(ycompof k)(zcompof k)]

여기서 "x-comp of i'"은 i' 단위벡터(unit vector)의 x-성분(component)을 의미한다. 다른 말로 하면 "i' 단위행열의 x, y, z 좌표계 기준 첫번째 성분"이라 할 수 있다.

연속 회전 - 로우 규약(Successive Rotations -Roe Convention)

3-D 변환행열은 좌표축에 관한 일련의 연속적인 3번의 회전이라고 볼 수 있다. 회전축들의 조합이 임의의 순서로 선택될 수 있으므로 수많은 방법이 있을 수 있다. 하나의 많이 쓰이는 방법으로 소위 로우 규약(Roe convention)이 있다.

이것은 그림에서 보는바와 같이 (i) z-축을 중심으로 각도 ψ 만큼 회전한 후, (ii) 새로운 y-축(z를 중심으로 이미 회전한)을 중심으로 각도 θ 만큼 회전하고 마지막으로, (iii) 기울어진 z-축을 중심으로 두번째 Φ 만큼 회전하므로 이루어진다.

이 로우 규약은 한가지 단점에도 불구하고 매우 자주 사용된다. 그것은 θ=0 이면, ψ와 Φ 간의 구별이 어려워지며, 그 둘의 합만으로 구성된다.

Q=[cosϕsinϕ0sinϕcosϕ0001][cosθ0sinθ010sinθ0cosθ][cosψsinψ0sinψcosψ0001]=[cosψcosθcosϕsinψsinϕsinψcosθcosϕ+cosψsinϕsinθcosϕcosψcosθsinϕsinψcosθsinψcosθsinϕ+cosψcosϕsinθsinϕcosψsinθsinψsinθcosθ]

회전각도들은 ψ, θ, Φ 순서로 적용되지만, 행열들은 반대순서 : Φ, θ, ψ로 쓰여진다는 것에 주의한다.

로우 각도 예제(Roe Angles Example)

위의 그림에서 ψ=60˚, θ=30˚, 및 Φ=45˚ 이다. 이 로우 각도들로부터 다음과 같은 좌표 변환행열을 얻는다.

Q=[cos60cos30cos45sin60sin45sin60cos30cos45+cos60sin45sin30cos45cos60cos30sin45sin60cos45sin60cos30sin45+cos60cos45sin30sin45cos60sin30sin60sin30cos30]=[0.30620.88390.35360.91860.17680.35360.25000.43300.8660]

역산 - 행열로부터 로우 각도 결정(Going In Reverse - Determining Roe Anlges from a Matrix)

변환행열이 주어지고 그 행열에 해당하는 로우 변환각도들을 알고 싶다고 하자.

Q=[q11q12q13q21q22q23q31q32q33]

첫째로 가장 쉬운 단계는 q33 성분을 이용하는 것이다. 그것은 단순히 θ의 코사인이므로, θ=Cos1(q33) 이다.

두번째 단계로 다음과 같이 ψ를 결정한다.

q32q31=sinψsinθcosψsinθ=sinψcosψ=tanψ

따라서,

ϕ=Tan1(q23q13)

하지만 θ가 매우 작은 경우, sinθ 도 매우 작게 되어, sinθ가 포함되어 있는 q13,q23,q31q33도 작아지게 된다. 이것은 반올림 오차(round-off errors)의 원인이 될 수 있다.

다행히도 이러한 경우(θ→0)에 대한 해결책은 ψ와 Φ를 서로 구별할 수 없다는 것에 있다. Φ를 0으로 둘 수 있으며, ψ=Sin1(q12)로 계산된다.

예제: 행열로부터 로우 각도 계산(Example: Roe Angles from Matrix)

앞의 예제의 행열을 가지고 거꾸로 계산한다. 먼저 θ를 결정하기 위해 q33 항으로 시작한다.

θ=Cos1(q33)=Cos1(0.8660)=30

θ가 0에 가깝지 않으므로, ψ와 Φ는 다음과 같이 계산된다.

ψ=Tan1(q32q31)=Tan1(0.43300.2500)=60ϕ=Tan1(q23q13)=Tan1(0.35360.3536)=45

임의의 축에 대한 회전(Rotation About An Axis)

변환된 좌표계의 방향을 명시하는 또 다른 방법은 회전축 벡터(rotation axis vector) p=(p1,p2,p3)와 그 p축을 중심으로 회전각도 α를 사용하는 것이다.

이 경우 변환행열은 다음과 같이 쓰여 진다.

Q=cosαI+(1cosα)pp+sinαP

여기서

P=[0p3p2p30p1p2p10]

이 행열은 전개하면

Q=[cosα+(1cosα)p12(1cosα)p1p2+sinαp3(1cosα)p1p3sinαp2(1cosα)p2p1sinαp3cosα+(1cosα)p22(1cosα)p2p3+sinαp1(1cosα)p3p1+sinαp2(1cosα)p3p2sinαp1cosα+(1cosα)p32]

통상 그렇듯이 윗 식은 텐서표기법으로 간결하게 쓸 수 있다.

Qij=cosαδij+(1cosα)pipj+sinαϵijkpk

p는 단위벡터라는 것에 유의한다. 다른 길이를 사용하면 잘못된 결과를 낳게된다.

로우 각도와 같이 주어진 변환행열 Q로부터 p와 α를 구할 수 있다. 첫번째 단계로 α를 결정한다. 이것은 행열의 대각합을 취함으로써 구해진다. 

α=Cos1[12{tr(Q)1}]

α가 결정되면, p의 성분들은 다음 식들로 계산된다.

p1=q23q322sinαp2=q31q132sinαp3=q12q212sinα

이 3개의 방정식은 텐서표기법으로 간편하게 요약된다.

pi=ϵijkqjk2sinα

α=0 일 때는 p가 정의되지 않는다. 이것은 "만약 회전이 전제되지 않으면 회전축은 의미가 없다"는 것을 보여준다.

p와 α의 역산(Backing Out p and α)

앞의 로우 각도: ψ=60˚, θ=30˚, 및 Φ=45˚ 와 동일한 단일회전 p와 α를 결정하라.

α에 대해서 풀면

α=Cos1{12(0.30620.1768+0.86601)}=108

p에 대해서 풀면

p1=0.35360.43302sin108=0.0417p2=0.2500+0.35362sin108=0.3173p3=0.8839+0.91862sin108=0.9475

따라서 로우 각도 ψ=60˚, θ=30˚, 및 Φ=45˚ 는 p=(-0.0417, 0.3173, 0.9475)로 주어진 축을 중심으로 하는 108˚ 단일 회전과 동일하다.

역행열과 전치행열(Inverse and Transposes)

모든 좌표 변환행열은 다소 주목할 만한 성질을 가진다. - 그들의 전치행열은 역행열과 같다. 따라서 이 행열의 역행열을 구하는 것은 쉬운 일이다.

QT=Q1 그러므로 QTQ=Q1Q=I

전치행열과의 곱 예제(Transpose Product Example)

앞의 Q 행열을 그의 전치행열과 곱하면 단위행열임을 알 수 있고, 그러므로 그것의 전치행열은 역행열과 같아야 한다.

QTQ=[0.30620.91860.25000.88390.17680.43300.35360.35360.8660][0.30620.88390.35360.91860.17680.35360.25000.43300.8660]=[100010001]

댓글

이 블로그의 인기 게시물

전단응력 (Shear Stress)

절대압력과 계기압력

엑셀 상자그림(Box Plot) 그리기