Description
1. Write down a Python program to visualize ZXZ Euler angles.
A. This is how ZXZ Euler angles works
i. Rotate along Z-D[LVE\ſ
ii. Rotate along X-D[LVRIWKHQHZIUDPHE\ƀ
iii. Rotate along Z-axis of the new frame by Ɓ
B. Start from 9-Orientation&Rotation practice code, implement ZXZ Euler angles and add
FRGHWRFKDQJHſƀƁYDOXHVLQWKHIROORZLQJZD\
i. ,I\RXSUHVVRUUHSHDWDNH\WKHYDOXHRIſƀƁVKRXOGEHFKDQJHGDVVKRZQLQWKH
table:Key Transformation
A Increase ſ by 10
Z Decrease ſ by 10
S Increase ƀ by 10
X Decrease ƀ by 10
D Increase Ɓ by 10
C Decrease Ɓ by 10
V Initialize orientation
C. Hint: You do not need to store a composed rotation matrix as a global variable. You can
MXVWVWRUHſƀƁDVJOREDOYDULDEOHV.
D. Set the window title to your student ID and the window size to (480,480).
E. Expected result: Uploaded LabAssignment9-1.mp4
F. Files to submit: A Python source file (Name the file whatever you want (in English).
Extension should be .py)
2. Write down a Python program to compare 4 orientation interpolation methods.
A. First, implement following functions:
B. exp & log functions
i. exp(rv)
1. Converts a rotation vector to a rotation matrix
2. You can use Rodrigues’ rotation formula or the method in 9-Orientation& Rotation
3. Returns a rotation matrix
ii. log(R)
1. Converts a rotation matrix to a rotation vector
2. You can use the method in 9-Orientation& Rotation slides.
3. Returns a rotation vector (the length of the vector is the rotation angle)
C. Interpolation functions:
i. slerp(R1, R2, t) – slerp
1. R1 & R2: rotation matrices for start & end orientationsii. interpolateRotVec(rv1, rv2, t) – interpolate each element of two vectors
1. rv1 & rv2: rotation vectors for start & end orientations
iii. interpolateZYXEuler(euler1, euler2, t) – interpolate each element of two euler angle
tuples
1. euler1 & euler2: tuples of ZYX Euler angles for start & end orientations (euler1[0]:
xang, euler1[1]: yang, euler1[2]: zang)
iv. interpolateRotMat(R1, R2, t) – interpolate each element of two matrices
1. R1 & R2: rotation matrices for start & end orientations
D. For all interpolation functions:
i. All interpolation functions return a rotation matrix
ii. The parameter t ranges from 0.0 to 1.0
E. Start from the uploaded code skeleton (LabAssignment9-2-code-skeleton.py).
F. You will need to use
i. The given lerp() for interpolateRotVec(), interpolateZYXEuler(), interpolateRotMat()
ii. The given ZYXEulerToRotMat() for interpolateZYXEuler()
iii. Your exp(), log() implementation for slerp(), interpolateRotVec()
G. Program usage (already implemented in the code skeleton):
i. When the program is run, only slerp() result is visible
ii. A key: Toggle slerp() result
iii. S key: Toggle interpolateRotVec() result
iv. D key: Toggle interpolateZYXEuler() result
v. F key: Toggle interpolateRotMat() result
vi. Z key: Hide all results
vii. X key: Show all results
H. Set the window title to your student ID and the window size to (480,480).
I. Expected result: Uploaded LabAssignment9-2.mp4J. Files to submit: A Python source file (Name the file whatever you want (in English).
Extension should be .py)