01. 첫 번째 수업: 삼각형의 기초 (Basics of Triangles)

삼각형을 뜻하는 영어 단어 Triangle은 세 개를 뜻하는 ‘Tri’와 각을 뜻하는 ‘Angle’이 합쳐진 말입니다. 이름부터가 “세 개의 각(모서리)을 가진 피조물”이라는 뜻입니다. 하지만 선분 3개를 바닥에 던진다고 항상 삼각형이 조립되는 것은 아닙니다.


학습 목표

  • 점(Point), 선(Line), 면(Surface)이라는 기하학의 근본적인 차원 상승 원리를 이해합니다.
  • 아무리 긴 막대기를 가져와도 다른 두 막대보다 너무 길면 삼각형이 끊어지는 ‘삼각형의 성립(결정) 조건’을 배웁니다.
  • 파이썬의 부등호 연산자(> <)와 and 논리망을 이용해 삼각형 성립 여부를 판단하는 건축 로직을 코딩합니다.

1. 차원의 폭발: 점, 선, 그리고 면

0차원 점, 1차원 선, 2차원 면(삼각형)으로 이어지는 차원 상승과 폐쇄 구조를 설명하는 기하학 SVG
  • 점 (Point / 0D): 크기도 없고 두께도 없는 위치(Position)의 데이터입니다.
  • 선 (Line / 1D): 점이 움직인 궤적입니다. 두 개의 점을 가장 빠르게 이으면 ‘직선(선분)’이 됩니다. 오직 길이(Length) 정보만 있습니다.
  • 면 (Surface / 2D): 드디어 갇힌 공간이 생기는 마법입니다. 선 3개가 서로 꼬리를 물고 닫히면(Closed) 우주에서 가장 작고 단단한 감옥인 삼각형이 만들어집니다. 이때부터 넓이(Area)라는 데이터가 파생됩니다.

2. 삼각형 성립의 절대 법칙 (The Inequality Theorem)

2cm, 3cm, 10cm 네온 파이프를 조립하려다 한 변이 너무 길어 삼각형이 무너져 좌절하는 사이버펑크 목수 일러스트

여러분이 목수라고 생각해 봅시다. 나무토막 길이를 각각 $2cm$, $3cm$, 그리고 아주 기다란 $10cm$짜리를 하나 들고 삼각형 천막을 조립하려고 합니다. 바닥에 $10cm$ 막대를 깔고, 양 끝에 $2cm$, $3cm$ 막대를 세워 지붕을 덮으려 해 봅시다. 아무리 양 끝에서 눕히고 발버둥 쳐 보아도, $2cm$와 $3cm$ 모서리(합이 $5cm$)는 저 멀리 허공에서 닿지 못하고 끊어집니다. 영원히 지붕 장막이 닫히지 않는 것입니다.

[삼각형의 제1법칙: 삼각형의 성립 조건] “가장 긴 변의 길이조차도, 나머지 두 변의 길이를 합친 것보다는 무조건 작아야만 지붕이 조립되어 삼각형이 만들어진다!”

수학 공식: (가장 긴 변) < (나머지 두 변의 합)

3. Python 건축 사무소: if/else 삼각형 판별기

컴퓨터 프로그래밍(게임 개발이나 건축 캐드 프로그램)에서도 사용자가 값을 입력했을 때, 그것이 물리 엔진 속에서 정상적으로 조립될 수 있는 삼각형인지 아닌지 1초 만에 오류를 뱉어내는 필터망이 있어야 합니다. 파이썬의 리스트 함수와 부등호(>)를 조합하면 완벽한 삼각형 필터 건물을 지을 수 있습니다.

# 파이썬으로 가동하는 삼각형 건축 뼈대 검증 로직

def is_valid_triangle(side_a, side_b, side_c):
    """
    들어온 3개의 나무토막이 진짜로 닫힌 지붕(삼각형)을 만들 수 있는지 
    부등호 필터로 검사합니다.
    """
    
    # 1. 일단 세 나무토막을 리스트(박스)에 순서대로 담습니다.
    #    (컴퓨터는 입력만으로 누가 가장 큰 놈인지 스스로 알 수 없기 때문입니다.)
    sticks = [side_a, side_b, side_c]
    
    # 2. 파이썬의 오름차순 정렬 Ма법! (sort) 
    #    가장 큰 막대기가 무조건 맨 끝(오른쪽)으로 쫓겨갑니다.
    sticks.sort()  
    
    # 3. 이제 리스트의 인덱스를 부릅니다.
    # sticks[0]: 가장 짧은 놈
    # sticks[1]: 중간 놈
    # sticks[2]: 가장 긴 두목 놈
    
    # 4. 삼각형의 결정 조건 검증! (가장 긴 뼈대 < 꼬마 두 명의 합)
    if sticks[2] < (sticks[0] + sticks[1]):
        return True
    else:
        return False

# 목재소에서 가져온 부품을 테스트해 봅시다.
parts_1 = (2, 3, 10)  # 너무 긴 불량 토막이 서섞여 있음
parts_2 = (6, 8, 10)  # 유명한 피타고라스 사이즈

print("[테스트 1번 부품 (2,3,10)]")
if is_valid_triangle(*parts_1):
    print("-> 🏠 견고한 삼각형 지붕 조립 가능!")
else:
    print("-> ❌ 건축 붕괴 오류! 두 꼬마 변의 합이 가장 긴 변보다 짧아 지붕이 닫히지 않습니다.")
    
print("\n[테스트 2번 부품 (6,8,10)]")
if is_valid_triangle(*parts_2):
    print("-> 🏠 견고한 삼각형 지붕 조립 가능!")
else:
    print("-> ❌ 건축 붕괴 오류!")

수작업으로 막대기를 자르며 고생할 필요 없이, 파이썬의 sort() 와 인덱스 불평등 조건만 알면 수천만 개의 3D 그래픽 파편(Polygon) 모델들 중 ‘깨진 오류(에러) 데이터’만을 귀신같이 찾아내 삭제(Drop) 처리해 버릴 수 있습니다. 이것이 데이터 무결성 검증의 시작입니다.

학습 정리

  1. 점 $\rightarrow$ 선 $\rightarrow$ 면(폴리곤): 점은 차원이 없고 세 선분이 막혀 폐쇄 구조(Closed)를 이룰 때 비로소 2D 입체 면적을 가지는 삼각형이 시뮬레이션된다.
  2. 삼각형 결정 조건: 가장 긴 호위무사(뼈대)조차도 나머지 두 뼈대의 합산 길이보다는 짧아야만 건축물 지붕이 무너지지 않고 서로 맞닿을 수 있다.
  3. 데이터 파이프라인에서 무작위로 날아오는 인자값들은 항상 파이썬의 .sort() 배열 정리를 거쳐야 가장 큰 값(Max)과 작은 값(Min)들을 위치(Index)로 신뢰하고 비교 연산할 수 있다.
서브목차