Grasshopper

[라이노 그래스호퍼 벡터] 챕터 07. 두 점 사이의 임의의 점 구하기

wwrww 2021. 4. 3. 13:11

 

챕터 06에서는 선분 위의 주어진 점 Q에 대하여 벡터와 변수 t를 이용해 선분 위의 모든 점을 정의했다면, 이번에 다룰 내용은 하나의 선분 위의 주어진 점 Q, P에 대하여 변수 t를 이용해 두 점 사이의 모든 점을 정의하는 것이다. 지난 내용과 변수 t의 범위가 다르니, 여기에 유의해서 내용을 살펴보면 좋겠다.

 

점 P 와 Q 사이의 모든 점 정의하기 Defining every point In between Point Q and P

위의 이미지 처럼 동일한 선분 위에 점 Q와 P 가 놓여있다. 이 두 조건을 가지고 두 점 사이의 모든 점을 정의하는 방법은 벡터 뺄셈 연산을 사용하는 것이다. 앞서 이야기했듯이 벡터 뺄셈은 빼는 순서에 따라서 하나의 점에서 다른 점으로 가는 벡터를 산출해낸다. 따라서 점 Q에서 점 P로 가는 벡터 v는 P - Q로 정의할 수 있다.

 

점 P - Q = Q 에서 P로 가는 벡터 v Point P - Point Q = vector v from Q to P

이렇게 만들어진 벡터 v의 길이 |v|는, 점 Q에서 P로 가는 벡터 구간의 전체 길이라는 것을 알 수 있다. 따라서 역시 앞서 다루었던 벡터 스칼라 개념을 가지고 오면, 0<t<1 인 변수 t를 벡터 v에 곱한다면 Q와 P 사이의 동일한 방향의, 임의의 길이를 가지는 벡터가 산출된다는 것을 알 수 있다.

 

벡터 스칼라 t 연산 Vector scalar t operation

위의 이미지처럼 0과 1사이의 변수 t를 벡터 t에 스칼라 연산하면, 점 Q와 P 사이의 임의의 점 M이 정의되며, 벡터의 길이도 점 Q와 P 사이의 전체 길이가 변수 t에 따라 줄어드는 것을 확인할 수 있다. 위 내용을 식으로 정리해보면 아래와 같다. 

# v = P - Q (v = vector from Q to P)
# a = vector form Q to random point M

a = t*v (0<= t <=1) 
M = Q + a (0<= t <=1) = Q + t*v

∴ M = Q + t(P - Q)

if t = 0:
    M = Q
if t = 1:
    M = P

식에서도 확인할 수 있듯이 임의의 점 M은 t의 값이 0일 경우 시작점인 Q와 같아지고, 1일 경우 도착점인 P와 같아진다.

 

if t = 0
if t = 1

 

 


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

 

https://youtu.be/C6 pEBqqYnWI