1
0
mirror of https://github.com/Pomax/BezierInfo-2.git synced 2025-08-29 11:10:38 +02:00

[ko-KR] Preface translation (#335)

* Translate preface into ko-KR
This commit is contained in:
잇창명
2022-01-04 08:30:35 +09:00
committed by GitHub
parent bd6110f618
commit ce1ee672a4
14 changed files with 23935 additions and 42375 deletions

View 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>