본문 바로가기
::public/수포자를 위한 게임 수학

백터의 내적과 외적

by 해맑은욱 2019. 11. 15.

*백터

;크기와 방향을 갖는 물리량.

*스칼라

;크기만 갖는 물리량.

 

2차원 좌표상에 점을 표시할때 일반적으로 x, y 두 개의 좌표를 P(x, y)라고 지정.
벡터란 원점을 기준으로 한 점.
벡터 V(x, y)를 표시할때 (0, 0) 에서 (x, y)의 방향을 가르키는 발.

*단위벡터

;크기가 1인 벡터

 

두 벡터 V(1, 1)와 V(2, 2)가 있을때 두 벡터는 크기는 다르지만 방향은 같다.

두 벡터를 크기는 무시하고 오직 방향만 계산하고 싶을때 단위 벡터를 만든다.

어짜피 단위 벡터의 크기는 1이니까,

벡터 V(x, y)가 있을때 벡터의 크기는 sqrt(x*x, y*y) 이다.

v = sqrt(x*x, y*y);

vx /= v;

vy /= v;

이때 벡터의 크기는 v = 1이 나와야 한다.

 

*벡터의 내적

;두 벡터의 면적. 벡터 사이의 각도를 구할때 사용한다.

float v;
 
// 먼저 두 벡터를 단위 벡터로 만든다.
= sqrt(Vector1.x*Vector1.x + Vector1.y*Vector1.y + Vector1.z*Vector1.z); 
Vector1.x /= v;
Vector1.y /= v;
Vector1.z /= v;
 
= sqrt(Vector2.x*Vector2.x + Vector2.y*Vector2.y + Vector2.z*Vector2.z);
Vector2.x /= v;
Vector2.y /= v;
Vector2.z /= v;
 
// 내적하기
float theta;
float degree;
 
theta = Vector1.x*Vector2.x + Vector1.y*Vector2.y + Vector1.z*Vector2.z;
 
theta = acos(theta);
 
degree = theta * (180 / 3.141592);
cs

 


*벡터의 외적

;두 벡터의 직각으로 지나는 벡터. 외적은 3차원의 공간에만 존재한다.

float n_x, n_y, n_z;
 
n_x = Vector1.y * Vector2.z - Vector1.z * Vector2.y;
n_y = Vector1.z * Vector2.x - Vector1.x * Vector2.z;
n_z = Vector1.x * Vector2.y - Vector1.y * Vector2.x;
cs

 

[출처] https://blog.goldface.kr/6

'::public > 수포자를 위한 게임 수학' 카테고리의 다른 글

역행렬  (0) 2019.11.15
행렬(matrix)  (0) 2019.11.15
백터의 내적(dot product)  (0) 2019.11.15
탄젠트(tangent)  (0) 2019.11.14
사인과 코사인(Cin & Cos)  (0) 2019.11.14