02. 가장 완벽한 뼈대, 삼각형 (Triangle Build)
1. 학습 목표 (Learning Objectives)
- 파편화된 점들이 선을 이루고, 그 선들이 닫혀서 기하학의 최초 평면을 탄생시키는 가장 안정적인 건축 구조물 ‘삼각형(Triangle)’ 의 작도 원리를 깨닫습니다.
- 세 변, 두 변과 끼인각, 양 끝각의 합동 3대 요소가 삼각형 건축의 100% 필수 조건임을 이해하고, 파이썬을 이용해 삼각형 성립 규칙을 판독해 내는 엔진을 짜 봅니다.
2. 왜 삼각형만 유일하게 안 무너지는가?
이케아에서 가구를 조립해 본 적이 있나요? 나무 꼬챙이 4개를 사각형으로 대충 박아두면 손으로 쳤을 때 찌그러지며 마름모로 주저앉아 붕괴해버립니다. 하지만 나무 꼬챙이 3개로 삼각형 모양 기둥(트러스 구조, Truss) 을 짠 뒤 벽돌을 얹어보세요. 죽어도 모양이 찌그러지거나 무너지지 않고 버텨냅니다!
에펠탑, 대교, 거대한 크레인이 모두 철근을 ‘삼각형’으로 잘라 엮은 이유입니다. 도형 중에 오직 треугольник $\Delta$(삼각형)만이, 길이나 각도 제원이 한번 주어지면 두 번 다시는 형태 왜곡이 오지 않고 유일한 절대 변태 보호막(Rigidity) 형태로 공간을 장악합니다.
3. 삼각형을 소환하는 3가지 절대 지령 (합동 조건)
기하학자에게 아무 재료나 던져준다고 삼각형을 작도할 수 있는 것은 아닙니다. 우주 어딘가에 이 세상에 딱 하나밖에 없는 “유일한 삼각형 타겟 하나”를 똑같이 100% 클론 작도(합동)로 소환해 내려면 다음 3가지 핵심 블루프린트(도면 정보) 중 하나를 무조건 통보받아야 합니다.
- SSS 작도 (세 변의 길이를 알려줄 때)
- 선분 3개를 바닥에 던집니다.
- 베이스라인 하나를 자로 그은 뒤, 나머지 두 선분의 길이를 각각 양 끝점에서 컴퍼스 레이더로 긁어 교차점을 뽑아내면, 오차 없이 단 한 가지 형태의 삼각형 뚝딱!
- SAS 작도 (두 변의 길이와 그 사이에 ‘끼인 각’을 알려줄 때)
- 밑변을 하나 뽑고, 알려준 ‘끼인 각’을 컴퍼스로 각의 크기 복사 치트키(원호 그리기 반복)로 복붙 한 뒤 두 번째 뼈대의 길이를 자로 확증합니다. 끝!
- ASA 작도 (한 변의 길이와 ‘양 끝의 두 각’을 알려줄 때)
- 단단한 밑변 베이스캠프를 깐 뒤, 왼쪽 기지에서 A각도를 발사! 오른쪽 기지에서 B각도를 발사! 두 레이저가 안드로메다 허공 어딘가에서 챙! 부딪힙니다. 그 교차점이 3번째 꼭짓점이 되며 단 하나뿐인 삼각형이 자동 확정 렌더링 됩니다.
이 SSS, SAS, ASA 룰은 “삼각형이 만들어지는 단 3가지 작도 유일 공법” 이자, 두 삼각형이 $100\%$ 똑같이 생겨먹은 도플갱어임을 수학적으로 법원 판결 내려주는 “삼각형의 3대 합동 조건” 입니다.
4. 파이썬 삼각형 건축 판독 보안 시스템
하지만, 건축가에게 철근 3개를 SSS로 쥐여줬다고 정말 삼각형이 무조건 무너지지 않을까요? 아닙니다! 제아무리 콤파스가 용을 써도 “가장 긴 뼈대의 길이”가 “나머지 떨거지 두 뼈대의 길이를 합친 것”보다 무식하게 더 길어버리면? 두 뼈대를 땅으로 밀착시켜도 만날 수가 없이 중간이 비어버리면서 우주적 오류가 나버립니다.
파이썬 코드 엔진으로 어떤 몹쓸 수치 값들이 나를 속이려 드는지 필터링해 보겠습니다.
import math
def build_triangle(a, b, c):
"""
세 변의 길이를 입력 받아,
1. '삼각형 성립 절대 불문율'을 확인하고
2. 생성 가능한 기하학 구조라면, 헤론의 기하 공식 파괴력을 이용해 넓이(Area)까지 렌더링
"""
sides = [a, b, c]
# 길이를 긴 녀석부터 정렬시켜 가장 무지막지한 놈을 1위로(index 0) 뺀다!
sides.sort(reverse=True)
max_side = sides[0]
sub_side_sum = sides[1] + sides[2]
print(f"📐 [측량 시스템 가동] a={a}, b={b}, c={c}")
print(f" => 챔피언 변: {max_side} / 떨거지 합: {sub_side_sum}")
# 강력한 IF문 보안 장벽 (삼각형 성립 조건)
if max_side >= sub_side_sum:
print(" ❌ [Error] 붕괴 경고! 가장 긴 철근이 나머지 두 철근 합보다 비대합니다.")
print(" => 컴퍼스로 작도 시 교차 궤적이 잡히지 않는 우주 오류 발생!\n")
return None
print(" ✅ 기하학 보호막 가동 준비 완료. 유일 조립(SSS 작도) 가능!")
# 헤론(Heron)의 거울 공식을 응용한 넓이 환산 엔진 코어
s = (a + b + c) / 2
# sqrt: 파이썬 모듈 안의 제곱근(루트) 해킹봇
area = math.sqrt(s * (s - a) * (s - b) * (s - c))
print(f" 🏛️ 작도 완료된 삼각형 면적 크기 방출: {area:.2f}\n")
return area
# [1] 정상 케이스 오더 입력 (전형적인 피타고라스 직각 구조 비율)
build_triangle(3, 4, 5)
# [2] 건축 테러 수치 편차 공격 입력 (막대 하나가 무식하게 긺)
build_triangle(10, 2, 3)
# [3] 아슬아슬하게 실패 (일직선 폭사)
build_triangle(5, 5, 10)
터미널 실행 콘솔 렌더링:
📐 [측량 시스템 가동] a=3, b=4, c=5
=> 챔피언 변: 5 / 떨거지 합: 7
✅ 기하학 보호막 가동 준비 완료. 유일 조립(SSS 작도) 가능!
🏛️ 작도 완료된 삼각형 면적 크기 방출: 6.00
📐 [측량 시스템 가동] a=10, b=2, c=3
=> 챔피언 변: 10 / 떨거지 합: 5
❌ [Error] 붕괴 경고! 가장 긴 철근이 나머지 두 철근 합보다 비대합니다.
=> 컴퍼스로 작도 시 교차 궤적이 잡히지 않는 우주 오류 발생!
📐 [측량 시스템 가동] a=5, b=5, c=10
=> 챔피언 변: 10 / 떨거지 합: 10
❌ [Error] 붕괴 경고! 가장 긴 철근이 나머지 두 철근 합보다 비대합니다.
=> 컴퍼스로 작도 시 교차 궤적이 잡히지 않는 우주 오류 발생!
자, 컴퍼스를 굳이 종이에 비비지 않아도 이 한 줄의 수학적 부등식($MAX < a + b$) 엔진 하나로 작도 가능 여부를 100% 필터링해 내었습니다!
5. 학습 정리 (Summary)
- 삼각형의 독점적 지위: 각 꼭짓점이 힘을 받아도 형태 변환 오류가 생기지 않는 기하학적 철벽 방어력 구조체입니다. 건축의 뼈대로 쓰이는 궁극의 평면도형입니다.
- 합동과 작도의 일치 (SSS, SAS, ASA): 이 조건들은 단순히 시험용 암기 사항이 아닙니다. 현실 무대 위에 “오로지 유일무이하고 변형 불가능한” 100% 한 가지 삼각형을 찍어내는 도면 지시 사항(Instruction)입니다.
- 작도 철벽 룰: 변 3개 스펙이 던져졌다고 해서 아무거나 다 만들어지는 무법천지가 아닙니다. “제지장치: 가장 긴 변은 반드시 남머지 합보다 작아야 함”이라는 조건이 깨지면 콤파스 교차 레이더 오작동으로 작도는 무효가 됩니다.