CSE 4020 Computer Graphics, Lab Assignment 4

$24.99

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (4 votes)

1. 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
Q Translate by -0.1 in x direction
E Translate by 0.1 in x direction
A Rotate by 10 degrees counterclockwise
D Rotate by 10 degrees clockwise
1 Reset the triangle with identity matrix
D. 7UDQVIRUPDWLRQVVKRXOGEHDFFXPXODWHG FRPSRVHGZLWKSUHYLRXVRQH XQOHVV\RXSUHVVěĜ
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)