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

3D 매개변수 곡면

입체기하와 공간도형 / 3D 매개변수 곡면

6.5 3D 매개변수 곡면

다면체를 넘어 두 개의 매개변수 (u,v)(u, v)로 정의되는 공간 곡면을 그릴 때는 surface: 지시어를 사용합니다.

곡면 함수의 정의와 표면 렌더링

매개변수 함수는 uu와 vv를 입력받아 공간 좌표 (x,y,z)(x, y, z) 튜플을 반환하는 익명 함수로 정의합니다.

도넛 모양의 토러스 곡면을 만드는 코드는 다음과 같습니다.

복사
torus = (u, v) => ((3 + cos(v))*cos(u), (3 + cos(v))*sin(u), sin(v))

surface: torus, u in 0..2pi, v in 0..2pi, mesh=(32, 16), fill=#purple/30, stroke=0.4pt

u in 0..2pi와 v in 0..2pi는 두 매개변수의 회전 범위를 지정합니다.

mesh=(32, 16)은 곡면을 분할하는 와이어프레임 격자의 조밀도입니다. 앞의 숫자는 uu 방향 분할 수, 뒤의 숫자는 vv 방향 분할 수입니다. 수치가 클수록 곡면이 매끄러워집니다.

fill=#purple/30은 곡면 조각들의 표면 색상이며, stroke=0.4pt는 곡면 위에 그어지는 미세한 위선과 경선 와이어프레임의 선 굵기입니다.

안장 곡면(쌍곡포물면) 예제

다변수 미적분학에서 함수의 극값을 설명할 때 쓰이는 말안장 형태의 곡선입니다.

복사
saddle = (u, v) => (u, v, u^2 - v^2)

surface: saddle, u in -1.5..1.5, v in -1.5..1.5, mesh=(20, 20), fill=#blue/20

복잡한 공간 3D 곡면도 매개변수 식만 세우면 숨은 면의 음영 처리가 반영된 깔끔한 도판으로 출력됩니다.

---

예제

수능 기하 과목에 단골 출제되는 문항으로, 정육면체의 인접한 세 면의 대각선을 연결하여 생기는 정삼각형 단면과 내부 보조선을 완벽한 겨냥도로 구현합니다.

복사
@canvas: width=100mm, height=90mm, dpi=300
@3d: cam(elev=28deg, azim=35deg, dist=12, proj=oblique)

// 정육면체 생성
K = cube(size=4, center=(0, 0, 0))

// 단면을 형성할 세 꼭짓점을 지나는 평면 정의
// 육면체의 상단, 우측, 전면 모서리 삼분점을 지나는 절단 평면
P = plane(norm=(1, 1, 1), pt=(0.8, 0.8, 0.8))

// 단면 추출
sec = isect(K, P)

// 정육면체 렌더링 (숨은 모서리 자동 점선 처리)
draw: K, hide=dash, thick=1.2pt

// 단면 채우기 및 빗금 처리
fill: sec, fill=#red/15
shade: sec, hatch=(60deg, 1.8mm), stroke=0.6pt
poly: sec, stroke=1.5pt, color=#red

// 단면의 무게중심에 수선의 발 내리기
G = centroid(sec)
dot: G"G"(ne)

이 코드는 카메라의 각도에 맞춰 정육면체의 보이지 않는 3개 뒷모서리를 스스로 점선으로 전환하고, 공간상에서 기울어진 정삼각형 단면을 수학적으로 정확하게 절단하여 붉은색 빗금으로 마감합니다. 복잡한 삼수선의 정리와 정사영 문제를 한눈에 설명할 수 있는 교재용 도판이 완성됩니다.

취소