Grasshopper

[라이노 그래스호퍼 벡터] 챕터 03. 벡터 기본 연산 - 벡터 스칼라/ 벡터 덧셈/ 벡터 뺄셈

wwrww 2021. 3. 26. 23:02

 

(1) 벡터 기본 연산

 

사칙 연산 부호를 이용하는 벡터의 기본 연산으로는 벡터 스칼라, 덧셈, 뺄셈이 있다. 뒤이어 이 세 가지에 대해 자세히 다루겠지만, 셋을 비교해보자면 아래 표와 같다. 

 

분류 벡터 스칼라 벡터 덧셈 벡터 뺄셈
연산 부호 *
(c.f. amplitude 는 벡터를 특정 길이로 고정시키는 연산)
+ -
재료 v, k(계수) v₁, v v₁, v
기능 벡터 길이를 계수 k만큼 늘이고 줄임 평균 벡터
(c.f. |v| = |v| 평균 벡터 + 방향)
From vector To vector
연산 순서 상관 없음

kv = vk

상관 없음

v₁ + v₂ = v₂ + v₁

상관 있음

v₁ - v 는 from v, to v 인 v₃
v₁ - v 은 from v₁, to v 인 v₄

 

(2) 벡터 스칼라

 

벡터 스칼라는 벡터를 특정 계수배하는 것을 뜻한다. 따라서 벡터 스칼라 연산을 위해서는 벡터 v와 계수 k, 두 재료가 필요하다. 벡터 스칼라는 벡터 v와 방향은 똑같으면서도 크기가 더 큰 벡터를 만들 때 사용한다. 예를 들어 벡터 v = <1, 5, 0>이라고 할 때, 벡터 v를 2 스칼라 한 벡터 v' = <2, 10, 0> 이 되며, 그 길이는 벡터 v의 2배이다. 아래 그래스호퍼 이미지를 보자.

 

벡터 스칼라 Scalar vector

위 이미지에서 scalar 이전 벡터와 이후 벡터의 길이를 비교해보면, 이전 벡터의 길이는 약 5.1, 이후 벡터의 길이는 20.4로 의도했던 대로 약 5배가 된 것을 확인할 수 있다. 벡터의 크기는 다르지만, 벡터의 방향은 정확히 일치한다.

 

벡터 스칼라 vs 벡터 amplitude Scalar vector vs Amplitude vector

 

그래스호퍼에는 벡터 Amplitude 라는 컴포넌트가 있는데, 이 컴포넌트와 백터 스칼라를 혼동할 가능성이 있다. 그러나 이 둘은 엄연히 다른 기능을 하는 컴포넌트이다. 벡터 스칼라는 앞서 확인했던 것처럼 곱하기(*) 연산자를 사용해서 벡터의 길이를 계수배하지만, 벡터 amplitude는 별도의 벡터 컴포넌트로 벡터를 특정 길이로 고정시킨다.

 

위 이미지에서 초록색 벡터는 길이가 약 20.4 였던 벡터의 길이를 주어진 값 10으로 고정시킨 벡터이다.

 

(3) 벡터 덧셈

 

벡터 덧샘은 두 벡터를 재료로 사용한다. 예를 들어 벡터 v₁ = <4, 0, 0> 벡터 v₂ = <0, 2, 0>이라고 할 때, 벡터 v₁+v₂ 는 각 벡터의 요소를 x, y, z 끼리 더한 <4, 2, 0> 이 된다.

 

벡터 덧셈 Vector addition

벡터 덧셈이 특별해지는 지점은, 두 벡터의 평균 벡터를 만들어주기 때문이다. 위 그래스호퍼 이미지에서 분홍색 벡터와 하늘색 벡터를 더한 초록색 벡터는 정확히 두 벡터의 평균 벡터이며, 조금 더 구체적으로 말한다면 벡터 v₁ 만큼 이동한 지점에서 다시 벡터 v 만큼 이동한 지점으로의 벡터 v₃ 인 것이다.

 

그런데, 벡터 덧셈이 더 특별해질 때가 있는데, 바로 재료가 되는 두 벡터의 길이가 같을 때이다. 길이가 같을 때 덧셈 벡터에는 어떤 일이 일어나는 지 살펴보자.

 

 

유닛 벡터 덧셈 Unitized vector addition

우리는 앞서 길이가 같은 두 벡터를 만드는 방법을 다뤘다. 바로 벡터의 길이를 1로 만들어주도록 벡터 유닛화를 하는 방법이다. 앞선 예시의 두 벡터 v₁v 의 유닛 벡터를 만든다면, 위의 이미지와 같이 두 벡터의 길이가 1로 같아지며, 두 벡터의 합인 벡터 v₃ 는 벡터 v₁v 의 평균 벡터일 뿐만 아니라, 각각의 벡터와 이루는 각이 같아진다는 사실을 확인할 수 있다.

 

따라서 그래스호퍼 모델링상 우리가 두 벡터 사이의 평균 벡터를 구할 뿐 아니라, 두 벡터와 이루는 각이 정확히 같은 벡터를 구하고자 할 때, 유닛화 된 벡터 덧셈을 하면 된다.

 

(4) 벡터 뺄셈

 

벡터 기본연산의 마지막인 벡터 뺄셈이다. 벡터 뺄셈은 덧셈과 다르게 빼는 순서에 따라 결과 벡터가 달라진다. 아래 이미지의 벡터 v₁ 은 <4, 0, 0>, v 는 <0, 2, 0>이다. 이 두 벡터를 재료로 뺄셈 연산을 했을 때 벡터 v₁ - v 는 초록색 벡터로 <4, -2, 0>, v - v₁ 은 노란색 벡터로 <-4, 2, 0>이다. 

 

벡터 뺄셈 Vector subtraction 

결과를 살펴보면 뺄셈의 순서에 따라서 두 벡터의 방향이 완전히 달라지는 것을 확인할 수 있다. 결과를 서술해보자면, 초록색 벡터는, 벡터 v₁ 만큼 이동한 지점에서 벡터 v 의 음의 방향으로 이동한 지점으로의 벡터이다. 반대로 노란색 벡터는, 벡터 v 만큼 이동한 지점에서 벡터 v₁ 의 음의 방향으로 이동한 지점으로의 벡터인 것이다.

 

따라서 벡터 뺄셈 연산에서 두 벡터의 위치를 바꾼 결과는, 벡터의 크기는 같지만, 방향은 반대인 벡터를 만들어내는 것을 알 수 있다.

 

 

벡터 평행 이동  Vector parallel move

그런데, 벡터 뺄셈에서 재밌는 지점이 있다. 우리가 앞서 만든 벡터 v1 - v2, 초록색 벡터의 시작점을 분홍색 벡터 v2의 도착점으로 평행이동시켜보는 것이다. 그럼 위의 이미지와 같이 벡터 v2 의 도착점에서 벡터 v1의 도착점으로 가는 벡터가 만들어지는 것을 확인할 수 있다.

 

벡터 뺄셈의 이러한 성질은 우리가 공부한 위치 벡터를 떠올리면, 점 좌표 뺄셈의 특징으로까지 확장시킬 수 있다. 

 

위치 벡터 만들기 Making position vector

시작점이 원점이고, 도착점이 각각 좌표평면 상에서 점 A, 점 B인 두 개의 위치벡터를 만들었다고 가정해본다. 벡터 뺄셈은 두 벡터의 도착점 사이를 가는 벡터를 만든다. 그런데, 위치벡터의 특징은 벡터의 X, Y, Z 구성 요소와 도착점의 좌표가 같다는 것이었다. 따라서 좌표 A 와 좌표 B의 뺄셈 또한 좌표 A와 B 사이를 가는 벡터를 만들어낸다는 사실을 알 수 있다.

 

이는 그래스호퍼 모델링 시 우리가 만약 두 점의 좌표를 알 때, 단순히 두 점의 뺄셈 만으로도 두 점 사이의 벡터를 구할 수 있고, 두 점의 상대적인 위치를 파악할 수 있다는 것을 의미한다.

 

하지만, 유의해야할 지점이 있다. 바로 벡터 뺄셈이 연산의 순서에 영향을 받기 때문에 두 점 사이의 뺄셈도 각각 만들어내는 벡터가 다르다는 것이다. 

 

B 에서 A 로 가는 벡터 Vector from B to A

위 이미지는 점 A 에서 점 B를 뺀 경우이다. 이 연산의 결과로 산출되는 벡터는 점 B를 시작점으로 하고,  점 A를 도착점으로 하는 벡터이다.

Point A - Point B = vector From B To A

 

A 에서 B 로 가는 벡터 Vector from A to B

 

반대로 점 B 에서 점 A를 빼보자. 이 연산의 결과로 만들어지는 벡터는 점 A를 시작점으로 하고, 점 B를 도착점으로 하는 벡터이다.

Point B - Point A = vector From A To B

 

이처럼 벡터 뺄셈은 연산 순서에 따라서 시작점과 도착점으로 하는 벡터가 다르게 산출되기 때문에 연산시 원하는 시작점과 도착점을 미리 생각해두고, 이에 맞는 연산을 하는 것이 중요하다.

 

 


* 본 포스트는 Raja Issa의 Essential Mathematics for Computational Design 문서와 유튜브 영상을 참고, 공부하여 작성하였습니다.
* Raja Issa 의 영상은 하단 링크를 참고해주세요.

 

https://youtu.be/C6 pEBqqYnWI