← 00차시 Python 핵심 복습으로

수업 보충 · 4단계 설명

컴퓨터 화면에서 공은 왜 아래로 떨어질까?

화면 좌표계 → 위치·속도 → 중력과 저항 → 프레임별 계산까지 순서대로 이해합니다. 아래에는 이전에 작성한 4단계 설명 원문도 그대로 보존했습니다.

1단계 · 화면 좌표계

수학 좌표계와 컴퓨터 화면 좌표계 비교

수학 좌표계

위쪽이 +y, 아래쪽이 −y입니다.

+y ↑−y ↓+x →
컴퓨터 화면 좌표계

아래쪽이 +y, 위쪽이 −y입니다.

−y ↑+y ↓+x →

학생에게 질문: “공을 위로 쏘아 올리려면 y 속도(vy)를 양수로 해야 할까요, 음수로 해야 할까요?”
정답: 화면에서 y가 줄어야 위로 움직이므로 vy = -3처럼 음수로 지정합니다.

2단계 · 위치와 속도

네 줄의 코드로 이해하는 움직임

x += vx
y += vy
vy += 0.15
vx *= 0.96

① x += vx, y += vy

현재 위치에 이번 프레임에 이동할 거리를 더합니다. vx=6이면 오른쪽으로 6픽셀, vy=-3이면 위쪽으로 3픽셀 움직입니다.

② vy += 0.15

화면 아래 방향(+y)으로 속도가 매 프레임 0.15씩 증가합니다. 위로 가는 음수 속도가 줄어들고, 나중에는 아래 방향으로 바뀝니다.

③ vx *= 0.96

수평 속도가 직전 프레임의 96%가 됩니다. 감소율 4%를 여러 번 적용하는 단순한 저항 모델입니다.

④ 코드를 반복 실행하면?

속도가 다음 프레임의 위치를 결정합니다. 화면은 계산을 여러 번 반복하면서 부드럽게 움직이는 듯 보입니다.

3단계 · 숫자 직접 계산

프레임마다 어떤 값이 달라질까요?

초기값: x=0, y=0, vx=6, vy=-3. 한 프레임에서 먼저 위치를 바꾸고, 이어서 중력·저항을 적용합니다.

0프레임 완료
프레임x 위치y 위치vxvy
초기006−3

교사용 수치표에서 1프레임 종료 시 (x, y)=(6,−3), (vx, vy)=(5.76,−2.85)이며 두 번째 종료 시 (11.76,−5.85), (약 5.53,−2.70)입니다. 수치는 소수 둘째 자리로 표시할 수 있습니다.

4단계 · 학생 발문

값을 바꿔 생각하기

Q1. vx *= 0.96을 vx *= 1.0으로 바꾸면?

정답 보기

수평 속도가 감소하지 않으므로 이 모형에서는 매 프레임 같은 수평 거리를 이동합니다.

Q2. vy += 0.15를 없애면?

정답 보기

초기 음수 수직 속도가 그대로 유지되므로, 이 네 줄만 사용하는 모형에서는 공이 계속 위로 움직입니다. 수평 방향에는 저항이 적용됩니다.

Q3. 폭죽 입자 효과는 어떻게 만들까요?

정답 보기

입자마다 방향과 초기 속도를 다르게 정해 생성하고, 같은 업데이트 규칙을 반복 적용하면 됩니다.

원본 4단계 설명 전체

보관된 「파이썬 중력설명.pdf」의 설명을 수업 참고용으로 옮겼습니다. 수치와 발문을 원문과 비교할 수 있습니다.

원본 설명 펼쳐 보기
학생들에게 게임이나 그래픽의 물리 엔진이 작동하는 원리를 설명할 때는 "컴퓨터 화면 좌표계"의 특성을 먼저 짚어주고, "위치 → 속도 → 중력/저항"의 3단계 흐름으로 설명하는 것이 가장 효과적입니다. 수업 시간에 바로 활용하실 수 있도록 4단계 설명 가이드를 정리했습니다. 1단계: 컴퓨터 화면의 좌표계 다듬기 (선행 개념) 수학 시간의 y축과 컴퓨터 화면의 y축이 다르다는 점을 먼저 짚어줍니다. 수학 좌표계: 위로 갈수록 +y, 아래로 갈수록 −y 컴퓨터 화면: 아래로 갈수록 +y 핵심 질문: "공을 위로 쏘아 올리려면 y 속도(vy)를 양수로 해야 할까요, 음수로 해야 할까요?" 👉 정답: 위로 가려면 y 가 줄어들어야 하므로 음수(vy = -3)여야 합니다. 2단계: 코드 한 줄씩 쉽게 비유하기 (개념 연결) x += vx # 1. 위치 이동 (수평) y += vy # 2. 위치 이동 (수직) 설명: "현재 위치에 속도(1프레임 동안 움직일 거리)를 계속 더해주는 거야. vx = 6이면 오른쪽으로 6픽셀씩, vy = -3이면 위쪽으로 3픽셀 씩 이동해." vy += 0.15 # 3. 중력 적용 설명: "지구가 밑에서 끌어당기니까 아래쪽(+y 방향)으로 속도가 점점 늘어나. 위로 올라가던 속도(-3)가 +0.15씩 더해지면서 점점 느려지 다가, 결국 양수가 되어 아래로 떨어지게 돼." vx *= 0.96 # 4. 공기 저항 적용 설명: "공기 때문에 오른쪽으로 가는 속도가 매 순간 96%(0.96)로 줄어들어. 1보다 작은 수를 계속 곱하면 속도가 줄어들어서 결국 멈추게 되지." 3단계: 프레임별 값 변화 표로 직접 손으로 풀어보기 학생들이 코드의 실행 과정을 눈으로 확인할 수 있도록 첫 2~3프레임의 계산 과정을 함께 따라가 보는 것이 좋습니다. 초기 상태: 위치 (0, 0), 속도 vx = 6, vy = -3 프레임 1. 위치 계산 (x, y) 2. 속도 업데이트 (vx, vy) 비고 0번 x = 0 + 6 = 6 vx = 6 × 0.96 = 5.76 위로 올라가는 중 프레임 1. 위치 계산 (x, y) 2. 속도 업데이트 (vx, vy) 비고 y = 0 + (−3) = −3 vy = −3 + 0.15 = −2.85 x = 6 + 5.76 = 11.76 vx = 5.76 × 0.96 = 5.53 1번 여전히 위로 올라가지만 수직 속도가 줄어듦 y = −3 + (−2.85) = −5.85 vy = −2.85 + 0.15 = −2.70 4단계: 학생 호기심 유발을 위한 질문 던지기 (실습/발문) 1. "만약 vx *= 0.96 에서 0.96 을 1.0 으로 바꾸면 공은 어떻게 움직일까?" 👉 공기 저항이 없어져서 오른쪽으로 가는 속도가 줄어들지 않고 영원히 앞으로 날아갑니다. 2. "중력 효과(vy += 0.15 )를 없애고(0 으로 만들고) 공을 쏘면 어떻게 될까?" 👉 대각선 위로 일직선으로 날아가다가 공기 저항 때문에 천천히 멈춥니다. 3. "폭죽 터지는 이펙트를 만들려면 이 코드를 어떻게 응용하면 될까?" 👉 여러 개의 입자(파티클)를 만들고, 각 입자의 초기 vx, vy를 랜덤한 방향으로 뿌려주면 됩니다.

위 수업용 풀이와 원본 문장의 모형이 조금 다른 경우, 실제 코드의 업데이트 순서를 기준으로 계산하세요. Pygame 원본에는 수직 속도의 저항(vy *= 0.96)도 있지만 여기서는 핵심 네 줄만 분리해 학습합니다.