02. 두 번째 수업: 삼각형의 내각과 외각 (Angles)

모든 삼각형에는 뾰족하게 찔릴 듯한 모서리 3개가 있으며, 이곳에서 만들어지는 안쪽의 각도를 내각(Internal Angle)이라고 부릅니다. 신기하게도 삼각형을 길게 찢든, 뾰족하게 만들든, 뚱뚱하게 늘리든 그 세 개의 안쪽 각도를 다 합치면 우주의 법칙처럼 항상 $180도$로 일치합니다.


학습 목표

  • 엇각과 동위각이라는 평행선의 마법을 이용하여 삼각형 세 내각의 합이 완벽한 직선($180^\circ$)이 되는 이유를 증명합니다.
  • 삼각형의 연장선 바깥으로 튀어나간 외각(External Angle)의 법칙을 외웁니다.
  • 파이썬의 리스트 순회 검증을 통해 수학의 불변 정리($\sum A = 180$)를 컴퓨터 시뮬레이터로 안전장치화(Assertion) 합니다.

1. 세 내각의 합은 왜 무조건 $180^\circ$인가?

평행선의 동위각과 엇각의 원리를 이용해 꼭지각 옆에 나머지 두 각이 모여 180도 평각을 이루는 증명 과정을 담은 SVG

만약 큰 종이에 임의의 삼각형을 크게 하나 그리고 모서리 3군데(각)를 가위로 싹둑 자른 뒤, 세 개의 각 모서리 끝을 한 지점에 찰싹 붙여보십시오. 거짓말처럼 세 종이 파편은 하나의 완벽한 수평선(직선, $180^\circ$)을 만들어 냅니다.

이를 수학 선생님들은 평행선의 [동위각][엇각]의 원리라는 우아한 방패를 들어 증명합니다.

  1. 삼각형 바닥 선분과 ‘완전히 평행’하고 꼭대기 뾰족한 점(꼭짓점)을 스치고 지나가는 기차 선로(평행선)를 하나 천장에 그어봅시다.
  2. 바닥 양옆에 있던 두 개의 각도(예: $\angle B$와 $\angle C$)가 마법의 엘리베이터(엇각의 원리)를 타고 지그재그 모양으로 천장의 평행선 위로 순간이동해서 달라붙습니다!
  3. 천장 꼭대기에는 원래 있던 $\angle A$, 순간이동 한 $\angle B$, $\angle C$가 일렬로 찰싹 달라붙어, 하나의 기차 선로, 즉 ‘평각(Straight angle: $180^\circ$)’을 정확히 완성해 버립니다.

어떤 모양의 찌그러진 삼각형을 가져와도 기차 선로(평행선)만 그으면 무조건 평각 세팅으로 맞춰지는 이 완벽한 메커니즘이 인류가 이룩한 유클리드 기하학의 위대함입니다.

2. 반항아 외각(External Angle)의 폭주

삼각형의 밑바닥 벽 한쪽을 부수고 선을 쭉 바깥쪽 길로 연장해 버려 봅시다. 이때 삼각형 바깥 허공에 생기는 각을 외각(Exterior Angle)이라고 합니다.

벽(선분) 하나를 공유하는 내각과 이 반항아 외각을 합치면 당연히 기찻길(평각)이므로 $180^\circ$입니다. 그런데 아까 “삼각형 세 내각($A+B+C$)을 합쳐도 $180^\circ$“라고 했죠?

두 사건의 결과($180^\circ$)가 똑같다면, 수학자들은 즉시 중간 과정을 소거방정식으로 박살을 냅니다.

  • $C + (\text{바깥쪽 외각}) = 180^\circ$
  • $C + (A + B) = 180^\circ$

양쪽에서 $C$를 똑같이 지워버립니다!

[외각의 법칙] “삼각형의 한 외각의 크기는, 자기 옆에 붙어있는 내각을 뺀 ‘나머지 저 멀리 떨어진 두 내각($A+B$)의 합’과 무조건 완벽하게 똑같다!”

이 정리를 외워두면 나중에 복잡한 기하 도형에서 미지의 각도를 찾을 때 무쌍을 찍는 치트키 렌즈를 장착하게 됩니다.

3. Python 항공 시뮬레이터: 데이터 무결성 검증

해커 조종사가 비행 시뮬레이터에 탑승해 있는데 디스플레이 중앙에서 삼각형 내각의 합이 181도가 되어 붉은색 ERROR 경고가 뜨는 일러스트

컴퓨터 프로그래밍, 특히 비행기 시뮬레이터나 3D 그래픽 엔진을 만들 때 수백만 개의 삼각형 조각 내각(Angle) 데이터가 센서로부터 밀려들어 옵니다. 이때 한 조각이라도 세 각의 합이 $180^\circ$가 아니라면? 엔진 렌더링에 폭발 오류(Error)가 터진 것입니다.

파이썬에서는 assert (강력 주장) 예약어를 사용하여 이 수학적 유클리드 진리가 깨지는 순간 서버 접속을 즉시 끊어버리는 방어벽 코드를 만듭니다.

# 파이썬 3D 엔진의 기하학 방호 체계 (Assertion Filter)

def check_render_engine_angles(angles_list):
    """
    들어온 수백 개의 메쉬(Mesh) 삼각형 각도 조각들이 
    정확히 합산 180도를 유지하여 우주가 붕괴하지 않는지 강제 감시합니다.
    """
    
    for idx, triangle_angles in enumerate(angles_list):
        
        # 1. 파이썬의 리스트 총합 함수 sum()을 사용합니다.
        total_sum = sum(triangle_angles)
        
        # 2. 강력한 무결성 검사! (Assertion)
        # "합이 무조건 180이어야만 해! 아니면 빨간 에러 메시지를 뿜고 프로그램을 죽여라!"
        # Float 오차 방지를 위해 round 혹은 math.isclose를 쓰기도 하지만 직관을 위해 정수로 씁니다.
        assert total_sum == 180, f"💥 크래시 발생! {idx}번 삼각형의 각도 합이 {total_sum}도로 기하학 법칙을 위반했습니다!"
        
        print(f"[{idx}번 폴리곤]: 시스템 안정. 내각의 합 180도 통과. (렌더링 뷰 전송)")


# 외부 해커나 센서 고장으로 오염된 데이터 베이스
incoming_3d_data = [
    [60, 60, 60],       # 아주 완벽한 정삼각형
    [90, 45, 45],       # 완벽한 직각이등변삼각형
    [100, 30, 50],      # 이것 역시 합이 180 통과!
    [70, 70, 41]        # 해커 침입! 합이 181도로 3D 엔진을 부수려 합니다!
]

# 엔진 방어 프로세스 가동 (try / except를 이용해 에러 문구를 잡아냅니다)
try:
    check_render_engine_angles(incoming_3d_data)
except AssertionError as error_message:
    print("=" * 40)
    print("🚨 시스템 긴급 정지 (Assertion Error) 🚨")
    print(error_message)

인간이라면 바보처럼 끝까지 $4$번째 삼각형(70+70+41)을 화면에 그리려고 시도하다 렌더링 오류 블루스크린을 맞았겠지만, 파이썬의 assert 코드 한 줄은 수학 진리 증명($\Sigma = 180$)에 위배되는 데이터가 들어온 즉시 병균을 차단하고 격리시켜 시스템의 무결성(Integrity)을 보호합니다.

학습 정리

  1. 평행선의 엇각과 동위각: 엘리베이터 이동 법칙. 뿔뿔이 흩어진 $\angle A, B, C$를 하나의 수평 기차선로 위로 차곡차곡 모아 평각($180^\circ$)을 증명해 내는 마법.
  2. 외각의 위력: 한 외각의 크기는 눈앞에 보이지 않는 저 멀리 떨어진 두 개의 내각 크기의 합과 같다. 방정식을 뚫는 가장 빠른 소거법 치트키 공식이다.
  3. 파이썬에서 sum() 배열 총합 공식과 assert(조건식) 예약어의 병합은 거대 데이터 뭉치가 수학적 절대 진리(예: 확률의 합은 항상 $1$, 삼각형 내각 합은 항상 $180$)를 수호하고 있는지 초고속으로 검문하는 무결성 시큐리티의 기본이다.
서브목차