'Programing/수학'에 해당되는 글 4건

  1. 2012.05.17 벡터의 길이, 단위 벡터
  2. 2012.05.16 사이각 구하기
  3. 2012.05.16 cos
  4. 2012.05.16 반사벡터, 굴절 벡터, 미끄름 벡터

벡터의 길이

 

 

사진 출처 : 최신 선형 대수 ( 교보 문고 )

 

이차원의 벡터의 길이

sqrt( Ax * Ax  + Ay * Ay )

 

삼차원의 벡터 길이 z추가

sqrt( Ax * Ax  + Ay * Ay + Az * Az )

 

n차원의 벡터의 길이는

sqrt( Ax * Ax  + Ay * Ay + Az * Az ...  + An * An )

 

모든 축의 값을 제곱으로 곱하기 때문에

 

벡터의 길이는 양수만 나옴

 

 

 

 

단위 벡터

 

단위 벡터는 벡터의 길이가 1이다.

 

단위 벡터 만드는 방법은 벡터의 길이만큼을 벡터에 나눠 주면 된다.

 

단위 벡터 = 벡터 / 벡터의 길이

 

이 공식 대로 하면 된다.

 

예) (2,2,2)의 벡터를 단위벡터로

 

우선 길이를 구하자

sqrt( Ax * Ax  + Ay * Ay + Az * Az )

2 * 2 + 2 *2 + 2 * 2 = 12

sqrt(12) = 3.46410

길이가 4가 나온다.

(2,2,2) / 3.46410 = ( 0.57735, 0.57735, 0.57735 )

(2,2,2) 의 단위벡터 값은 ( 0.57735, 0.57735, 0.57735 )

'Programing > 수학' 카테고리의 다른 글

사이각 구하기  (0) 2012.05.16
cos  (0) 2012.05.16
반사벡터, 굴절 벡터, 미끄름 벡터  (0) 2012.05.16
Posted by 부우산사나이
:

사이각 구하기

Programing/수학 2012. 5. 16. 18:42 |

1 ) A · B = Ax * Bx + Ay * By + Az * Bz

2 ) A · B = ( A.Length * B.Length ) * cos(각도)

 

A와 B 벡터 내적을 표현 할 수 있는 식 두가지

 

즉 Ax * Bx + Ay * By + Az * Bz  =  ( A.Length * B.Length ) * cos(각도)

이렇게 표현 할수 있다.

 

내가 알고 싶은 것은 사이각 이므로

 

오른쪽에 있는 각도만 빼고 다 왼쪽으로 넘겨 버리면 된다.

 

Ax * Bx + Ay * By + Az * Bz  = A · B 이므로

acos( A · B /  ( A.Length * B.Length ) ) = 사이각

 

acos( A · B /  ( A.Length * B.Length ) ) 이 식을 이용하면 사이각을 구할 수 있다.

 

그리고 두 벡터가 노말라이즈가 된 벡터들이라면 acos( A · B ) 이렇게만 해도 된다.

 

하지만 이 식은 0 ~ 180 도 사이각만 알 수 있다.

 

0 ~ 360 도나 0 ~ 180, 0 ~ -180을 알고 싶을 때는 어떻게 하면 될까라는 궁금증이 생기게 되는데

 

 

 

 

 

A,B,C 벡터가 있다.

 

A와 B 의 사이각

A와 C 의 사이각

acos( A · B /  ( A.Length * B.Length ) ) 이 식에 대입하면 둘다 라디안 1.57값이 나오게 된다.

왜냐하면 cos에서  90도나 270도나 0이 나오기 때문이다. acos(0)을 넣으면 뱉아 내는 값이 1.57이다.

R = acos( A · B /  ( A.Length * B.Length ) )

Ax * By - Ay * Bx >= 0 ? R : -R

이렇게 z축 투영시키고 이차원 외적으로 구하면 0보다 크면 그냥 90도 0보다 작으면 - 90도 값이 나오게된다.

아니면

Ax * By - Ay * Bx >= 0 ? R : 360 - R

이러게하면 90도 270도가 나온다.

 

'Programing > 수학' 카테고리의 다른 글

벡터의 길이, 단위 벡터  (0) 2012.05.17
cos  (0) 2012.05.16
반사벡터, 굴절 벡터, 미끄름 벡터  (0) 2012.05.16
Posted by 부우산사나이
:

cos

Programing/수학 2012. 5. 16. 15:26 |

 

 

 

이 그래프하나로 설명된다. 쉽게 이해 할려고 라디안 되신 각도로 표시했다.

'Programing > 수학' 카테고리의 다른 글

벡터의 길이, 단위 벡터  (0) 2012.05.17
사이각 구하기  (0) 2012.05.16
반사벡터, 굴절 벡터, 미끄름 벡터  (0) 2012.05.16
Posted by 부우산사나이
:

정반사는 입사벡터와 반사벡터의 크기가 같고, 입사각과 반사각의 크기가 같은것을 말한다.

Fig.1 을 보면 입사벡터 P 와 법선벡터 n 이 주어졌을때,
반사벡터 R 은 벡터 P 와 크기가 같고, 입사각과 반사각이
같음을 확인할 수 있다.
여기서는 Pn 만으로 반사벡터 을 구하는 방법을 알아보자.



 

 
우선, 입사 벡터 P 의 역벡터 -Pn 의 연장선상에 투영시켜
투영벡터 n(-P·n) 를 구한다.





입사 벡터 P 의 시작 위치를 원점에 위치시키고, 여기에 n(-P·n) 를 더하면, 입사면에 투영된 벡터의 위치를 구할수 있다.

Fig. 3 을 보면, 입사벡터 Pn(-P·n) 를 1번 더하면, 입사면에 투영된
위치를 구할 수 있고, 2번 더하면  반사벡터 R 을 구할 수 있음을
알수 있다.

결국, 반사벡터 R
R = P 2n(-P·n)

 

출처 : http://toymaker.tistory.com/3 

 

이거를 기반으로 생각했을 땐

 

굴절 벡터는

= P + ( 1 ~ 0.00001 )n(-P·n)

 

 

미끄럼 벡터는

S = P + n(-P·n)

 

 

 

 

 

'Programing > 수학' 카테고리의 다른 글

벡터의 길이, 단위 벡터  (0) 2012.05.17
사이각 구하기  (0) 2012.05.16
cos  (0) 2012.05.16
Posted by 부우산사나이
: