[SOLVED] CSE4020 - Computer Graphics - Lab Assignment 6

30.00 $

Category:

Description

5/5 - (3 votes)

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

  1. def myFrustum(left, right, bottom, top, near, far):
  2. Set the window title to your student ID and the window size to (480,480).
  3. 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

 

  1. Find code for drawFrame(), drawCubeArray() from 6-Viewing & Projection2 & mesh
  2. DO NOT use gluLookAt() inside myLookAt() and glFrustum() inside myFrustum()!
  3. Your program should render the following scene:
  4. Hint:
    1. To implement myLookAt(), see lecture slide 5-reference-viewing. To implement myFrustum(), see lab slide 6-Viewing & Projection2, mesh .
    2. l2 norm of v : ||v|| = np.sqrt( np.dot(v, v) )
    3. a x b (cross product) : np.cross(a, b)
    4. a ȡ b (inner product) : np.dot(a, b) or a@b
    5. Use glMultMatrixf() to multiply your projection matrix and viewing matrix to the current transformation matrix

 

  1. Write down a Python program to draw following cube (࡫ࢽִ঑) by using indexed squares representation and glDrawElements().
  2. Length of each line is 1.5
  3. 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)