web vpython이란?
3d 객체를 만들고 애니메이션을 적용할 수 있는 파이썬 패키지. 쉬운 것이 특징이며, 특히 web에서 바로 별도의 패키지 설치 없이 vpython을 다루고 그 결과를 시각적으로 확인할 수 있다는 점이 장점이다.
예제 구경하기
아래 web vpython은 특유의 웹 접근성을 잘 이용해서 다양한 예제를 웹으로 손쉽게 보여주고 있다. 아래 예제 사이트에 접속하면 web vpython으로 만들 수 있는 다양한 산출물을 확인할 수 있다.
.
web vpython 시작하기
‘설치’가 아니라 ‘시작’임에 주목하자. web vpython은 web에서 작업 가능하므로 별도의 패키지 설치가 필요 없다. https://glowscript.org 에 접속 후 오른쪽 위 sign in 을 클릭하여 로그인하자.

그리고, 아래와 같이 ‘here’을 클릭하면 자신의 작업 폴더가 뜬다.

작업 폴더에서, Create New Program이 새 프로그램을 만드는 버튼이다.

클릭하면, 작업 코드 창이 뜬다.

라인1에 기본값으로 Web VPython 3.2라고 적힌 것은 지우면 안 된다.
web vpython 큰 그림
사실 web vpython은 파이썬 패키지 중에서도 굉장히 쉬운 축에 속한다. 큰 그림만 이해하면 작업하기 쉽다. 동적 움직임은 보통 아래와 같이 2단계를 통해 구현된다.
| [1단계] 도형 만들기 [2단계] 도형 움직이기 (도형의 위치를 시각 t에 관한 식으로 표현) |
‘움직이는 공’ 만들기가 아니라,
- 멈춰 있는 공을 만든 후
- 그 공을 움직이게 하기
라는 큰 그림을 이해하는 것이 중요하다.
특히 [2단계]의 ‘시각 t에 관한 식으로 표현’이라는 부분은 수학교사라면 누구나 자신 있는 일일 것이다. 특히, 속도, 가속도, 거리 개념까지 잘 알면 도형의 속도, 가속도까지 식을 통해 제어할 수 있다. 그래서, vpython은 정보 교사보다도 수학 교사에게 유난히 쉬운 코딩이기도 하다.
[1단계] 도형 만들기
이제 도형을 만들어 보자. 일단, 중심이 원점에 위치하고 반지름 길이가 1인 빨간 공을 만들어 보자.
redball = sphere(pos=vec(0, 0, 0), radius=1, color=color.red)그러고 나서, 별도 저장 없이 바로 Run this program을 클릭하면 아래와 같이 빨간 공이 만들어져 있음을 확인할 수 있다.

공이 너무 커 보이는 이유는 카메라가 도형에 너무 가까이 있기 때문이다. 아래 방법을 통해 적절히 거리를 조정할 수 있고 각도도 조정할 수 있다.
| 컴퓨터 | 모바일기기 | 비고고 | |
| 줌 아웃 | 마우스 휠 아래로 | 손가락으로 줌 아웃 | |
| 줌 인 | 마우스 휠 위로 | 손가락으로 줌 인 | |
[2단계] 도형 움직이기
시각 변수 t를 설정하고 프레임마다 t가 조금씩 증가하는 반복문을 만듦으로써 시간이 흐르는 것을 구현하면 된다.
t = 0
redball = sphere(pos=vec(0, 0, 0), radius=1, color=color.red)
t = 0
while True :
rate(7) # 7만큼 시간 지연
t += 0.1
print(t)이까지 하면, 비록 빨간 공은 아직 움직이지 않지만 시간을 흐를 것이다. 실제로 실행해보면 하단의 터미널을 통해 시간이 빠른 속도로 증가함을 확인할 수 있다.

이제 빨간 공이 x축의 양의 방향으로 움직이게 만들어 보자. 그러면,
- 공의 x 좌표 : t
- 공의 y,z좌표 : 상수 (0이라 두자)
라 두면 충분할 것이다. 실제로 코드를 짜 보면,
redball = sphere(pos=vec(0, 0, 0), radius=1, color=color.red)
t = 0
while True :
rate(7) # 7만큼 시간 지연
t += 0.1
redball.pos = vec(t, 0, 0)공이 서서히 x축의 양의 방향으로 등속운동함을 볼 수 있다.
Q. 태양을 중심으로 공전하는 지구를 만드시오. (단, 공전궤도는 원, 속도는 등속운동으로 간소화할 것)
정답 보기
Web VPython 3.2
sun = sphere(pos=vec(0, 0, 0), radius=1, color=color.red)
earth = sphere(pos = vec(1,0,0), radius = 0.2, color = color.blue)
t = 0
while True :
rate(7) # 7만큼 시간 지연
t += 0.1
earth.pos = vec(5*cos(t), 5*sin(t), 0).
>>강의 목록 가기
>>이전 강의 가기(3강.numpy)
>>다음 강의 가기(5강) 준비중
댓글 남기기