3) 벡터 및 벡터장/방향장
미적분학, 해석학, 물리학 시각화에서는 평면 상의 벡터와 공간 전체에 화살표로 나타나는 벡터장 및 방향장을 그리는 기능이 자주 활용됩니다.
Mathit은 개별 벡터 화살표 표시부터 2차원 기울기장, 경사도, 회전, 발산 시각화를 한 줄의 지시어로 지원합니다.
1. 개별 벡터 그리기
점 $A$에서 점 $B$로 가는 벡터나, 시작점과 성분 $(v_x, v_y)$을 가진 벡터 화살표를 그립니다.
A = (1, 1)
B = (4, 3)
// 점 A에서 점 B로 향하는 벡터 그리기
line: A--B, arrow=end, color=#blue, thick=1.5pt
// 시작점과 벡터 객체를 직접 지정하여 그리기
v = vec(2, -1)
draw: v, origin=A, color=#red
arrow 옵션에서는 end (끝점 화살표), both (양끝 화살표), start (시작점 화살표)를 선택할 수 있습니다.
2. 방향장 / 기울기장
미분방정식 $\frac{dy}{dx} = f(x, y)$의 해곡선 흐름을 파악하기 위해 각 격자점에서의 기울기 선분을 생성합니다.
// 미분방정식 dy/dx = x - y 의 방향장 작성
f_slope = x - y
// x in -3..3, y in -3..3 범위에 0.5 간격으로 기울기 선분 그리기
slope_field: f_slope, x in -3..3, y in -3..3, step=0.5, color=#gray/70
// 특수해 곡선 겹쳐 그리기 (y = x - 1 + C*exp(-x))
sol1 = x - 1 + 2*exp(-x)
draw: sol1, x in -3..3, color=#red, thick=1.5pt
3. 2D 벡터장
평면 상의 각 점 $(x, y)$마다 위치하는 2D 벡터 함수 $\mathbf{F}(x, y) = (P(x, y), Q(x, y))$를 화살표 격자로 표시합니다.
// 벡터장 F(x, y) = (-y, x) (회전하는 벡터장)
P = -y
Q = x
// 2D 벡터장 그리기 (화살표 길이를 비율에 맞게 조절)
field: vec(P, Q), x in -4..4, y in -4..4, step=0.8, scale=0.15, color=#blue
// 특정 흐름선(Streamline/Trajectory) 겹쳐 그리기
circle: center=(0,0), r=2, stroke=dash, color=#red
step 는 격자점 사이의 간격
**scale**는 화살표 크기 스케일링 비율
**normalize=true**는 화살표의 길이를 모두 일정하게 맞추고 색상만으로 크기를 나타낼 때 사용합니다.
4. 선적분과 곡선 벡터
벡터장 내에서 매개변수 곡선 C를 따라 움직이는 선적분 경로와 곡선 상의 벡터들을 표현합니다.
// 벡터장 선언
field: vec(-y, x), x in -3..3, y in -3..3, step=0.8, color=#gray/40
// 적분 경로 곡선 C (원 경로)
C = circle(center=(0,0), r=2)
draw: C, stroke=1.5pt, color=#red, arrow=end
// 곡선 상의 주요 점들에 접선 벡터 표시
pts = [ on(C, t) for t in 0..1, step=0.25 ]
for P in pts {
// 점 P에서의 벡터장 화살표 강조
v_P = vec(-P.y, P.x)
draw: v_P, origin=P, color=#red, scale=0.2
}
5. 종합적으로 본 예시
// 전역 설정 및 축
@view: [-3, 3], [-3, 3]
axis: x, y, O
// 미분방정식 dy/dx = sin(y) 의 방향장 생성
slope_field: sin(y), x in -3..3, y in -3..3, step=0.4, color=#blue/60
// 초기값 y(0) = 1 인 해곡선과 y(0) = -1 인 해곡선 그리기
// (해당 미분방정식의 해: y = 2*atan(c*exp(x)))
y_sol1 = 2 * atan(tan(0.5) * exp(x))
y_sol2 = 2 * atan(tan(-0.5) * exp(x))
draw: y_sol1, x in -3..3, color=#red, thick=1.5pt
draw: y_sol2, x in -3..3, color=#green, thick=1.5pt
// 초기값 점 표시 및 라벨
dot: (0, 1)"$(0, 1)$"(nw), color=#red
dot: (0, -1)"$(0, -1)$"(sw), color=#green
다음 장에는 3D 입체기하, 다면체, 곡면, 그리고 이산수학(그래프 이론, 트리) 작성법을 알아볼 것입니다. 그러나 이 내용은 정말 배워야 하는 사람과 배워도 상관 없는 사람이 있기에 본인의 니즈에 맞춰서 볼지 말지를 선택하기 바랍니다.