본문 바로가기

grasshopper/개발

[grasshopper]욕실 타일링

오랜만에 글라스호퍼를 다시 하려니 기억도 잘 안 나고 알고리즘 짜내는 것도 잘 안 되는군요~


 

아시는 분들은 다 아시겠지만 컴퍼넌트로 로직을 짜게 되면 캔버스가 복잡해지는 현상이 생깁니다.


 

 PYTHON으로 만들어 보았습니다.






글라스호퍼에서는 VB 와 C#을 기본으로 제공하지만 PYTHON은 다운을 받아서 설치를 해야 합니다. 기회가 되면 다음에 파이썬을 설치하는 포스팅을 해보도록 하겠습니다.

 

사진에서 보이는 타일 구하기 컨퍼넌트가 파이썬으로 만들어진 겁니다.

 

하나의 컴퍼넌트로 되어서 깔끔해 보입니다. 알고리즘을 짜면서 느끼는 점은 아직 구현이 안 되는 것들이 많이 있습니다. 저의 실력 부족이죠.

예를 들자면 라이노에 글씨를 나타내는 것이 힘듭니다. 방법을 찾아서 해보긴 했지만 처리해야 될 데이터가 많아지면 느려지는 현상이 생겨서 포기했습니다.

그냥 Human에 있는 컴퍼넌트를 사용하여 처리했습니다. 훨씬 빠르거든요

처음 프로그래밍을 시작할 때는 모든 것을 프로그래밍으로 만들어보려고 했지만 시간도 낭비인거 같고 효율적이지 못해서 필요한 부분만 프로그래밍 하는 방향으로 바꿨습니다.

다음에 실력이 더 많이 쌓이면 모두 프로그래밍으로만 구현 해볼 생각입니다. 아직은 내공이 부족합니다.

 

만들어진 프로그램의 기능은 다음과 같습니다.

타일링을 하는 기준점을 잡으면 그 기준을 토대로 타일링이 됩니다.

좌하단에 기준을 잡을때입니다.

우상단에 기준을 잡을 때입니다.

 

-이 기능이 제일 힘들었습니다. 좌하단에 기준점을 잡을 때와 우상단에 기준점을 잡아줄 때 방향이 달라지는 것을 알고리즘화 시키는 것이 쉽지 않았습니다.

좌하단에 기준을 잡아주고 알고리즘을 짜면 우상단으로 기준을 바꾸면 줄눈이 하나 겹치면서 기준이 잡혀서 포기하려 했었습니다. 잠시 강아지 산책을 하면서 알고리즘이 생각이 나서 겨우 풀었습니다.

문제가 안 풀릴 땐 쉬는 것이 도움 될 때가 많습니다.

타일 사이즈, 욕실의 외곽두께, 줄눈간격, 글자 사이즈 등등 을 조절할 수 있습니다.

사이즈 변경1

사이즈 변경2

 

온장 타일과 자투리 타일 수량을 산출해줍니다.

갈라파고스를 사용하거나 다른 알고리즘을 사용하면 온장을 적게 사용하는 방법도 찾아낼 수 있을거 같습니다.

사각 타일만 적용이 되어서 디자인된 패턴은 불가능합니다.

요즘 디자인된 패턴을 많이 사용하시는데 그건 다음에 생각해 봐야겠습니다.^^