01. 첫 번째 수업: 삼각형의 기초 (Basics of Triangles)
삼각형을 뜻하는 영어 단어 Triangle은 세 개를 뜻하는 ‘Tri’와 각을 뜻하는 ‘Angle’이 합쳐진 말입니다. 이름부터가 “세 개의 각(모서리)을 가진 피조물”이라는 뜻입니다. 하지만 선분 3개를 바닥에 던진다고 항상 삼각형이 조립되는 것은 아닙니다.
학습 목표
- 점(Point), 선(Line), 면(Surface)이라는 기하학의 근본적인 차원 상승 원리를 이해합니다.
- 아무리 긴 막대기를 가져와도 다른 두 막대보다 너무 길면 삼각형이 끊어지는 ‘삼각형의 성립(결정) 조건’을 배웁니다.
- 파이썬의 부등호 연산자(
><)와and논리망을 이용해 삼각형 성립 여부를 판단하는 건축 로직을 코딩합니다.
1. 차원의 폭발: 점, 선, 그리고 면
- 점 (Point / 0D): 크기도 없고 두께도 없는 위치(Position)의 데이터입니다.
- 선 (Line / 1D): 점이 움직인 궤적입니다. 두 개의 점을 가장 빠르게 이으면 ‘직선(선분)’이 됩니다. 오직 길이(Length) 정보만 있습니다.
- 면 (Surface / 2D): 드디어 갇힌 공간이 생기는 마법입니다. 선 3개가 서로 꼬리를 물고 닫히면(Closed) 우주에서 가장 작고 단단한 감옥인 삼각형이 만들어집니다. 이때부터 넓이(Area)라는 데이터가 파생됩니다.
2. 삼각형 성립의 절대 법칙 (The Inequality Theorem)
여러분이 목수라고 생각해 봅시다. 나무토막 길이를 각각 $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) 처리해 버릴 수 있습니다. 이것이 데이터 무결성 검증의 시작입니다.
학습 정리
- 점 $\rightarrow$ 선 $\rightarrow$ 면(폴리곤): 점은 차원이 없고 세 선분이 막혀 폐쇄 구조(Closed)를 이룰 때 비로소 2D 입체 면적을 가지는 삼각형이 시뮬레이션된다.
- 삼각형 결정 조건: 가장 긴 호위무사(뼈대)조차도 나머지 두 뼈대의 합산 길이보다는 짧아야만 건축물 지붕이 무너지지 않고 서로 맞닿을 수 있다.
- 데이터 파이프라인에서 무작위로 날아오는 인자값들은 항상 파이썬의
.sort()배열 정리를 거쳐야 가장 큰 값(Max)과 작은 값(Min)들을 위치(Index)로 신뢰하고 비교 연산할 수 있다.