Search
Duplicate
📦

(3) 벡터의 연산!

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
42seoul
Scrap
태그
벡터연산
9 more properties
minirt 뽀개기!

벡터와 스칼라의 연산

1) 스칼라(Scalar)란?

지금까지 벡터에 대해 배워 보았다.
스칼라란? 방향은 가지지 않고 크기만 가지는 성분. 즉, 단지 크기만 있는 물리량이다.

2) 벡터 x 스칼라

벡터와 스칼라의 곱셈 연산을 통해 벡터의 크기를 조정할 수 있다. 아래의 그림을 보자!
벡터 U = (2,1)에 2를 곱해서 (4, 2)의 벡터를 얻었다. 곱한 스칼라만큼 벡터의 크기가 변한 것을 알 수 있다.
즉, 우리는 벡터와 스칼라의 곱셈은 아래와 같이 일반화 할 수 있다.
Uk=(x×k,y×k)U * k = (x \times k, y\times k)
만약 스칼라의 값이 음수이면 어떻게 될까?
아래의 사진을 보면 벡터에 음수인 스칼라 값을 곱하면 방향이 반대가 되는 것을 확인할 수 있다. 즉, 벡터에서의 마이너스는 벡터의 방향을 나타내는 것이다.

3) 어디서 사용할까?

우리는 이런 연산을 프로그램에서 어떻게 사용할 수 있을까? 만약 게임이라고 생각해보자. 캐릭터의 위치 벡터 A가 있고 이동방향 B와 이동거리(스칼라) t가 있다면 최종적으로 캐릭터가 이동할 위치P 를 구할 수 있다.
P=A+t×BP = A + t \times B

벡터와 벡터의 연산

벡터와 벡터도 많은 연산이 가능하다. 덧셈과 뺄셈은 물론 내적, 외적 등 다양한 연산들이 존재한다. 가장 많이 쓰이고 벡터 연산의 기반이 되는 덧셈과 뺄셈에 대해 알아보자!

1) 벡터의 분해

우선 벡터의 연산에 대해 이해하기 전 벡터의 분해부터 공부해보자!
우리가 위의 벡터 A를 분해한 두 벡터로 표현할 수 있는 이유는 바로 분해한 성분들을 활용해서 A벡터의 크기와 방향, 시작지점을 모두 구할 수 있기 때문이다.
A의 크기는 피타고라스 법칙으로 간단하게 구할 수 있다.
A의 방향은 벡터 B, C를 변으로하는 평행 사변형을 그었을때, 벡터의 꼬리가 모여있던 부분과 새로 만들어진 평행사변형의 꼭지점을 이은 방향이다.
시작점은 당연히 분해한 두 벡터의 꼬리부분이다.
따라서 우리는 A라는 벡터를 간단하게 축위의 벡터를 활용해 표현할 수 있다.

2) 벡터의 덧셈

벡터의 덧셈은 그림으로 보면 엄청 간단하다.

어디서 사용할까?

좌표를 이동시킬 때 많이 사용된다!

3) 벡터의 뺄셈

A벡터 - B벡터는 A벡터 + (-B)벡터와 같다! -B벡터는 이전에 공부한 역벡터 이다.

4) 벡터의 내적(dot product)

벡터의 내적은 두 벡터의 곱하기 정의 중 하나로 (다른 하나로는 외적 이 있다) 벡터를 마치 수처럼 곱하는 개념이다. 따라서 결과 값도 스칼라 값이다.
프로그래밍에서는 두 벡터의 내적을 어떻게 계산할까?
대체로 프로그래밍에서는 벡터의 성분을 (x, y)로 가지고 있다. 따라서 두 벡터의 내적을 구하는 식은 아래와 같다.
AB=A.x×B.x+A.y×B.yA * B = A.x \times B.x + A.y \times B.y
벡터의 내적은 아래와 같이 . 을 이용해서 표현한다!

내적을 구하는 이유?

그렇다면 우리는 왜 내적을 구해야 할까?
우리는 내적을 활용해서 두 벡터 사이각의 cos값을 구할 수 있다. 그래픽스의 관점에서 본다면 두 벡터 사이의 각은 매우 중요하다!
minirt의 관점에서 보자! 아래 그림을 보면 우리가 구의 한 점을 바라본다고 생각하자! 그럼 우리는 해당 지점의 법선벡터에 해당하는 (2) 번 벡터와 우리 눈에서 나가서 한 점까지 향하는 (1)번 벡터를 찾을 수 있다.
우리는 이 두 벡터의 내적을 활용해서 두 벡터 사이의 cos값을 알 수 있다! 이때 두 각 벡터가 이루는 각의 크기가 둔각이라면 우리는 구를 밖에서 보는 것이라고 생각할 수 있다. 아래의 경우는 반대의 경우이다!
두벡터가 이루는 각은 두 벡터의 꼬리를 합쳤을 때 생성되는 내각이다!
아래 코사인 그래프를 보면 예각이면 cos값이 양수, 둔각이면 cos 값이 음수인 것을 알 수 있다!
즉, 두 벡터의 내적의 결과가 양수이면 두 벡터가 이루는 각이 예각, 음수이면 둔각인 것을 알 수 있다.

5) 벡터의 외적

두 벡터의 외적의 결과는 두 벡터에 모두 수직인 벡터이다! 즉 아래의 그림과 같다.
벡터의 내적은 일반 곱셈 연산인 x 를 이용하여 표현한다!
A×BA \times B

외적을 구하는 이유?

외적을 구하는 이유는 간단하다! 바로 법선벡터를 구하기 위해서이다!
법선벡터를 왜 구해야 하는지는 (2) 벡터에 대한 이해! 에서 미리 배웠다!
이제 우리는

5) 단위벡터를 활용한 벡터의 표현

프로그래밍에서는 단위벡터를 활용해서 방향벡터를 표현 하는 경우가 많다
즉 dir 벡터를 표현할 때, 단위벡터를 사용하는 것이다!
단위벡터를 계산하는 방법은 (2) 벡터에 대한 이해! 에 나와있다!
벡터의 연산에 대해 조금 더 자세히 알고싶다면 아래 페이지를 방문해보자!

Reference