Generative Algorithm 014

3_7_ Data Lists

위의 예시에서 살펴보았듯이 algorithm을 이용한 모델링의 기초 중 하나는 바로 data list라는 것이다. 수, 점, 기하체 등 어떠한 종류의 data라도 data list가 될 수 있다. Logic 탭을 살펴보면 data list를 이용할 수 있는 여러 가지 컴퍼넌트들이 있다. 사용자가 지정한 index number의 데이터를 골라주거나 사용자가 지정한 범위 내의 index number를 가진 데이터들을 골라주는 컴퍼넌트가 있다.[1] 이것은 주어진 데이터 리스트를 우리가 원하는 design 목적에 맞게 바꿀 때 사용된다. 아래 예시를 살펴보자.

점으로 이루어진 data list가 있다. 이 중 가장 작은 x 좌표값을 가진 점을 골라내려고 한다. 위에서 언급한 것 처럼 <point decompose>를 이용하면 점의 좌표값을 알 수 있다. 이렇게 얻어진 모든 x값 중에서 가장 작은 x값을 알기 위해서 <sort list>를 이용할 수 있다. <sort list>는 어떤 data list를 각 데이터가 가진 특정 수치 값을 기준으로 오름차순으로 바꾸어 준다.  위 경우 점이 무작위로 <point> 에 의해서 정의되어 있으며 이 것을 <sort list>의 A에, 그리고 이 점들의 X 좌표를 K에 넣는다. 이 때 <sort list>가 돌려주는 값은 x 좌표값인 ‘수’ 가 오름차순으로 정리되어 L로 나오게 되며 A로는 이 ‘점’ 자체의 data list가 x좌표 값이 작은 점부터 오름차순으로 나타내어 준다. 이것에 <list item>을 이용하여 index number가 0인 값을 찾으면 위와 같은 점이 나온다.
 

삼각형 패턴 그리기 (Triangles)[2]

Data management 를 이용하여 실험을 계속 해보자. 복수의 점들이 grid의 형태로 놓여있다고 보자. 이것에 그림 3.19와 같은 삼각형을 그려보자. 이러한 개념은 mesh를 만들거나 surface를 panel화 할 때 매우 유용하다. 이것의 기본적인 개념을 알아보도록 하자.

먼저 점의 grid를 만들기 위해서는 <series>와 <point>가 필요하다. 그 다음으로는 이 점들 중에 필요한 점을 골라 선을 그리는 것이 중요하다. 즉 각 점에서 line이 시작하면 같은 행 바로 옆에 있는 점에 연결되어야 한다. 이 점의 같은 열에 있는 바로 위의 점을 제외하고 그 위의 점과 같은 행의 왼쪽 점과 연결한 뒤 처음 시작한 점으로 돌아와야 한다. 이를 위해서는 삼각형의 꼭지점을 각각의 data list로 만들면 된다. 즉 시작점의 data list와 같은 행 바로 옆 점들로 이루어진 data list, 그리고 시작점의 같은 열 바로 위의 점으로 이루어진 data list를 연결하여 삼각형을 그리는 것이다.

<series>와 <pt>에 의하여 그려진 grid 상의 점들 중 에서 삼각형의 첫 번째 점으로 사용 될 점의 리스트는 위에서 초록색으로 선택된 점과 같다. 이 점들은 원래 grid 상의 점 중들 중에서 가장 오른쪽 열 위에 있는 점을 제외한 점들이다. 처음 grid 상의 점들이 data list 내에서는 원점의 index number를 0으로 하고 그 오른쪽 점의 index number가 1이 된다. 데이터 리스트의 방향은 일반적으로 U 방향으로 가기 때문이다. 즉, grid의 행의 개수가 되는 <series>의 C 값의 배수에 해당하는 순서에 있는 점들을 제외해주면 된다. 이 경우 <series>의 C에 6이 들어가 있디 때문에 <pt>에 36개의 점이 생겼다. 이 C에 들어간 6을 <cull Nth>의 N에 연결하고 위 grid <pt>를 <cull Nth>의 N에 연결하면 6번째, 12번째, 18번째, 24번째, 30번째, 36번째 점을 제외한 점들의 data list를 얻을 수 있다.

삼각형을 그리기 위한 그 다음의 점의 리스트는 위와 같다. 위와 같은 점의 list는 <series>와 <pt>에 의해서 생긴 점의 data list를 <shift>를 이용하여 U 방향으로 한 칸 밀어낸 뒤 위에서 사용한 <cull Nth>의 N에 똑 같이 6을 넣어주면 된다. 그러면 기존 grid 점의 data list가 가장 첫 번째 점(rhinoceros 상의 원점)에 있는 점을 제외하고 시작하면서 그 이후 6의 배수의 순서에 있는 점들을 제외해주기 때문에 위와 같은 점의 리스트를 얻을 수 있다.

삼각형의 세번째 꼭지점에 해당하는 점은 위와 같다. 위는 grid 점의 list를 <shift>를 이용하여 6만큼 민 뒤에 (그러면 첫번째 열의 점이 제외된다.) 다시 이 data list 상에서 6의 배수에 해당하는 순서의 점들을 <cull Nth>를 이용하여 제외시켜주면 된다.

이제 각 점들을 양 끝점 A B를 인풋으로 하는 <line>으로 연결시켜주면 위와 같이 삼각형을 만들 수 있다.

<cull Nth>가 적용된 점들을 <line>을 이용하여 연결하였다.


<number slider>의 수를 조절하면 grid의 변화와 함께 삼각형 패턴이 자동적으로 적용되는 것을 볼 수 있다.


 
면을 mesh로 만드는 개념에 대해서는 이 후에 좀 더 살펴보도록 하겠다. 위 grasshopper definition의 경우 grid의 제일 위에 있는 열에도 line이 생기기 때문에 완변하가도 할 수는 없다. 하지만 data가 어떻게 생성되고 관리되어야 하는지는 명확하게 전달하고 있다.

[1] 역자 주: <list item>의 경우 지정한 index number를 가진 데이터를 골라주며 <sub list>의 경우 list에 domain 값을 주어 list index의 범위를 지정할 수 있다.

[2] 역자 주: 해당 챕터는 저자가 기술한 내용을 그대로 번역하기 보다는 내용을 좀 더 풀어서 설명하였다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s