06. 여섯 번째 수업: 파이썬 코드로 쏘아 올리는 대포알 (Applications)

비디오 게임에서 궁수가 포물선으로 화살을 쏘거나, 레이더가 전투기의 궤적 각도를 역추적 타깃 산출할 때, 삼각비(SOH CAH TOA)와 피타고라스 도구는 거대한 3D 엔진 코어의 심장처럼 쉬지 않고 루프를 돕니다.

물리학과 삼각비, 파이썬이 만나는 기적의 접점을 보여드리겠습니다.

삼각비와 벡터 파이썬 응용 SVG

1. 게임 물리 엔진: 발사체 궤도 분리하기 (벡터 분해)

슈팅 게임 서버에서 플레이어가 포신을 대각선 $30^\circ$ 방향으로 치켜들고 초속 $100\text{m}$ 의 매우 강력한 스피드($H$, 빗변 대각선 길이)로 대포알을 발사했다고 가정합시다. 이 대포알이 1초 뒤에 “오른쪽으로(가로 $X$ 눈금) 얼마나 이동했는지”, 그리고 “공중 위로(수직 $Y$ 눈금) 얼마나 솟구쳤는지” 좌표 $x, y$를 따로 분리해서 계산해야 컴퓨터 화면에 대포알 그래픽을 새로고침하여 $60\text{fps}$ 프레임으로 그릴(Rendering) 수 있습니다.

어떻게 해야 할까요? 대각선 힘 덩어리($100\text{m/s}$)를 가로 선($x$) 과 세로 선($y$) 으로 쪼개어(투영, Projection) 분리해야 합니다. 바로 그 유명한 투영 쪼개기 도구 가 삼각비의 핵심 사인(Sine)코사인(Cosine) 모듈입니다.

  • 가로 $X$ 바닥 그림자 전진폭 구하기 (CAH) : $X = 100 \times \cos(30^\circ)$
  • 세로 $Y$ 하늘 수직 솟구침 튕기기 (SOH) : $Y = 100 \times \sin(30^\circ)$

이 공식을 그대로 컴퓨터 스크립트로 짜서 좌표로 박아주면 대포알 그래픽이 날아갑니다!

2. 역추적 미사일 시스템: 아크(Arc) 역삼각함수

이번에는 철저히 반대의 로직을 해킹해 볼까요. ‘역추적’ 입니다. 적군 헬기가 우리 기지 기준 오른쪽 $X$ 로 $40\text{m}$ 진출해 있고, 위쪽 $Y$ 로 하늘 높이 $30\text{m}$ 떠올라 호버링(Hovering) 중이라는 점 레이더가 잡혔습니다.

Q. 이 지대공 자동 미사일 대포 포탑의 포신 각도(각도 $\theta$)를 하늘로 몇 도로 처들고, 발사 거리는 몇 미터로 세팅해야 헬기 한가운데를 정확히 맞추어 뚫어 쏠 수 있을까요?

우리에겐 밑변 $A(40)$, 높이 $O(30)$ 즉, 두 개의 변 길이는 이미 레이더 스크린에 포착되었지만 발사체 무기의 기준 발사각(Degree $\theta$) 이 도둑맞고 텅텅 블랭크로 비어있습니다.

  • 피타고라스 대공망 (빗변 쏘는 거리계산): 거리는 쉽습니다. 사거리는 $30^2 + 40^2 = 900 + 1600 = 2500$. 루트를 씌우면 타깃 대각선 거리는 정확히 $50\text{m}$ 앞입니다.
  • 아크 탄젠트 ($\arctan$ / math.atan): 자, 각도가 문제군요. $\tan(\theta) = \frac{30}{40} = 0.75$ 가 된다는 사실은 압니다. 하지만 탄젠트 값이 $0.75$ 일 때 우리 인간의 뇌는 “탄젠트 값이 0.75면 대체 몇 도라는 소리야?” 하고 멘붕에 빠집니다.

이때 컴퓨터 파이썬 math 라이브러리의 아크-탄젠트(math.asin, math.atan -> “역삼각함수 Inverse Trig”) 명령어를 부르면 역추적을 단 $0.1$밀리 초만에 해 냅니다.

# [Python Code] 방공 미사일 레이더 타겟 자동 조준 시스템 역추적
import math

# 레이더 데이터 타깃 정보
target_X = 40  # 우측 거리 (밑변 Adjacent)
target_Y = 30  # 상공 높이 (높이 Opposite)

# 1. 포탑이 위로 치켜들어야 할 절대 각도를 아크 탄젠트로 역 추적 해킹!
# 높이(30) / 밑변(40) 의 비율 0.75 를 넘겨주면, 거기에 해당하는 극비 각도를 반환함
tangent_ratio = target_Y / target_X

# 파이썬 math.atan 은 라디안(우주각) 으로 결과를 토해낸다.
angle_radian = math.atan(tangent_ratio)

# 2. 미사일 기수 시스템(인간 관측수) 이 알 수 있도록 보기 편한 디그리(Degree 도) 로 역번역
aim_angle_degree = math.degrees(angle_radian)

print(f"🎯 삐빅. 타깃을 발견했습니다. 포탑을 위로 정확히 {aim_angle_degree:.2f} 도 만큼 들어 올립니다!! 발사!")

실행하면 포탑을 위로 정확히 36.87 도 만큼 들어 올립니다!! 라며 대공망 각도를 마법처럼 찾아냅니다. (이것이 그 유명한 $3:4:5$ 직각삼각형의 숨겨진 비율의 진실 중 하나였습니다.)

삼각비. $1$차원 선을 넘어서 우주 공간과 별자리, 그리고 공기역학적인 각도의 비밀을 다루기 위한 인류 제일의 위대한 각도 무기. 자루로 재지 마시죠, 컴퓨터 삼각비로 한 번에 시대를 베어 빗변으로 쏘아 넘기세요. 다음 삼각비 2부 과정에서는 삼각형이 드디어 닫힌 울타리의 직각 $90$도를 깨부수고, 둥근 곡선 우주의 영원한 원형 궤도, $360$도 (파동과 주파수) Unit Circle (단위원) 세계로 미쳐 날뛰며 나아가는 장관을 만날 수 있습니다.

서브목차