Starting from:

$30

Computer Graphics-Lab Assignment 4 Solved

Write down a Python program to draw a transformed triangle in a 2D space. 

A.     Set the window title to your student ID and the window size to (480,480). 

B.     Complete the render() function below to draw a triangle in the manner described in C. 

i. You have to use OpenGL transformation functions. Do not use numpy matrix multiplication for composing transformations. 

def render():
 
    glClear(GL_COLOR_BUFFER_BIT)
    glLoadIdentity()
 
 

     # draw cooridnates     glBegin(GL_LINES)     glColor3ub(255, 0, 0)     glVertex2fv(np.array([0.,0.]))     glVertex2fv(np.array([1.,0.]))     glColor3ub(0, 255, 0)     glVertex2fv(np.array([0.,0.]))     glVertex2fv(np.array([0.,1.]))     glEnd() 

 

    glColor3ub(255, 255, 255) 

 

    ###########################
    # implement here
 
    ###########################
 

    drawTriangle() 

 

def drawTriangle():
 
    glBegin(GL_TRIANGLES)
 
    glVertex2fv(np.array([0.,.5]))     glVertex2fv(np.array([0.,0.]))     glVertex2fv(np.array([.5,0.]))
    glEnd()
 

 
 
C.     If you press or repeat a key, the triangle should be transformed as shown in the Table: 

Key 
Transformation 

Translate by -0.1 in  x direction 

Translate by 0.1 in x direction 

Rotate by 10 degrees counterclockwise 

Rotate by 10 degrees clockwise 

Reset the triangle with identity matrix 
D.     Transformations should be accumulated (composed with previous one) unless you press ‘1’. 

                i.      You may need a global variable (like a python list object) to store key inputs.  

E.      Files to submit: A Python source file (Name the file whatever you want (in English). Extension should be .py) F. Expected result:  

 

2. Write down a Python program to draw rotating point p1=(0.5, 0), p2=(0, 0.5) and vector v1=(0.5, 0), v2=(0, 0.5) in a 2D space. 

A.     Set the window title to your student ID and the window size to (480,480). 

B.     Use the following render() and fill "# your implementation" parts to render p1,p2 and v1,v2. 

i.          Hint: Render the vector v1, v2 as a line segment starting from the origin (0,0). 

ii.         Hint2: You need different translation matrix for p1 and p2 to render them correctly. 

def render(th):
 
    glClear(GL_COLOR_BUFFER_BIT)
    glLoadIdentity()
 
 


    # draw cooridnate     glBegin(GL_LINES)
 

 
    glColor3ub(255, 0, 0)
 
    glVertex2fv(np.array([0.,0.]))     glVertex2fv(np.array([1.,0.]))
    glColor3ub(0, 255, 0)
 
    glVertex2fv(np.array([0.,0.]))     glVertex2fv(np.array([0.,1.]))
    glEnd()
 
    
 
glColor3ub(255, 255, 255)
 
 

    # calculate matrix M1, M2 using th  
 
# your implementation
 

 
    # draw point p
 
    glBegin(GL_POINTS)
 
    # your implementation
    glEnd()
 
 

    # draw vector v
 
    glBegin(GL_LINES)
 
 
# your implementation
    glEnd()
 

 
C.     Expected result: Uploaded LabAssignment4-2.mp4 

                i.       Do not mind the initial angle. 

D.     p1,p2 and v1,v2 should be -t rad rotated when t seconds have elapsed since the program was executed. 

E.      You need to somehow combine a rotation matrix and a translation matrix to produce the expected result. 

F.      Files to submit: A Python source file (Name the file whatever you want (in English). Extension should be .py) 

 

More products