TECH 으로 돌아가기
TECH HACKER NEWS 2026.10.31 22:08 7분 읽기 32 READS

LaTeX로 꽃을 키운다? 코드로 꽃을 그려내는 절차적 생성 프로젝트 Florilegium

LaTeX로 꽃을 키운다? 코드로 꽃을 그려내는 절차적 생성 프로젝트 Florilegium
SOURCE IMAGE · HACKER NEWS
LaTeX로 꽃을 키운다? 코드로 꽃을 그려내는 절차적 생성 프로젝트 Florilegium

무슨 일이 있었나요?

LaTeX 하면 보통 논문이나 수식 가득한 문서가 먼저 떠오르죠? 그런데 이 LaTeX로 꽃 그림을 생성하는 프로젝트가 GitHub에 올라왔어요. 이름은 Florilegium이에요. 라틴어로 '꽃을 모은 것'이라는 뜻이고, 중세와 르네상스 시대에 정교한 식물 세밀화를 모아 엮은 화첩을 가리키는 말이기도 해요. 이 프로젝트는 그런 화첩을 사람 손 대신 코드로, 그것도 LaTeX로 만들어보는 시도예요.

핵심 키워드는 절차적(procedural)이에요. 그림을 한 장씩 직접 그리는 게 아니라, 그림을 만드는 '규칙'을 코드로 짜두고 거기에 파라미터와 난수를 넣어서 실행할 때마다 다른 결과를 뽑아내는 방식이에요. 마인크래프트가 맵을 만들 때마다 다른 지형이 나오는 것과 같은 원리죠.

LaTeX로 어떻게 그림을 그려요?

LaTeX 생태계에는 TikZ와 그 바탕인 PGF라는 강력한 그래픽 패키지가 있어요. 좌표, 곡선, 도형을 코드로 적으면 벡터 그래픽으로 그려주는데, 논문 속 다이어그램이나 그래프를 그릴 때 많이 쓰죠. 여기엔 반복문(\foreach)과 수학 함수, 그리고 의외로 난수 생성 기능까지 있어요. 시드값을 고정하면 매번 같은 그림이 나오고, 시드를 바꾸면 다른 그림이 나와요. LuaLaTeX를 쓰면 문서 안에 Lua 스크립트를 넣어서 계산을 훨씬 편하게 할 수도 있고요.

사실 TeX 자체가 튜링 완전한 매크로 언어라서, 이론적으로는 어떤 계산이든 할 수 있어요. 물론 '할 수 있다'와 '하기 편하다'는 전혀 다른 얘기지만요.

꽃을 코드로 만드는 원리

식물을 절차적으로 만들 때 자주 쓰는 고전적인 아이디어가 몇 가지 있어요. 이 프로젝트가 정확히 어떤 기법을 조합했는지는 저장소에서 직접 확인해 보시고, 여기서는 이런 작업의 바탕이 되는 개념을 소개할게요.

첫째는 잎차례(phyllotaxis)예요. 해바라기 씨앗을 보면 나선이 촘촘하게 겹쳐 있죠? 씨앗을 하나 놓을 때마다 약 137.5도(황금각)씩 회전시키고, 중심에서의 거리를 순번의 제곱근에 비례하게 늘리면 그 패턴이 저절로 나와요. 코드로 치면 반복문 하나에 사인·코사인 몇 줄이면 충분해요.

둘째는 L-시스템(L-system)이에요. 헝가리 생물학자 아리스티드 린덴마이어가 고안한 방법인데요, 'F를 F[+F]F[-F]F로 바꿔라' 같은 문자열 치환 규칙을 몇 번 반복해요. 그런 다음 결과 문자열을 '앞으로 그려라', '왼쪽으로 돌아라' 같은 거북이 그래픽 명령으로 읽어서 그려요. 규칙 몇 개만으로도 꽤 자연스러운 줄기와 가지가 자라나요.

셋째는 베지에 곡선과 변형이에요. 꽃잎 하나를 베지에 곡선으로 정의해 두고, 개수, 길이, 휘어진 정도, 색에 난수를 조금씩 섞어서 원형으로 배치하면 꽃 한 송이가 완성돼요. 여기서 중요한 건 적당한 무작위예요. 완벽하게 대칭인 꽃은 오히려 인공적으로 보이거든요.

업계 맥락: 제너러티브 아트의 계보

코드로 예술 작품을 만드는 제너러티브 아트는 역사가 꽤 길어요. 요즘은 Processing, p5.js, 셰이더 기반 도구를 많이 쓰고, 식물 생성 쪽에는 게임과 영화 업계에서 쓰는 SpeedTree나 블렌더의 지오메트리 노드 같은 전문 도구가 있어요. 이런 도구들에 비하면 LaTeX는 확실히 '굳이?' 싶은 선택이에요.

그런데 그 '굳이'가 바로 이 프로젝트의 매력이에요. LaTeX로 만든 결과물은 해상도와 상관없이 깨끗한 벡터 PDF로 나오고, 인쇄용 타이포그래피와도 자연스럽게 어울려요. 말 그대로 식물 화첩 한 권을 코드로 조판할 수 있는 거죠. 도구를 원래 용도와 다르게 써서 뜻밖의 결과를 만들어내는 해커 정신이 잘 보이는 사례예요.

한국 개발자에게 주는 시사점

당장 업무에 쓸 일은 없겠지만 배울 건 꽤 있어요. 대학원생이나 연구자라면 TikZ를 잘 다루면 논문 그림 퀄리티가 확 올라간다는 걸 아실 거예요. 이런 프로젝트 코드를 뜯어보면 TikZ의 좌표 변환, 반복문, 난수 활용을 재밌게 익힐 수 있어요. 절차적 생성 기법 자체도 게임 개발, 데이터 시각화, 테스트 데이터 생성 같은 실무에서 그대로 쓰이는 개념이고요.

무엇보다 사이드 프로젝트의 좋은 본보기예요. 거창한 서비스가 아니어도 '이 도구로 이것까지 될까?' 하는 호기심 하나가 멋진 결과물로 이어질 수 있거든요. 이번 주말에 p5.js든 TikZ든 열어서 해바라기 하나 그려보는 거, 어떠세요?

마무리

한 줄 정리: Florilegium은 문서 조판 도구인 LaTeX를 캔버스 삼아, 몇 가지 수학 규칙과 적당한 무작위로 꽃을 그려내는 코드 예술 실험이에요.

여러분은 어떤 도구를 원래 용도와 전혀 다르게 써본 적이 있나요? 엑셀로 그림 그리기, CSS로 게임 만들기 같은 '굳이' 프로젝트 이야기를 들려주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/kevinraymond/florilegium
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...