mirror of
https://github.com/Pomax/BezierInfo-2.git
synced 2025-08-29 11:10:38 +02:00
39
docs/chapters/preface/content.ko-KR.md
Normal file
39
docs/chapters/preface/content.ko-KR.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# 머리말
|
||||
|
||||
2D에 그림을 그리려면 보통 선을 사용하고, 선이라고 하면 직선과 곡선의 두 종류로 나뉩니다. 전자는 컴퓨터에게 그리기를 시킬 줄 안다면 쉽게 그릴 수 있습니다. 시작점과 끝점만 입력하면 짜잔! 직선이 나왔습니다. 어렵지 않죠.
|
||||
|
||||
하지만 곡선은 훨씬 까다롭습니다. 손그림으로는 곡선 그리기가 그렇게 쉬울 수 없었겠지만, 컴퓨터는 곡선을 어떻게 그릴지 기술하는 수학적 함수 없이 곡선을 그릴 수 없다는 제한이 있습니다. 실은 직선을 그릴 때조차도 함수가 필요하지만, 어차피 직선의 함수는 간단하니 컴퓨터를 사용할 때는 보통 이 사실을 무시합니다. 직선이든 곡선이든 모든 선은 "함수"입니다. 그러나 선 그리기에 함수가 필요하기에, 빠르게 계산할 수 있고 컴퓨터로 그렸을 때 보기도 좋은 함수를 만들어야 할 필요성이 생깁니다. 이런 함수는 여러 종류가 있는데, 이 글에서 다룰 것은 이 중 많은 주목을 받고 곡선을 그릴 수 있으면 어디서나 쓰이는 것, 바로 베지에 곡선입니다.
|
||||
|
||||
베지에 곡선이라는 이름은 이 곡선이 설계 작업을 하기에 좋다고 세상에 알린 [피에르 베지에](https://en.wikipedia.org/wiki/Pierre_B%C3%A9zier)의 이름을 땄지만(1962년에 르노 소속으로서 연구 결과를 발표함), 베지에가 이 곡선을 "발명"한 최초의, 혹은 유일한 사람은 아닙니다. 베지에 곡선을 처음 발견한 사람은 1959년에 시트로엥에서 일하면서 이 곡선의 성질을 연구하고 이 곡선을 그리는 정말 우아한 방법을 찾아낸 [폴 드 카스텔죠](https://en.wikipedia.org/wiki/Paul_de_Casteljau)라고 하는 경우도 있습니다. 그러나 드 카스텔죠는 본인의 연구 결과를 발표하지 않았기 때문에 누가 먼저인지를 단언하기는 어렵습니다... 정말일까요? 사실 베지에 곡선은 근본적으로 "베른시테인 다항식"으로, [세르게이 나타노비치 베른시테인](https://ko.wikipedia.org/wiki/%EC%84%B8%EB%A5%B4%EA%B2%8C%EC%9D%B4_%EB%82%98%ED%83%80%EB%85%B8%EB%B9%84%EC%B9%98_%EB%B2%A0%EB%A5%B8%EC%8B%9C%ED%85%8C%EC%9D%B8)이 연구하여 자그마치 1912년에 발표한 수학적 함수의 집합입니다.
|
||||
|
||||
아무튼 위의 내용은 잡설이었고, 독자가 관심을 가질 만한 내용은 이 곡선이 편리하다는 것입니다. 여러 개의 베지에 곡선을 연결해서 하나의 곡선처럼 보이게 만들 수도 있습니다. 포토샵에서 패스를 한 번이라도 그려봤거나, 플래시, 일러스트레이터, 잉크스케이프 등 벡터 드로잉 프로그램을 써본 적이 있다면, 이 프로그램에서 그동안 그리던 곡선이 전부 베지에 곡선입니다.
|
||||
|
||||
그런데 이를 직접 프로그래밍하려면 어떻게 해야 할까요? 함정이 어디에 도사리고 있을까요? 곡선의 바운딩 박스는 어떻게 구하고, 교차 판정은 어떻게 하고, 밖으로 튀어나오게는 어떻게 하고... 간단히 말해서, 이 곡선으로 할 만한 온갖 것들을 어떻게 하는 것이 좋을까요? 그것이 바로 이 책의 존재 이유입니다. 수학 할 준비 되셨나요?
|
||||
|
||||
<div class="note">
|
||||
|
||||
## 거의 모든 베지에 그래픽이 인터랙티브입니다.
|
||||
|
||||
이 페이지에서는 [Bezier.js](https://pomax.github.io/bezierjs/)를 사용하여 인터랙티브 예제를 제공하며, 수학 공식은 [XeLaTeX](https://ctan.org/pkg/xetex) 조판 체계를 이용해 조판하고 [David Barton](https://cityinthesky.co.uk/)님의 [pdf2svg](https://github.com/dawbarton/pdf2svg)를 이용해 SVG로 변환하여 표시하고 있습니다.
|
||||
|
||||
## 이 책은 오픈 소스입니다.
|
||||
|
||||
이 책은 오픈 소스 소프트웨어 프로젝트의 일환으로, 소스 코드가 GitHub 레포지토리 두 곳에 보관되어 있습니다. 하나는 [https://github.com/pomax/bezierinfo](https://github.com/pomax/bezierinfo)로, 지금 읽고 계시는 완전히 공개용인 버전입니다. 다른 하나는 개발 버전인 [https://github.com/pomax/BezierInfo-2](https://github.com/pomax/BezierInfo-2)로 _웹 버전으로 변환되는_ 코드가 보관되어 있습니다. 버그를 찾아서 제보하려고 하거나 입문서의 내용을 수정하거나 추가할 아이디어가 있다면 이곳으로 보내 주세요.
|
||||
|
||||
## 이 책의 수식은 얼마나 어렵나요?
|
||||
|
||||
입문서에 등장하는 대부분의 수식은 고등학교 수준입니다. 기본적인 산수 계산을 할 수 있고 영어를 읽을 줄 안다면 대부분 이해할 수 있을 정도입니다. *훨씬* 어려운 수식도 가끔 등장하지만, 너무 어려워 보이는 상자 안의 세부 내용을 건너뛰거나, 읽고 있는 장의 끝으로 건너뛰어도 좋습니다. 각 장의 끝에는 도출된 값만 활용할 수 있도록 결론을 단순 나열합니다.
|
||||
|
||||
## 예제 코드는 무슨 언어로 되어 있나요?
|
||||
|
||||
특정한 프로그래밍 언어 하나를 선호하기에는 프로그래밍 언어가 너무 많기 때문에, 입문서에 수록된 모든 예제는 JS나 Python 등 현대적인 스크립트 언어와 문법이 어느 정도 비슷하지만 같지는 않은 의사코드로 작성했습니다. 그렇기 때문에 예제 코드를 생각 없이 복사해서 쓸 수 없지만, 이는 의도적인 결정입니다. 이 입문서를 보고 계시는 것은 웬만하면 *배우기 위해서*이고, 배움은 복붙으로 이루어지지 않죠. 학습은 무언가를 직접 해 보고, _실수를 하며_, 그 실수를 고치면서 이루어집니다. 독자들이 실수를 하라고 일부러 예제 코드에 오류를 넣는다거나 하는 것은 당연히 아니지만(그건 끔찍하겠죠!), 어떤 한 프로그래밍 언어에 편중된 코드는 _의도적으로_ 지양하고 있습니다. 절차적 프로그래밍 언어를 하나라도 알고 있다면 예제 코드를 읽는 데는 전혀 어려움이 없으니 걱정은 하지 말아주세요.
|
||||
|
||||
## 질문이나 의견이 있다면
|
||||
|
||||
새로운 장을 제안하고 싶다면, [GitHub 이슈 트래커](https://github.com/pomax/BezierInfo-2/issues)를 찾아 주세요(오른쪽 위에 링크한 레포지토리에서도 확인할 수 있습니다). 코드 재작성이 끝날 때까지는 댓글창이 없을 예정이지만, 내용에 대한 질문이 있다면 역시 이슈 트래커를 이용할 수 있습니다. 재작성을 마치면 내용 전반에 대한 댓글창을 추가하고, 확실치는 않지만 아마 "이 부분을 마우스로 선택하고 질문 버튼을 눌러서 질문하기" 시스템을 만들 수도 있겠습니다.
|
||||
|
||||
## 이 책을 지원해 주세요!
|
||||
|
||||
이 책을 재미있게 읽었거나 하려고 했던 작업에 도움이 되었고, 제게 고마움을 표하고 싶다면 두 가지 방법이 있습니다. 이 책의 [Patreon 페이지](https://www.patreon.com/bezierinfo)에서 정기 후원을 하거나, 일회성 후원을 하고 싶다면 [buy Pomax a coffee](https://www.paypal.com/donate/?cmd=_s-xclick&hosted_button_id=3BNHGHZAS3DP6&locale.x=en_CA) 페이지를 찾아 주세요. 이 책은 지난 몇 년 동안 베지에 곡선에 관한 조그마한 입문서에서 종이책 100페이지짜리 교재로 커졌고, 책을 쓰면서 수백 잔의 커피가 들었습니다. 저는 이 책을 쓰게 된 것이 전혀 후회되지 않지만, 약간의 커피만 더 있으면 집필을 이어나갈 수 있겠죠!
|
||||
|
||||
</div>
|
Reference in New Issue
Block a user