2. 입체 기하의 저주: 꼬인 위치(Skew Lines)
[도입부] 학습 목표 (Learning Objectives)
- 평면 기하학(2D)에서는 두 직선이 미터기만 올리면 언젠간 무조건 “만나거나”, 아니면 영원히 “평행”하다는 양자택일 구조였지만, 3차원(3D) 공간에서는 이 법칙이 완전히 붕괴됨을 인정합니다.
- 새로운 차원의 엇갈림, 애타게 부르짖어도 서로 만나지도 않고 그렇다고 방향(기울기)이 나란하지도 않은 제3의 상태인 ‘꼬인 위치(Skew Lines)’ 를 시각적으로 파악합니다.
- 정육면체 와이어프레임(Wireframe) 구조물을 해킹하여, 파이썬(Python) 렌더링 그래프 코드를 통해 두 선분이 어떻게 3D상에서 허공을 엇갈려 지나가는지 관찰합니다.
1. 꼬인 위치: 같은 하늘 아래 영원한 평행선도 없는 비극
노트 필기장(2차원 종이) 위에서 두 개의 직선을 쭉 긋는다고 상상합시다. 기울기가 조금이라도 다르면 언젠간 우주 어딘가에선 십자(X) 형으로 충돌하게(만나게) 될 것이고, 기울기가 완벽히 똑같다면 영원히 나란히 달려가는 평행선 상태가 됩니다. 2D 세상에서는 이 2가지 분류가 끝입니다.
하지만 Z축(깊이)이 추가된 우주 레벨(3D 공간)로 올라오자마자, “직선 2개” 의 관계는 완전히 새로운 차원의 국면을 맞이합니다.
🌌 [공간에서 두 직선의 위치 관계 3가지]
- 한 점에서 만난다 (우연히 X 자로 충돌)
- 평행하다 (방향이 아예 일치하여 나란함)
- 🚨 꼬인 위치(Skew)에 있다! (방향도 다른데 깊이(높이)마저 달라서 수만 년을 연장해도 충돌하지 않고 휙 엇갈려 지나침)
육교 다리 밑을 지나가는 자동차 도로(직선 A)와, 육교 위를 가로지르는 철도(직선 B)를 상상해보세요. 둘은 위에서 내려다보면 교차하는(X) 것 같지만 옆에서 보면 높이가 달라 절대 충돌하지 않습니다. 그렇다고 둘이 기차 레일처럼 평행한 것도 아닙니다. 이런 상태를 ‘꼬인 위치에 있다’ 고 부릅니다.
2. 꼬인 위치와 “하나의 평면”의 절대 반비례 법칙
앞서 ‘평면의 결정 조건’ 에서 강조했듯, 평행한 두 직선이나 한 점에서 크로스(만나는)하는 두 직선은 그 두 선을 완전히 품고 덮어버릴 수 있는 거대한 평면 뚜껑 하나를 만들어 냅니다.
하지만 꼬인 위치의 두 선분 위로는 죽었다 깨어나도 유리판 1장을 동시에 평평하게 올릴 수 없습니다. 어떻게 올려도 유리판이 부서지거나 한쪽이 떠 버리기 때문입니다. 즉, “꼬인 위치에 있다” = “두 직선은 절대로 하나의 평면 소속이 아니다” 와 완벽히 같은 논리입니다.
3. 💻 파이썬(Python) 엔진: 3D 벡터 회피기동 (꼬인 위치 증명)
정말 두 직선이 고도차에 의해 서로 만나지 않고 비껴가는지, 파이썬의 matplotlib 3D 모듈 플롯 로직을 빌려와 대뇌 가상 현실 시뮬레이터를 가동해 봅시다. (핵심 구조만 시각화)
🐍 파이썬 예제: 3D 좌표 스크립트로 구성한 육교(Skew) 렌더링
import numpy as np
print("--- ⚔️ 3D 입체 기하 렌더링 시스템: 꼬인 위치(Skew) 검증 ---")
# (가상 세팅) 지상 도로 (직선 1): y축 방향으로 난 도로, 고도(z)는 0 (바닥)
# x = 0, y = t, z = 0
line1_start = [0, -10, 0]
line1_end = [0, 10, 0]
# (가상 세팅) 육교 (직선 2): x축 방향으로 난 다리, 고도(z)는 5 (높이 떠있음)
# x = s, y = 3, z = 5
line2_start = [-10, 3, 5]
line2_end = [10, 3, 5]
print("[데이터 수집]")
print(f"지상 도로(Line 1) 벡터 방향: [0, 1, 0] (북쪽)")
print(f"고가 육교(Line 2) 벡터 방향: [1, 0, 0] (동쪽)")
# 로직 점검
print("-" * 50)
print("📡 [위치 관계 3단 스캐닝 룰 가동]")
# 1. 방향이 같은가? (평행 검사) => [0,1,0] 과 [1,0,0] 은 아예 방향이 다름
print("1. 평행 여부 파단: 두 선의 방향 벡터가 전혀 다르므로 '평행 아님(False)'")
# 2. 물리적으로 만나는가? (충돌 검사)
# => z고도가 한 놈은 무조건 0, 다른 한 놈은 무조건 5 이므로 절대로 교차할 일 없음
print("2. 충돌 여부 파단: 고도(Z축) 픽셀이 영구적으로 어긋나 있어 교점 발생 확률 0% '만나지 않음(False)'")
# 3. 결과 도출
print("-" * 50)
print("🚨 [최종 판정: SKEW LINES DETECTED]")
print(" 👉 평행하지도 않고, 영원히 만나지도 않는 공간만의 특수한 성질!")
print(" 👉 이 두 선은 '꼬인 위치' 상태로 확정 렌더링 되었습니다.")
# 결과창:
# --- ⚔️ 3D 입체 기하 렌더링 시스템: 꼬인 위치(Skew) 검증 ---
# [데이터 수집]
# 지상 도로(Line 1) 벡터 방향: [0, 1, 0] (북쪽)
# 고가 육교(Line 2) 벡터 방향: [1, 0, 0] (동쪽)
# --------------------------------------------------
# 📡 [위치 관계 3단 스캐닝 룰 가동]
# 1. 평행 여부 파단: 두 선의 방향 벡터가 전혀 다르므로 '평행 아님(False)'
# 2. 충돌 여부 파단: 고도(Z축) 픽셀이 영구적으로 어긋나 있어 교점 발생 확률 0% '만나지 않음(False)'
# --------------------------------------------------
# 🚨 [최종 판정: SKEW LINES DETECTED]
# 👉 평행하지도 않고, 영원히 만나지도 않는 공간만의 특수한 성질!
# 👉 이 두 선은 '꼬인 위치' 상태로 확정 렌더링 되었습니다.
컴퓨터 상에서 3D 미로 게임을 설계할 때, 복도와 위층 구름다리 계단이 그래픽상 충돌이 일어나는지(만나는지) 체크하는 알고리즘의 원조가 바로 이 중학교 도형 시간의 “꼬인 위치 검출기” 시스템입니다.
[결론] 학습 정리 (Summary)
- 차원 승급의 부작용: 2D 도화지 위에서는 두 선을 아무리 무작위로 그어도 무조건 평행하거나 만나는 결과만이 산출되지만, 3차원 축(Z)이 도달하는 순간 90% 이상의 무작위 두 선분은 서로를 영원히 스쳐 지나가는 ‘꼬인 위치’ 로 비껴가 버립니다.
- 구분하는 꿀팁: 문제지에 정육면체 그림이 나오고 “이 선과 꼬인 위치에 있는 선분을 고르시오” 라는 문제 퀘스트가 주어지면? 타겟 선분과 1) 만나는 놈들 모조리 버리고, 2) 타겟 선분과 나란히 평행한 놈들 모조리 버리고 남은 쩌리 선분들이 바로 꼬인 위치 군단입니다.
- 평면 형성 불가: 꼬불꼬불 휘어진 철사 2개가 만약 ‘꼬인’ 상태라면, 그 둘을 사이에 두고 딱 달라붙는 유리는 우주상에 생산이 불가능하다는 구조적 철벽 룰도 암기해 두십시오.