문서 소목차
소목차
Welcome to Mathit!
M
Everywhere Mathit!
웹 플레이그라운드
CLI 설치
창의적으로 생각해요
기하학적 사고
알고리즘 퍼즐
수학적 모델링
논리 패러독스
패턴 탐색
모르겠으면 모두와 함께
euler_fan · 5분 전
Mathit 수식 엔진에서 다변수 미분 최적화할 때 어떤 옵션을 주나요?
matrix_dev · 32분 전
LaTeX 기반 표기법과 Mathit DSL 간 변환 벤치마크 공유합니다.
오픈되지 않았어요
AI에게 물어봐도 좋아요
보내기

고급 곡선 표현

해석학 / 고급 곡선 표현

4.4 고급 곡선 표현

함수식 y=f(x)y = f(x)의 꼴로 정리되지 않는 복잡한 기하 궤적과 음함수 곡선을 그리는 문법입니다.

매개변수 곡선

가로 좌표 xx와 세로 좌표 yy가 매개변수 tt에 의해 각각 정의되는 곡선은 param() 함수를 사용합니다.

복사
draw: param(x = 2*cos(t), y = 3*sin(t)), t in 0..2pi, thick=1.5pt

타원, 사이클로이드, 하이포사이클로이드처럼 시간에 따른 위치 변화를 다루는 기하학 곡선을 그릴 때 필수적입니다. 매개변수 구간은 t in 시작값..끝값 형태로 부여합니다.

사이클로이드 곡선 예제는 다음과 같이 간결하게 작성됩니다.

복사
r = 1
draw: param(x = r*(t - sin(t)), y = r*(1 - cos(t))), t in 0..4*pi, thick=1.2pt

### 극방정식 곡선

원점으로부터의 거리 rr이 회전각 theta에 의해 주어지는 곡선은 polar() 함수를 사용합니다.

복사
draw: polar(r = 2*(1 - cos(theta))), theta in 0..2pi, color=#blue, thick=1.5pt

위 코드는 대표적인 극곡선인 심장형(Cardioid) 곡선을 그립니다. theta의 범위를 0..2pi로 지정하여 각도가 한 바퀴 도는 동안 변화하는 거리 rr의 자취를 부드러운 곡선으로 연결합니다.

장미 곡선이나 아르키메데스 나선 역시 동일한 문법으로 rr에 관한 관계식만 대입하여 표현할 수 있습니다.

음함수 곡선

원, 쌍곡선, 잎사귀형 곡선처럼 xx와 yy가 뒤섞인 방정식 F(x,y)=0F(x, y) = 0 꼴의 곡선은 동등 비교 연산자 ==를 사용하여 작성합니다.

복사
draw: x^2 + y^2 - x*y == 3, x in -3..3, y in -3..3, thick=1.5pt, color=#purple

음함수를 그릴 때는 단일 등호 =가 아닌 이중 등호 ==를 적어야 파서가 이를 대입문이 아닌 방정식 조건식으로 인식합니다.

또한 음함수는 평면 전체를 격자 탐색하여 0이 되는 등위선을 추적하므로, 반드시 x in ...과 y in ... 두 축의 탐색 범위를 모두 지정해 주어야 합니다. 회전된 타원이나 데카르트의 엽선처럼 양함수로 쉽게 쪼개지지 않는 대학 수준의 해석학 곡선도 오차 없이 시각화할 수 있습니다.

---

예제

배운 내용을 결합하여 삼차함수 그래프 위의 변곡점 근처에서 접선을 긋고, 두 곡선으로 둘러싸인 영역을 빗금으로 채우는 고난도 수능형 도판을 제작합니다.

복사
@canvas: width=100mm, height=80mm, dpi=300
@view: [-2.5, 3], [-3, 5]

// 좌표축
axis: x, y, O

// 삼차함수 정의 및 접선 추출
f(x) = 0.5*x^3 - x^2 - x + 2
L_tan = tangent_line(f, x=-0.5)

// 교점 탐색
[P1, P2] = isect(f, L_tan)

// 둘러싸인 면적 빗금 채우기
shade: between(f..L_tan, x in P1.x..P2.x), hatch=(45deg, 1.8mm), stroke=0.5pt

// 곡선 및 접선 그리기
draw: f, x in -2..2.6, thick=1.5pt
draw: L_tan, stroke=1pt, color=#red, dash=(4pt, 2pt)

// 접점 및 교점 강조
dot: P1"접점"(nw), P2"교점"(se)

// 함수 이름 라벨
label: (2.2, f(2.2))"$y=f(x)$"(e)

이 코드는 삼차곡선과 직선의 교점을 정확히 추적하여 둘러싸인 적분 영역을 오차 없이 빗금으로 채워내며, 고등 수학 시험지 인쇄 규격에 부합하는 도판을 산출합니다.

취소