본문 바로가기

Theory/Mathmatics

수학에서의 Scalar와 Vector

3D 개념을 이해하려면 3차원 세계에 geometric(기하학 인가..??) object를 표현하는 방법을 알아야 하는데 그 밑바탕이 되는 게 지금 할 것 들이에요.
   
  • scalar : scalar는 geometric 타입은 아니고 단순 수치를 의미.
  • point : 기본적인 3차원 상에서의 geometric object의 위치를 표현 하는 것. 3개의 축(x, y, z)에 의해서 표현.
  • vector : 물리적인 양과 방향을 함께 표현 하는 것.
       
간단하게 한줄 요약은 위와 같긴 한데, 이게 참 애매하게 아름다워요 :-D
   
scalar는 말 그대로 "양"을 표현하는 수치 입니다. 별다른 의미는 없어요. 단위가 어떻게 되던 간에 그 단위에 맞춘 것으로 나오게 되는거죠. 사과 5개에 scalar 값 2를 곱하면 10개가 되는거고, 거리 10cm에 scalar값 2를 곱하면 20cm가 되는거고..
   
point는 3차원상에서의 "위치"만을 의미 합니다. 우리가 어떠한 위치를 얘기 할 때에는 기준이 있어야 겠죠?
친구가 우리집에 오려고 하는데 제가 밖에 나가기가 귀찮아요. 그럼 전화로 집에 오는 길을 알려주겠죠? (아 뭐... 스마트폰에서 지도 전송 안하고 뭐하냐 이런 말 하지 마시고..ㄱ-ㅋ) "어, 지하철 2번출구 나와서 한 20미터 걸어오면 오거리 나오는데 거기서 1시 쪽 사거리로 15미터 정도 걸어오면 우리집이야" 라고 했다면, 정확히는 몰라도 대략적인 지도가 그려지겠죠?

   

3차원 상에서의 point도 마찮가지 입니다. 기준은 "원점"이 되는 것이고, 그 원점으로 부터 x, y, z축 각각을 얼마큼 가야 도달하는 "위치"가 point가 되는 것이죠.
   
아래의 그림에서는 점 p는 x축으로 1만큼, y축으로 1만큼, z축으로 1만큼 간 위치가 되는 것이죠.


   
vector는 방향과 길이를 가지고 있는 것입니다. 의미상 으로 의견이 좀 나뉘기는 하는데, 이 책에서 vector는 공간상에서 고정된 위치는 없다고 의미 하네요 :-D 예를 들어 두명의 사람이 서로 공을 같은 방향, 같은 힘으로 굴렸지만 공간상에서 사람이 겹쳐 있을 수는 없잖아요? 고로 도착하는 지점은 달라도 vector는 똑같다(identical)고 하는 겁니다.


(네 맞아요. 그림을 발로 그렸답니다 ㅠㅠ)
   
   
   
point, vector 그 어떤 것이던지 공식자체는 적용 되지만 일단은 서로 의미상으로 약간 다른 것이라고 생각하고 vector가 가진 성질에 대해서 설명 할게요.
  • vector magnitude(벡터의 규모(크기))
    표현은 절대 값을 씌운 모양으로 표현 합니다.

        
    벡터 A가 (x, y, z)를 의미한다면, 벡터의 크기는 아래와 같은 공식으로 적용이 됩니다.


       
  • vector normalization(벡터의 표준화)
    저는 그냥 노말라이제이션이라고 얘기하는데 말은 거창하지만 단위 벡터로 만드는 과정입니다. 단위벡터라는 것은 크기는 1이고 방향만 가지고 있는 벡터를 의미하는 것이죠. 실제로 크기는 scalar 값을 곱하는 것으로 지지고 볶을 수 있지만 방향 이라는 것은 잘못된 값을 가지고 있으면 고치기 힘든 부분이기 때문에 크기 자체보다는 방향성에 중점을 더 둔 것이에요.
       
    공식은 간단합니다. 벡터자체에 자신의 크기를 나누면 되는 것이죠. |A|는 scalar 값이기 때문에 나누기 연산이 가능하니까요 :-D  


       
  • vector additional(벡터의 덧셈)
    두 개의 서로 다른 벡터의 합입니다. 전제 조건은 서로 같은 차원의 벡터를 더해야 하는 것이죠(뺄셈도 마찮가지). 각 항을 서로 더해 주면 됩니다. 공식과 공간상에서의 모양은 다음과 같겠죠.

       
  • vector-scalar multiplication(벡터-스칼라의 곱)
    제가 밥로슨 아저씨는 아니지만 이 말이 절로 나오는 군요. "참 쉽죠?" :-D
     
    그냥 각 항을 곱해주면 됩니다.

       
    벡터에 스칼라 값을 곱해준 것은 의미상으로 크기가 조절이 되는 거에요. 원래 "벡터" 가 의미하는 것은 원점으로 부터 x축으로 a만큼, y축으로 b만큼, z축으로 c만큼 이동한 거~ 가 실질적인 의미 거든요. 근대 여기서 스칼라를 곱한다는 것은 s가 1이상이면 기존 이동했던 거에 s만큼 더 가는거고, 1보다 작으면 그만큼 덜 가라는 의미가 모든 축에 적용 되기 때문이죠. 그림으로 보시죠.


       
  • Dot product(점 곱???)
    네, 일명 내적(inner product)이라고 하는 닷프로덕인데 점곱 이렇게는 표현 안합니다. 뭐라 적어야 할지 몰라서...ㅋㅋ 일단 내적은 서로 같은 좌표 끼리의 곱을 의미 하는데요, 이건 두 벡터간의 각도를 구할 때 겁나 이용하게 됩니다. 공식은 아래와 같습니다. "·"을 이용해서 내적의 계산 기호를 나타냅니다.

         
    그럼 cos을 가지고 정리해 보죠.


        
    만약 A, B가 단위벡터라면? 그 크기는 모두 1이 됩니다. 따라서 아래와 같은 식을 도출해 낼 수 있죠.


       

    그럼 내적의 결과에 따라 다음과 같은 결론을 얻을 수 있습니다.

       
  • Cross product(외적)
    설명도 어렵고, 공식도 어려운 외적이네요. 외적은 결과값이 vector로 나오기 때문에 vector product(벡터 곱)라고 불리기도 하는데요, 중요한 것은 이 결과값이 두 벡터의 공통으로 수직하는 단위 벡터라는 것입니다. 외적의 연산 순서에 따라 방향이 바뀌게 되므로, 교환법칙이 성립하지 않는 것이죠.

     
    사진 출처 : http://ko.wikipedia.org/wiki/%EC%99%B8%EC%A0%81
       
    여기서 외적의 순서에 따라 방향을 결정한다고 했는데, a×b를 보게 되면, a부터 시작해서 b로 손을 감싸 안았을 때 엄지의 방향이 수직벡터의 방향을 나타내고, b×a를 보게 되면, b로 부터 시작해서 a로 손을 감싸 안았을 때 엄지의 방향이 수직벡터의 방향이 되는 겁니다.

     
       
    그림 그리기 빡세니까 역방향은 직접 해보세요 :-D
       
    공식은 아래와 같습니다만, 실제 계산할 때는 그 다음에 나온 식을 사용하세요.



       
    만약, 두 벡터가 서로 평행하다고 하면 두 벡터로 이루어지는 수직 벡터는 없으므로 외적의 값은 0이 나오게 됩니다:-D
       
       
참조 : OPENGL GAME PROGRAMMING(Foreword by Mark J.Kilgard)

'Theory > Mathmatics' 카테고리의 다른 글

변환(Transformation)  (0) 2011.12.15
행렬과 연산  (0) 2011.12.14