201702GraduateEx0102 - dknife/Graduate2017_Autumn GitHub Wiki

from OpenGL.GLUT import *
from OpenGL.GL import *
from OpenGL.GLU import *
import numpy as np

Loc = np.array([0,1,0])
Vel = np.array([0,0,0])
GAcc = np.array([0,-9.8, 0])


def move() :
    global Loc, Vel, GAcc
    dt = 0.0001
    Vel = Vel + GAcc * dt;
    Loc = Loc + Vel*dt;
    ## collision
    if Loc[1] < 0.0 :
        Loc[1] = - Loc[1]
        if Vel[1]<0.0  :
            Vel[1] = - Vel[1]

    glutPostRedisplay()  ## Hey! Draw Function! Draw!



def draw():
    glClear(GL_COLOR_BUFFER_BIT)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(60, 1.0, 0.1, 1000);
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()
    gluLookAt(0.0,2.0,5.0, 0.0,0.0,0.0, 0.0,1.0,0.0)
    glPushMatrix()
    glTranslatef(Loc[0], Loc[1], Loc[2])
    glColor3f(1,0,0)
    glutWireSphere(0.1, 30,30)
    glPopMatrix()
    glFlush()

def GLinit() :
    glClearColor(0, 0, 1, 1)

glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(250, 250)
glutInitWindowPosition(100, 100)
glutCreateWindow(b"OpenGL with Python")
GLinit()
glutDisplayFunc(draw)
glutIdleFunc(move)
glutMainLoop()

# End of program