ECS175 Assignment 3: 3D Matrix Transformations
In this assignment you will learn how to implement many of the transformation matrices used in graphics programming. You will implement a matrix class that supports the creation of affine transformations (translate, rotate, scale), and view and projection matrices. In addition you will implement matrix multiplication to combine matrices. Finally, you will use this class to render and manipulate a 3D box. The code to render the box is provided with the template, but you need to provide the correct Model- View-Projection matrix to correctly display it.
This assignment requires you to understand the basics of linear algebra including vertex math and matrix operations. You also need to understand the types of matrices commonly used in computer graphics and their place and function in the rendering pipeline.
Refer to Chapter 4 in the textbook, excluding topics on Normals. Requirements
Copyright By PowCoder代写 加微信 powcoder
When complete, your assignment should fulfill the following requirements:
Successfully render a wireframe box
Support perspective and orthographic projections
Support look-at style view matrix
Support three animation types that change the model matrix
Translation from left to right
Rotation in any axis or combination thereof
Oscillating up- and down-scaling
“Off” mode, that resets the model matrix and stops the animation
The template contains a file assignment3.js which contains empty classes and/or methods that need to be implemented by you. There are several comments to give you hints on what each part of the code needs to do.
Grading Criteria
3 pts Correct affine transformation implementations (Translate, Scale, Rotate, etc.) 2pts LookAt / View matrix implementation
2pts Perspective projection matrix
2pts Orthographic projection matrix
3 pts Matrix multiplication
2 pts Correct application/combination of model, view, projection matrices in WebGLApp 1 pts Correct animations as described above
How to Get Started
Click on this link to join the assignment on Github Classroom and get access to your personal repository.
After you join, you might be prompted with a message like this:
You can disregard that message and head directly to your repository (blurred-out section in the image).
You will use this repository to manage your submission. Please commit and push regularly to save your work.
We provide a code template that contains basic files to get you started. The provided template is an HTML5/JS webpage that you can display by hosting the index.html file locally and viewing the local URL
in your browser of choice. We strongly recommend developing in Google Chrome as it will be the platform used for grading. We’ll show you how to simply host a page locally in one of the lectures.
How to Submit Your Work
Submit this homework by submitting the URL to your Github repository along with your Github username here on Canvas.
Structure your Canvas submission like this:
Github User: [your Github username here]
Repository: [your repository URL here]
Your work has to be submitted to Canvas and pushed to Github before the due date. We will consider the latest commit for grading, so consider if your improvements are worth a late penalty.
We do not grade a program that does not run. Late submissions will lose 10% per day.
You are encouraged to help one another, but you must write your own code. If you use somebody else’s code, document it. You must abide by the UC Davis Code of Academic Conduct.
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com