(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 이전 벡터와 이후 벡터의 길이를 비교해보면, 이전 벡터의 길이는 약 5.1, 이후 벡터의 길이는 20.4로 의도했던 대로 약 5배가 된 것을 확인할 수 있다. 벡터의 크기는 다르지만, 벡터의 방향은 정확히 일치한다.
그래스호퍼에는 벡터 Amplitude 라는 컴포넌트가 있는데, 이 컴포넌트와 백터 스칼라를 혼동할 가능성이 있다. 그러나 이 둘은 엄연히 다른 기능을 하는 컴포넌트이다. 벡터 스칼라는 앞서 확인했던 것처럼 곱하기(*) 연산자를 사용해서 벡터의 길이를 계수배하지만, 벡터 amplitude는 별도의 벡터 컴포넌트로 벡터를 특정 길이로 고정시킨다.
위 이미지에서 초록색 벡터는 길이가 약 20.4 였던 벡터의 길이를 주어진 값 10으로 고정시킨 벡터이다.
(3) 벡터 덧셈
벡터 덧샘은 두 벡터를 재료로 사용한다. 예를 들어 벡터 v₁ = <4, 0, 0> 벡터 v₂ = <0, 2, 0>이라고 할 때, 벡터 v₁+v₂ 는 각 벡터의 요소를 x, y, z 끼리 더한 <4, 2, 0> 이 된다.
벡터 덧셈이 특별해지는 지점은, 두 벡터의 평균 벡터를 만들어주기 때문이다. 위 그래스호퍼 이미지에서 분홍색 벡터와 하늘색 벡터를 더한 초록색 벡터는 정확히 두 벡터의 평균 벡터이며, 조금 더 구체적으로 말한다면 벡터 v₁ 만큼 이동한 지점에서 다시 벡터 v₂ 만큼 이동한 지점으로의 벡터 v₃ 인 것이다.
그런데, 벡터 덧셈이 더 특별해질 때가 있는데, 바로 재료가 되는 두 벡터의 길이가 같을 때이다. 길이가 같을 때 덧셈 벡터에는 어떤 일이 일어나는 지 살펴보자.
우리는 앞서 길이가 같은 두 벡터를 만드는 방법을 다뤘다. 바로 벡터의 길이를 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>이다.
결과를 살펴보면 뺄셈의 순서에 따라서 두 벡터의 방향이 완전히 달라지는 것을 확인할 수 있다. 결과를 서술해보자면, 초록색 벡터는, 벡터 v₁ 만큼 이동한 지점에서 벡터 v₂ 의 음의 방향으로 이동한 지점으로의 벡터이다. 반대로 노란색 벡터는, 벡터 v₂ 만큼 이동한 지점에서 벡터 v₁ 의 음의 방향으로 이동한 지점으로의 벡터인 것이다.
따라서 벡터 뺄셈 연산에서 두 벡터의 위치를 바꾼 결과는, 벡터의 크기는 같지만, 방향은 반대인 벡터를 만들어내는 것을 알 수 있다.
그런데, 벡터 뺄셈에서 재밌는 지점이 있다. 우리가 앞서 만든 벡터 v1 - v2, 초록색 벡터의 시작점을 분홍색 벡터 v2의 도착점으로 평행이동시켜보는 것이다. 그럼 위의 이미지와 같이 벡터 v2 의 도착점에서 벡터 v1의 도착점으로 가는 벡터가 만들어지는 것을 확인할 수 있다.
벡터 뺄셈의 이러한 성질은 우리가 공부한 위치 벡터를 떠올리면, 점 좌표 뺄셈의 특징으로까지 확장시킬 수 있다.
시작점이 원점이고, 도착점이 각각 좌표평면 상에서 점 A, 점 B인 두 개의 위치벡터를 만들었다고 가정해본다. 벡터 뺄셈은 두 벡터의 도착점 사이를 가는 벡터를 만든다. 그런데, 위치벡터의 특징은 벡터의 X, Y, Z 구성 요소와 도착점의 좌표가 같다는 것이었다. 따라서 좌표 A 와 좌표 B의 뺄셈 또한 좌표 A와 B 사이를 가는 벡터를 만들어낸다는 사실을 알 수 있다.
이는 그래스호퍼 모델링 시 우리가 만약 두 점의 좌표를 알 때, 단순히 두 점의 뺄셈 만으로도 두 점 사이의 벡터를 구할 수 있고, 두 점의 상대적인 위치를 파악할 수 있다는 것을 의미한다.
하지만, 유의해야할 지점이 있다. 바로 벡터 뺄셈이 연산의 순서에 영향을 받기 때문에 두 점 사이의 뺄셈도 각각 만들어내는 벡터가 다르다는 것이다.
위 이미지는 점 A 에서 점 B를 뺀 경우이다. 이 연산의 결과로 산출되는 벡터는 점 B를 시작점으로 하고, 점 A를 도착점으로 하는 벡터이다.
Point A - Point B = vector From B To A
반대로 점 B 에서 점 A를 빼보자. 이 연산의 결과로 만들어지는 벡터는 점 A를 시작점으로 하고, 점 B를 도착점으로 하는 벡터이다.
Point B - Point A = vector From A To B
이처럼 벡터 뺄셈은 연산 순서에 따라서 시작점과 도착점으로 하는 벡터가 다르게 산출되기 때문에 연산시 원하는 시작점과 도착점을 미리 생각해두고, 이에 맞는 연산을 하는 것이 중요하다.
* 본 포스트는 Raja Issa의 Essential Mathematics for Computational Design 문서와 유튜브 영상을 참고, 공부하여 작성하였습니다.
* Raja Issa 의 영상은 하단 링크를 참고해주세요.
'Grasshopper' 카테고리의 다른 글
[라이노 그래스호퍼 벡터] 챕터 06. 벡터와 선 방정식 (0) | 2021.04.03 |
---|---|
[라이노 그래스호퍼 벡터] 챕터 05. 벡터 연산 - 벡터 외적 (0) | 2021.04.02 |
[라이노 그래스호퍼 벡터] 챕터 04. 벡터 연산 - 벡터 내적 (0) | 2021.04.01 |
[라이노 그래스호퍼 벡터] 챕터 02. Position(위치) 벡터, Unit(단위) 벡터 (0) | 2021.03.25 |
[라이노 그래스호퍼 벡터] 챕터 01. 3D 모델링에서의 벡터 소개 (0) | 2021.03.24 |