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

기하 내장 계산 엔진

2D 평면기하 / 기하 내장 계산 엔진

2.3 기하 내장 계산 엔진

작도 문제를 코딩할 때 좌표를 손수 삼각비로 계산하는 것은 비효율적입니다. Mathit은 교과서 기하학에 등장하는 핵심 위치 계산을 함수 형태로 내장하고 있습니다.

중점과 내분점

두 점의 정가운데 위치는 mid() 함수로 구합니다.

복사
M = mid(A, B)

선분을 특정 비율로 분할하는 점은 on() 함수를 사용합니다.

복사
P = on(A--B, 1/3)

두 번째 인자에는 선분 AB의 전체 길이를 1로 보았을 때 점 A로부터 떨어진 비율을 적습니다. 1/3을 입력하면 선분 AB를 1대 2로 내분하는 점이 계산됩니다.

만약 1보다 큰 값을 넣으면 B 방향의 외분점이 되고, 음수를 넣으면 A의 바깥쪽 연장선 위에 점이 놓입니다.

선분의 연장선

선분을 지정한 길이만큼 바깥으로 늘인 위치를 찾을 때는 ext() 함수를 사용합니다.

복사
P_ext = ext(A--B, len=2)

이 코드는 점 A에서 시작하여 B를 통과하는 반직선 방향으로, 점 B로부터 정확히 2만큼 더 나아간 위치의 점을 반환합니다. 보조선을 긋거나 도형 바깥에 외각 표기를 위한 여백 점을 만들 때 유용합니다.

기준점 순서가 반대인 ext(B--A, len=2)를 적으면 점 A의 바깥쪽으로 연장된 점이 생성됩니다.

수선의 발과 선대칭

외부의 한 점에서 특정 직선에 수직으로 내린 점은 proj() 함수로 구합니다.

복사
H = proj(P, A--B)

점 P에서 직선 AB에 내린 수선의 발 좌표가 정확히 계산되어 H에 할당됩니다. 직각삼각형의 높이나 삼수선의 정리 문제를 구성할 때 필수적으로 쓰입니다.

특정 직선을 기준으로 점을 완전히 반대편으로 대칭 이동시킬 때는 reflect() 함수를 씁니다.

복사
P_mirror = reflect(P, A--B)

선분 AB를 거울면으로 삼아 점 P와 완벽한 대칭 위치에 있는 점을 찾아냅니다. 종이접기 문항이나 최단거리 반사 문제를 구현할 때 좌표 계산 없이 곧바로 점을 얻을 수 있습니다.

회전 변환과 각의 이등분선

평면 위의 점을 회전시킬 때는 rot() 함수를 사용합니다.

복사
P_rot = rot(P, 45deg, center=C)

점 P를 중심점 C를 기준으로 반시계 방향으로 45도 회전시킨 위치를 반환합니다. center 파라미터를 생략하면 좌표평면의 원점 (0, 0)을 기준으로 회전합니다.

각의 이등분선을 구할 때는 bisect() 함수를 씁니다.

복사
Ray = bisect(A--B--C)

세 점이 이루는 각 B를 정확히 반으로 가르는 반직선 객체를 생성합니다. 이 반직선은 후술할 교점 함수와 결합하여 대변과의 교점을 찾는 데 사용됩니다.

취소