Nomalrize 단위 벡터와 내적의 의미

2011. 5. 4. 14:35C# And Unity

1. 단위 벡터
   길이가 1인 벡터를 말한다. 주로 벡터의 방향을 나타내기 위해 사용합니다.
   (x,y,z) 벡터의 단위 벡터는
   length = sqrt(x^2+ y^2+ z^2)
   Normalrize Vector = (x/length, y/length, z/length) 가 됩니다.
   위의 x,y,z 값들은 1이하로 결과값이 나올겁니다. 즉 전체 길이에 대한  현재 축의 길이를 말하는 거겠죠.

   좌표계를 그려놓고 삼각함수를 생각한다면 이해가 갈것입니다.
   2d 에서는 x^2 + y^2 = z^2 이죠. 이걸 이해한다면 위 공식이 어떻게 나왔는지 감이 올겁니다.

   vec.Normalize()  : 현재 벡터값을 단위벡터 값으로 변경해 버립니다.
   Vector3 vec2 = vec.normalized();  : 기존 값은 유지한채로 단위벡터 를 리턴한다.


2. 벡터의 내적(Dot Product)
  
두벡터 사이의 길이비를 나타낸다.
    v1 = { a1,a2,a3 }, v2 = {b1,b2,b3}
    v1*v2 = {a1*b1, a2*b2, a3*b3}     => |v2|* |v1|cos@
    : 교환 법칙 성립한다.

loat dot = Vector3.Dot ( v1, v2 );
float angle = Math.Acos ( dot );

   =>두 벡터가 이루는 각을 알지 못하고 각 벡터 좌표값을 알고 있을때, 이 Dot한 값이 양수면
      그 각은 0~90, 270 ~360도 사이에 있다.
      이 dot 값은 Cos@ 곡선을 따른다.

예> 나의 위치(A), 상대방 위치(B)를 알고 있다면, 이 AB의 내적을 구한다.
      이값이  양수면 상대방은 전면에 있고 ( 0-90도, 270-360도)
                 음수면 상대방은 후면에 있다. (90-270)