[0528 석재호]게임을위한기초수학과물리

58
게임을 위한 게임을 위한 기초수학과 물리 기초수학과 물리 데브루키 꿜라 석재호

Upload: jaeho-seok

Post on 15-Jul-2015

859 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: [0528 석재호]게임을위한기초수학과물리

게임을 위한 게임을 위한 기초수학과 물리 기초수학과 물리

데브루키 꿜라 석재호

Page 2: [0528 석재호]게임을위한기초수학과물리

개 요개 요

게임 내 객체 표현을 위한 기초적인 수학적 개념에

대하여 다시 떠올려보는 시간을 준비했습니다 간단한 수식들이지만 , 왜 그렇게 되는지를 공부해 보았습니다 저처럼 게임 수학을 처음 공부하는 학생에게

일부라도 참고할 수 있는 자료가 되었으면좋겠습니다

수식들이 . . 지루하지 않은 시간은 포기했습니다

Page 3: [0528 석재호]게임을위한기초수학과물리

순 서순 서

벡터와 공간

2 jo ints reac h IK

구 충돌 다루기

Page 4: [0528 석재호]게임을위한기초수학과물리

벡 터벡 터

Page 5: [0528 석재호]게임을위한기초수학과물리

기하학에서의 벡터기하학에서의 벡터

게임에 사용되는 벡터는 게임에 사용하기에 적 합한 부분집합 ( 실수 , 유클리드법 )

공간 내 객체정보 표현은 벡터와 점 두 가지를 통해 가능

벡터는 크기와 방향을 , 점은 위치를 가짐

Page 6: [0528 석재호]게임을위한기초수학과물리

A B C

벡터에는 위치가 없다

A 와 C 는 같은 크기와 방향을 가지므로 동일한 벡터이다

Page 7: [0528 석재호]게임을위한기초수학과물리

(( 실실 )) 벡터 공간벡터 공간

N 개의 실수의 순서쌍으로 표현되는 공간 모든 실수 x, y 에 대해 ( x, y) - 2 차원 벡터공간

모든 실수 x, y, z 에 대해 ( x, y, z ) – 3 차…원

벡터공간은 이에 대해 닫혀있는 연산 2 개로정의

6) 벡터간 덧셈7) 스칼라 곱

Page 8: [0528 석재호]게임을위한기초수학과물리

벡터공간의 연산벡터공간의 연산

1) 벡터간 덧셈 벡터공간 V 안에 임의의 u, v 에 대해서

u + v 가 V 안에 있다( u0, u1) + ( v0, v1) = ( u0 + v0, u1 + v1)

6) 스칼라 곱셈 실수 a, V 내의 v 에 대해서 av 가 V 안

에 있다a( v0, v1) = ( av0, av1)

Page 9: [0528 석재호]게임을위한기초수학과물리

벡터의 선형결합벡터의 선형결합

벡터공간에 닫힌 두 연산을 통해 동일한 공간에서

유효한 벡터들을 만들어낼 수 있음

새로운 벡터 v = a0v0 + a1v1 + a2v2 + … “ ” 이를 선형결합 이라고 한다

Page 10: [0528 석재호]게임을위한기초수학과물리

벡터의 선형결합벡터의 선형결합

선형 종속과 선형 독립 벡터의 집합 S = { v0, v1, v2 … } 에서

어떤 벡터가 다른 벡터들의 선형결합으로 표현이 가능하다면

“ ”그 벡터는 선형종속적 “ ” 그렇지 않다면 선형독립적 이라고 한다

Page 11: [0528 석재호]게임을위한기초수학과물리

선 형 종 속 사 례선 형 종 속 사 례

세 벡터는 다른 벡터들의 선형결합으로 표현 가능

c = 0. 2 * a + 0. 2 * ba = 5 * c - bb = 5 * c - a

a( 1, 4 )

b ( 4, 1 )

c ( 1, 1 )

Page 12: [0528 석재호]게임을위한기초수학과물리

선 형 독 립 사 례선 형 독 립 사 례

a 와 b 는 선형 결합을 통해 서로를 표현할 수 없

음- > 서로에 대해 선형독립

a( 0, 1 )

b ( 2, 0 )

Page 13: [0528 석재호]게임을위한기초수학과물리

선형독립과 기저선형독립과 기저

벡터공간 V 에서 선형독립인 벡터들의 집합을“ ” 기저 라고 한다

벡터공간의 차원은 기저 벡터의 개수와 동일하다

V 내의 모든 벡터는 기저벡터들의 선형결합으 로

표현이 가능하다

Page 14: [0528 석재호]게임을위한기초수학과물리

기저로 표현기저로 표현

녹색 벡터가 기저벡터의 역할

기저벡터가 2 개이므로 이는 2 차원 벡터공간이다

크기 1 을 가지는 기저를 표준 기저라고 한다

B2( 0, 1 )

a ( 1, 2 )

B1( 1, 0 )

Page 15: [0528 석재호]게임을위한기초수학과물리

기저로 표현기저로 표현

기저공간의 한 벡터는 기저들의 선형결합으로표현

이전 그림에서는 a = 1 * B 1 + 2 * B2

벡터에 대한 선형결합식은 위와 같이 유일하다 때문에 선형결합식 대신 계수의 순서쌍만으로 표현이 가능하다

a = ( 1, 2)

Page 16: [0528 석재호]게임을위한기초수학과물리

기저의 의미 기저의 의미 = = 좌표계좌표계

로컬 , 월드 , 뷰 , 투영 등의 좌표계는 기저벡터들로 구성되는 기저공간

기저벡터들은 서로 선형독립 , 즉 직교해야 한다

공간 내 벡터들에 대한 표현식이 유일해야 좌표계로서의 역할이 가능해진다

이 때문에 좌표축 벡터 계산 시 직교화가 필요

Page 17: [0528 석재호]게임을위한기초수학과물리

벡터의 내적벡터의 내적

V W = v0 * w0 + v1 * w1 + v2 * w2 = | | v | | * | | w | | * c os @ ( @ 는

두 벡터의 내각 )V V = v0 * v0 + v1 * v1 + v2 * v2 = | | v | | ( @ = 0 이므로 c os @

= 1 )

벡터의 크기가 1 이라면 ( unit vec tor)V W = 1 * 1 * c os @ = c os @

정규화된 벡터가 연산에 유리V, W 만 알고있으면 ac os 통해 바로 내각 알

수 있음

.

2.

.

Page 18: [0528 석재호]게임을위한기초수학과물리

벡터의 외적벡터의 외적

내적의 결과는 실수 , 외적의 결과는 벡터V X W = ( v1 * w2 – v2 * w1, v2 * w0 –

v0 * w2, v0 * w1 – v1 * w0)

V V0 V1 V2 V0W W0 W1 W2 W0V X W 0 1 2

외적의 결과는 두 벡터 모두와 수직인 벡터가된다

Page 19: [0528 석재호]게임을위한기초수학과물리

벡터의 외적벡터의 외적

V

W

V X W

엄지

검지

중지

검지와 중지가 180 도 이상 벌어지는 분에게는

혼란스러운 방식이 될지도 모릅니다

오른손 기준

Page 20: [0528 석재호]게임을위한기초수학과물리

벡터의 외적벡터의 외적

두 벡터의 외적의 크기는 이들이 만드는 평행사변

형의 면적이 된다

| | V X W | | = | | V | | * | | W | | * s in@

Page 21: [0528 석재호]게임을위한기초수학과물리

벡터의 외적벡터의 외적

평행사변형 넓이 = 가로 * 높이 = | | V | | * | | H | | = | | V | | * | | W

| | * s in@ = | | V X W | |

단위벡터의 외적이 단위벡터가

되지는 않는다 ( < = 1 )

W

V

H

@

Page 22: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

내각 평가if V W > 0 then @ < 2 / PI if V W < 0 then @ > 2 / PIif V W = 0 then @ = 2 / PI ( 직교 )

크기에 상관없이 c os @ 가 +, - 를 결정

벡터의 정규화가 필요치 않아 효율적

.

.

.

Page 23: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

평행한 벡터 평가 역시 내적이 효율적일 것 같지만

벡터들이 정규화 되지 않았다면 외적이 빠름

내적 방식 : | | v | | * | | w | | = v w 이면평행

계산 간략화 위해 양변 제곱하면 곱셈 12 개 , 덧셈 6 개 사용

외적 방식 : ( ( v x w ) ( v x w ) ) = 0 이면평행

곱셈 9 개 , 덧셈 2 개 , 뺄셈 3 개 사용

.

.

Page 24: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

벡터는 방향과 크기를 가진다

A 를 B 에 투영하는 것은B 의 방향과B 상에서의 A 크기 를 가지는

벡터를 만드는 것

A

B

C

@

투 영

Page 25: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

B 의 방향 단위벡터는 벡터의

방향 성분만을 가짐- > B 를 정규화하면 끝

= - - - - - - - -

A

B@

정규화된B

( 크기 1)

B | |

B | |

Page 26: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

투영된 A 의 크기 = | | A | | * c os @

= - - - - - - - - -

A

B@

A B

| | B | |

.

Page 27: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

둘을 곱하면 . .

C = - - - - - - - - * - - - - - - - -

= A * - - - - - - - - - - - - - -

애초에 B 가 단위벡터라면 = A * B B ( 간단 )

A

B@

A B

| | B | |

. 정규화된

B

C

B | |

B | |

B | |

B | |

B | |

B | |

.

.

Page 28: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

외적 이용한 회전각 알아내기

U

U x V

V

| | U x V | | = | | U | | * | | V | | * s in@

U, V 가 단위벡터라면| | U x V | | = s in@@ = as in( | | U x V | | )

내적에 비해 유리한 점은 외적 벡터 자체가

회전축이 되어 구한 각도로 바로 회전 적용

가능

@

Page 29: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

그람 - 슈미트 직교화 벡터 집합을 정규직교가 되게 만드는 법 기저벡터들의 선형독립이 깨질 경우 사용 가능

n 개의 벡터 v0 ~ v( n- 1) 을 정규직교 기저 w0 ~ w( n- 1) 로 만들기

Page 30: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

1 ) w0 에는 그냥 v0 대입

2 ) w1 = v1 – ( v1 을 w0 에 투영한 벡터 )

w0

v1w1

Page 31: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

3 ) w2 = v2 – ( v2 를 w0 에 투영한 벡터 )– ( v2 를 w1 에 투영한 벡터 )

w0v2

w1

w2

Page 32: [0528 석재호]게임을위한기초수학과물리

내적내적 , , 외적의 이용외적의 이용

생성된 정규직교벡터들에 모두 직교가 되도록N 번째 까지 만드는 과정

w( n) = v( n) – ( ∑ v( n) 을 w( I ) 에 투영 한 벡터 )

n - 1

I = 0

Page 33: [0528 석재호]게임을위한기초수학과물리

삼 중 적삼 중 적

U ( W x V ) = 세 벡터가 이루는 평행사변형 체 부피

U x ( V x W ) = 기저 생성 위한 또 다른 방법U 와 V 가 주어진다면 . . U x V 로 직교 벡터 생성

삼중적으로 U 와 U x V 모두와 직교하는 벡터생성

3 차원에서의 직교가 만들어진다( U, U x V, U x ( U x V) )ex) 시선벡터와 월드 y 로 카메라 view, up,

s ide 만들기

.

Page 34: [0528 석재호]게임을위한기초수학과물리

행 렬행 렬

…음스케일 , 회전 , 이동

좌표계 변환 이런게 어떻게 행렬로 계산이 가능한지

Page 35: [0528 석재호]게임을위한기초수학과물리
Page 36: [0528 석재호]게임을위한기초수학과물리

2 joints IK2 joints IK

Page 37: [0528 석재호]게임을위한기초수학과물리

IK(Inverse Kinematics)IK(Inverse Kinematics)

관절 수가 3 이상인 체인에 대한 대표적인 방법들이

있지만 여기서는 코사인 법칙과 벡터 연산을 이용한

2 개 이하의 관절에 대한 제한적이고 실용적인IK 를설명하겠습니다

사람의 팔과 다리 등이 대상이 됩니다( 어깨와 팔꿈치 )( 골반과 무릎 )

Page 38: [0528 석재호]게임을위한기초수학과물리

문 제 보 기문 제 보 기

흰색 벡터를 뼈라고 볼 때 빨간 관절이 어깨 , 허벅지 녹색 관절이 팔꿈치 , 무릎에 해

녹색은 실제로 회전 축이 1 개로 자유도가 제한되어 있지만 아니어도 문제에 크게

영향은 없습니다

Page 39: [0528 석재호]게임을위한기초수학과물리

문 제 보 기문 제 보 기

문제는 루트인 빨간 관절의위치 ( 골반 ) 와 타겟 점이 주어졌

을 때 무릎과 허벅지를 잘 구부려서

발이 타겟에 가도록 하는 것입니다

가 타겟입니다

Page 40: [0528 석재호]게임을위한기초수학과물리

Reach(Reach( 거리거리 ) ) 단계단계

먼저 거리를 맞추겠습니다

골반에서 타겟까지의 거리가 골반에서 발까지의 거리와 일치해야 합니다

무릎 각도를 조정하면 됩니다 일단 거리가 맞으면

그 다음 골반 을 돌려서 위치만 맞추면 되는 식입니다

Page 41: [0528 석재호]게임을위한기초수학과물리

Reach(Reach( 거리거리 ) ) 단계단계

골반과 타겟 간 거리가 d 일 때 무릎의 내각 @ 구하기

코사인 법칙 이용 : C = A + B - A * B * c os @

d = U + V - | | U | | * | | V | | * c os @ 본의 길이는 고정되므로 U 와 V 의 크기를 따로 저장해 서 쓰면

위 연산이 벡터가 아닌 부동소수점 실수 연산이 된다

2

- V ( 방향이 반 대 )

U

d

2 2

@

22 2

Page 42: [0528 석재호]게임을위한기초수학과물리

Reach(Reach( 거리거리 ) ) 단계단계

U 와 V 의 외적은 두 벡터에 수직입니다

외적 벡터를 회전축으로 삼고 구한 각도만큼 돌리면

아래 그림처럼 골반과 발 간 거리가

골반과 타겟간 거리와 동일해집니다

하지만 아직은 발이 타겟 위에 없네요

Page 43: [0528 석재호]게임을위한기초수학과물리

회전 단계회전 단계

남은 문제는 허벅지 관절을 회전시켜

발을 타겟에 올리는 것입니다

U 와 V 의 내각과 회전축을 구하면됩니다

외적을 이용한 회전각 구하기가 떠오르네요 축과 회전각 모두

구할 수 있습니다

U

V

Page 44: [0528 석재호]게임을위한기초수학과물리

회전 단계회전 단계

캐릭터가 발을 타겟에

엣지 있게 올렸습니다

Page 45: [0528 석재호]게임을위한기초수학과물리
Page 46: [0528 석재호]게임을위한기초수학과물리

구의 충돌구의 충돌

Page 47: [0528 석재호]게임을위한기초수학과물리

구의 충돌구의 충돌

충돌 판정이 아닌 충돌 반응에 대한 내용입니다

운동량 보존 , 운동에너지의 보존 두 식을 이용해 구의 충돌 이후 속도를 구합니다

Page 48: [0528 석재호]게임을위한기초수학과물리

운동량의 보존운동량의 보존

두 물체가 충돌하기 전과 후의 운동량의 총합은같다

운동량 P = m * v ( m : 질량 , v : 속도 )

P + P = P ’ + P ’ ₁ ₂ ₁ ₂

m * v + m * v = m * ₁ ₁ ₂ ₂ ₁ v’ ₁ + m * ₂v’ ₂

구하고자 하는 값이 v’ , v’₁ ₂ 두개 , 식이 하 나 더 필요

Page 49: [0528 석재호]게임을위한기초수학과물리

완전 탄성 충돌완전 탄성 충돌

운동에너지 = mv ½ ² 운동에너지 총합도 보존된다

m * v + m * v ½ ₁ ₁ ² ½ ₂ ₂ ² = m * ½ ₁ v’ ₁ + m * ² ½ ₂

v’ ₂ ² 운동량 보존 식과 연립하면

v’ , v’₁ ₂ 를 구할 수 있다

. . 수식이 화면의 대부분을 채우는 상황을 막기위해 꼭 필요한 부분만 보여드리겠습니다

Page 50: [0528 석재호]게임을위한기초수학과물리

완전 비탄성 충돌완전 비탄성 충돌

m * v + m * v ½ ₁ ₁ ² ½ ₂ ₂ ² = ( m + m ) * ½ ₁ ₂ v’ ²

충돌 이후 같이 운동하므로 구할 속도는 하나

Page 51: [0528 석재호]게임을위한기초수학과물리

탄성 계수탄성 계수

완전 탄성 충돌 식 정리m ( v - v‘ )₁ ₁ ₁ = - m ( v - v‘ )₂ ₂ ₂ // 운동량m ( v - v‘ )₁ ₁ ₁ ( v + v‘ )₁ ₁ // 운동에너지

= - m ( v - v‘ )₂ ₂ ₂ ( v + ₂v‘ )₂

위 두 식을 하나로 정리하면

- - - - - - - - - - - - - - - - - - - = 1

- ( v‘ - ₁v‘ )₂

( v - v )₁ ₂

Page 52: [0528 석재호]게임을위한기초수학과물리

탄성 계수탄성 계수

비탄성 충돌의 경우

- - - - - - - - - - - - - - - - = 0

이로부터 위 식이 탄성계수 e 를 구하는 식이라 는 것을

알 수 있다 ( e = [ 0, 1 ] )

- ( v‘ - ₁v‘ )₂

( v - v )₁ ₂

Page 53: [0528 석재호]게임을위한기초수학과물리

최종 속도최종 속도

탄성계수 식과 운동량 보존의 법칙을 연립해 최종적인 식을 구할 수 있다

v‘ = ₁- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - -

v‘ = ₂- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - -

- ( m - em ) v + ( 1 + e )₁ ₂ ₁m v₂ ₂

( m + m )₁ ₂- ( m - em ) v + ( 1 + ₂ ₁ ₂

e ) m v₁ ₁ ( m + m )₁ ₂

Page 54: [0528 석재호]게임을위한기초수학과물리

지금까지 구한 것은지금까지 구한 것은

하나의 선 상에서 일어난 충돌에 대한 속력 계산 . .

속도가 아닌 속력 , 이것만으로는 쓸 수 없습니다

2, 3 차원에서의 충돌 방향을 구할 수 있어야 합니다

… 너무 지겨우시겠지만 복잡한 산수는 끝났고 벡터 투영 연산만이 남아있을 뿐이니깐 조금만

더 . .

Page 55: [0528 석재호]게임을위한기초수학과물리

구의 반사 벡터 구하기구의 반사 벡터 구하기

2, 3 차원에서 두 구의 충돌을 1 차원 문제로 바꾸기

중점 연결 시 그에 수직인 성분은 충돌 영향 없다

수평 성분을 가지고 1 차원 충돌 문제를 풀면 해결

중점연결선 그 선에 수직

이동 벡터

Page 56: [0528 석재호]게임을위한기초수학과물리

구의 반사 벡터 구하기구의 반사 벡터 구하기

기존 벡터 – 투영한 벡터 + 계산된 1 차원 반사벡터

v v2

v1p

v2p

V1p’ V2p’

V1’

V2’

Page 57: [0528 석재호]게임을위한기초수학과물리

구의 반사 벡터 구하기구의 반사 벡터 구하기

투영 벡터인 v1p , v2p 는v1, v2 를 중심점 연결벡터에 투영해 구합니다n 이 정규화된 중심점 연결벡터라고 하겠습니다

이 투영된 벡터들을 아까 본 일차원 충돌 식에 대입하면 v1p’ , v2p’ 를 구할

수 있고 이를 정리하면

v1’ = v1 + ( v1p’ – v1p ) nv2’ = v2 + ( v2p’ – v2p ) n 이 됩니다

Page 58: [0528 석재호]게임을위한기초수학과물리

…참아주셔서 감사합니다