Task 1. Use your halfedge mesh structure from Homework 1, further extend the geometry/halfedge.ts and geometry/primitive.ts file and implement the Laplacian smoothing algorithm for the uniform and the cotan Laplace-Beltrami operator.
The initial setup is a black screen, and the smoothed version of the original bunny mesh:
Laplacian | t=0.500 |
t=2.000 |
t=5.000 |
t=10.000 |
---|---|---|---|---|
Uniform | ||||
Cotan | ||||
Uniform | ||||
Cotan |
where t
is the time step and all reference results are performed for 1
smooth step.
Task 2. Answer questions regarding the implementation.
Implementation complexity: Which code snippet (report in line numbers) in the geometry/primitive.ts
or geometry/halfedge.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
βββ 3-smooth <-- Project skeleton
βββ homeworks
βββ changkun <-- GitHub username
βββ 3-smooth <-- Actual submission