Description
Write your own myLookAt() and myFrustum() functions (of the following form) that behaves exactly same as gluLookAt() and glFrustum().
def myLookAt(eye, at, up): # eye, at, up are 1D numpy array of length 3
- def myFrustum(left, right, bottom, top, near, far):
- Set the window title to your student ID and the window size to (480,480).
- Code skeleton
def render(): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glEnable(GL_DEPTH_TEST)
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ) glLoadIdentity()
myFrustum(-1,1, –1,1, 1,10)
myLookAt(np.array([5,3,5]), np.array([1,1,-1]), np.array([0,1,0]))
# Above two lines must behave exactly same as the below two lines
#glFrustum(-1,1, -1,1, 1,10)
#gluLookAt(5,3,5, 1,1,-1, 0,1,0)
drawFrame()
glColor3ub(255, 255, 255) drawCubeArray()
def myFrustum(left, right, bottom, top, near, far):
# implement here
def myLookAt(eye, at, up): # implement here
- Find code for drawFrame(), drawCubeArray() from 6-Viewing & Projection2 & mesh
- DO NOT use gluLookAt() inside myLookAt() and glFrustum() inside myFrustum()!
- Your program should render the following scene:
- Hint:
- To implement myLookAt(), see lecture slide 5-reference-viewing. To implement myFrustum(), see lab slide 6-Viewing & Projection2, mesh .
- l2 norm of v : ||v|| = np.sqrt( np.dot(v, v) )
- a x b (cross product) : np.cross(a, b)
- a ȡ b (inner product) : np.dot(a, b) or a@b
- Use glMultMatrixf() to multiply your projection matrix and viewing matrix to the current transformation matrix
- Write down a Python program to draw following cube (ࢽִ) by using indexed squares representation and glDrawElements().
- Length of each line is 1.5
- Start from the code in 6-Viewing & Projection2 & mesh Make sure camera
PDQLSXODWLRQVKRUWFXWVěĜěĜěĜěZĜZRUN’RQĜWQHHGWRFDUHDERXWLQLWLDOYLHZDQJOH D. Set the window titleand the window size to (480,480)




