수치, 단위, 연산
기초 개념 / 수치, 단위, 연산
1.3 수치, 단위, 연산
Mathit은 수학적 표기 관례를 계산 엔진에 그대로 반영합니다. 단위의 종류와 연산 우선순위의 차이를 이해해야 수식이나 기하 파라미터를 정확히 지정할 수 있습니다.
단위 리터럴
숫자 바로 뒤에 공백 없이 단위 표기를 붙여 고유한 물리적 의미를 부여합니다.
출력 크기 단위로는 10mm, 15pt, 20px 등이 사용됩니다. 이 단위들은 도형의 선 두께(stroke=1.5pt), 각도 호의 반지름(r=12pt), 치수선의 이격 거리(off=-10pt)처럼 인쇄물 위의 절대적인 크기를 지정할 때 쓰입니다. 반면 A = (3, 4)처럼 점을 정의할 때 쓰는 숫자는 단위가 없는 순수 논리 좌표계 수치입니다.
각도 단위로는 45deg, 1.5rad, 2pi가 사용됩니다. 각도를 나타낼 때는 반드시 도 단위를 뜻하는 deg를 붙여야 합니다. 30이라고만 적으면 라디안 수치로 계산되어 의도와 완전히 다른 각도가 그려지므로 주의해야 합니다. 내장 상수 pi는 원주율 수치 자체이므로 pi/3처럼 라디안 계산식에 바로 활용할 수 있습니다.
음수 거듭제곱 연산 순서
일반 프로그래밍 언어와 Mathit의 가장 큰 차이점 중 하나는 음수 기호와 거듭제곱 연산자의 결합 우선순위입니다.
대다수 코딩 언어에서는 -x^2를 계산할 때 거듭제곱보다 단항 음수 연산의 순위를 헷갈려 의도치 않은 결과가 나오곤 합니다. 하지만 Mathit은 엄격한 수학 표기법을 준수합니다.
f(x) = -x^2 + 4
위 식은 사용자가 괄호를 치지 않아도 내부적으로 -(x^2) + 4로 계산됩니다. 따라서 을 대입하면 가 아니라 가 되어 최종 결과는 가 나옵니다. 만약 밑 자체에 음수를 포함하고 싶다면 반드시 괄호를 묶어 (-x)^2 또는 (-3)^2로 명시해야 합니다.
곱셈 기호 생략 규칙
수학식에서 통용되는 곱셈 생략 표현을 기본적으로 지원합니다.
숫자와 변수가 연달아 붙어 있는 경우 파서는 이를 곱셈으로 자동 인식합니다. 2x는 2x로, 3(a + b)는 3(a + b)로, 4pi는 4pi로 처리됩니다. 단, 변수와 변수가 붙어 있는 ab는 두 글자짜리 새로운 변수 이름으로 파싱되므로, 서로 다른 두 변수를 곱할 때는 반드시 ab처럼 명시적 곱셈 연산자를 사용해야 합니다.
특수 연산자 모음
기하 구조를 정의하기 위해 사용되는 전용 연산자들입니다.
첫째, -- 연산자는 2D 평면 기하에서 두 점을 직선 경로로 연결합니다. 다각형, 선분, 꺾은선을 만들 때 사용합니다.
path = A--B--C
둘째, --- 연산자는 이산수학의 네트워크 그래프에서 방향성이 없는 노드 간의 간선을 정의할 때 사용합니다.
graph: { A --- B; B --- C }
셋째, .. 연산자는 연속적인 범위나 닫힌 구간을 지정합니다. 함수의 정의역 구간을 한정하거나, 원호의 각도 구간을 정할 때 씁니다.
x in -2..4
ang_range = 0deg..90deg
넷째, ++ 연산자는 서로 다른 두 개 이상의 경로 리스트를 하나의 긴 곡선 데이터로 결합할 때 사용합니다.
CombinedPath = path1 ++ path2
다섯째, ? 연산자는 역기하 제약 조건 블록에서 값을 모르는 미지수를 지정할 때 사용합니다. 이 연산자는 연립 방정식 풀이 엔진에 의해 수학적으로 수렴 계산됩니다.
B = (?, 0)