http://www.python.org

http://www.vpython.org

Here is a complete VPython program that produces a 3D animation of a red ball bouncing on a blue floor. Note that in the "while" loop there are no graphics commands, just computations to update the position of the ball and check whether it hits the floor. The 3D animation is a side effect of these computations.

여기에 파란 바닥에서 붉은색 공이 튀어오르는 완전한 3D 애니메이션을 작성하는 VPython 프로그램이 있다.

"while"루프안에 그래픽 명령이 없는 것을 주목하라. 단지 공의 위치가 변화하는 것을 적용할 뿐이다. 그리고

어디서 바닥에 부딪치는 지 확인하라. 이 3D 애니메이션은 이 계산의 주변효과일 뿐이다.

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)

ball = sphere (pos=(0,4,0), radius=1, color=color.red)

ball.velocity = vector(0,-1,0)

dt = 0.01

while 1:

rate (100)

ball.pos = ball.pos + ball.velocity*dt

if ball.y < ball.radius:

ball.velocity.y = -ball.velocity.y

else:

ball.velocity.y = ball.velocity.y - 9.8*dt

The program starts by importing the module "visual" which enables 3D graphics.

A box and a sphere are created and given names "floor" and "ball" in order to be able to refer to these objects.

The ball is given a vector velocity.

In the while loop, "rate(100" has the effect "do no more than 100 iterations per second, no matter how fast the computer."

The ball's velocity is used to update its position, in a single vector statement that updates x, y, and z.

Visual periodically examines the current values of each object's attributes, including ball.pos, and paints a 3D picture.

The program checks for the ball touching the floor and if necessary reverses the y-component of velocity,

otherwise the velocity is updated due to the gravitational force.

이 프로그램은 3D 그래픽을 가능하게 하는 "visual"모듈을 임포트하므로써 시작한다.

박스와 구면체는 "floor"와 "ball"의 이름으로 생성되고 명명된다.

구면체는 주어진 vector 속도를 가진다.

루프안의 "rate"(100 은 초당 반복을 의미하고, 이것은 컴퓨터의 속도에 관계없다)

구면체의 속도는 구면체의 위치의 변화를 적용하는데 사용되고, 간단한 vector의 정의는 그것의 x,y,z로 한다.

각각의 물체들의 속성의 적용시점의 값을 계산하면 주기적으로 운동하는 것이 보이게 되고, 프로그램은

y속도를 체크하면서 구면체가 바닥과 접촉하는지를 체크하고, 다른면에선 그 속도는 중력에 의해서 변화된다.

+ Recent posts