Task 1. Use your halfedge mesh structure from Homework 1, further extend the geometry/mesh_param.ts file and implement Tutte's barycentric embedding algorithm for mesh parameterization using for uniform and the cotan Laplacian weights.
The original bunny mesh and parameterization:
The computed Tutte's parameterization:
Laplacian | Disk | Rectangle |
---|---|---|
Uniform | ||
Cotan |
*Note that a mesh must contain at least one boundary.
Task 2. Answer questions regarding the implementation.
Implementation complexity: Which code snippet (report in line numbers) in the geometry/mesh_param.ts
is the most time consuming for you to implement? Explain your coding experience and encountered challenges briefly.
TODO: your answer goes here
Debugging complexity: Describe an impressive bug that you wrote while implementing this project, and briefly explain how you fixed it.
TODO: your answer goes here
Runtime performance: Which part of your code could be a bottleneck and how the computation performance could be improved?
TODO: your answer goes here
In short: Send a pull request.
To submit a solution, one should create a folder named by the corresponding GitHub username in the homeworks
folder and that folder will serve for all future submissions.
For example, in the homeworks
folder, there is an existing folder changkun
that demonstrates how to organize submissions:
gp
βββ README.md <-- Top level README
βββ 4-param <-- Project skeleton
βββ homeworks
βββ changkun <-- GitHub username
βββ 4-param <-- Actual submission