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

캔버스와 뷰포트 설정

기초 개념 / 캔버스와 뷰포트 설정

1.2 캔버스와 뷰포트 설정

문서의 맨 위에 @ 기호로 시작하는 전역 설정 블록을 작성하여 렌더링 영역의 물리적 크기, 좌표계의 범위, 인쇄 해상도를 통제합니다.

2D 좌표 범위 설정

@view 지시어는 화면에 노출할 2차원 좌표계의 가로 범위와 세로 범위를 지정합니다.

복사
@view: [-5, 5], [-3, 7]

앞의 대괄호 [-5, 5]는 가로축의 최소값과 최대값을 의미하고, 뒤의 대괄호 [-3, 7]은 세로축의 최소값과 최대값을 의미합니다.

@view를 작성하지 않으면 Mathit은 코드 내에 선언된 모든 도형이 한 화면에 들어오도록 뷰포트를 자동으로 계산합니다. 하지만 시험 문제나 교재 삽화처럼 여백을 일정하게 유지해야 하거나, 함수의 특정 구간만을 의도적으로 잘라 보여주어야 할 때는 반드시 @view를 명시적으로 고정해야 합니다.

복사
@view: [-1, 6], [-1, 4]

A = (0, 0)
B = (4, 0)
C = (2, 3)
poly: A--B--C

위와 같이 범위를 고정하면 삼각형 주변에 사방으로 일정한 여백이 생겨나며, 축이나 라벨이 캔버스 모서리에 잘려 나가는 현상을 방지할 수 있습니다.

인쇄 규격과 해상도

@canvas 지시어는 출력될 이미지의 실제 물리적 크기와 인쇄 품질을 설정합니다.

복사
@canvas: width=120mm, height=90mm, dpi=300

width와 height에는 밀리미터(mm), 센티미터(cm), 포인트(pt), 픽셀(px) 단위를 사용할 수 있습니다. 교재나 시험지 인쇄를 목적으로 한다면 밀리미터 단위로 작업 크기를 지정하는 것이 가장 직관적입니다.

dpi는 인치당 도트 수를 의미하는 해상도 설정입니다. 기본값은 화면 표시용인 96이지만, 인쇄 출판용 벡터 또는 래스터 이미지를 추출할 때는 dpi=300 이상을 지정하여 라벨과 얇은 선이 깨지지 않도록 출력 품질을 확보합니다.

3D 카메라 기본 설정

3차원 입체 도형을 다룰 때 시점과 투영 방식을 전역으로 선언합니다.

복사
@3d: cam(elev=30deg, azim=45deg, dist=10, proj=oblique)

elev는 바닥면에서 위로 올려다보거나 내려다보는 앙각이며, azim은 방위각으로 좌우 회전 각도를 뜻합니다.

dist는 물체로부터 카메라까지의 거리입니다.

proj는 투영 방식을 결정합니다. 중고등 교과서 입체도형 삽화에서 평행선이 유지되는 사선 투영을 쓸 때는 oblique, 축 측정이 균일한 등각 투영을 쓸 때는 iso, 원근감을 사실적으로 살릴 때는 persp를 지정합니다.

예제

실제 문제집 삽화를 제작할 때 문서 최상단에 배치하는 표준 구성은 다음과 같습니다.

복사
@canvas: width=80mm, height=60mm, dpi=300
@view: [-2, 6], [-1, 5]

axis: x, y, O
취소