aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md33
1 files changed, 32 insertions, 1 deletions
diff --git a/README.md b/README.md
index 765c344..c637b9a 100644
--- a/README.md
+++ b/README.md
@@ -50,8 +50,27 @@ This sums to **95 points**. To score **100 points** (or more!), you’ll need to
Your README **(5 points)** should describe:
1. How to run your program, such as how to load a specific mesh; and
+
+To run my program, you use the basic clion run configuration. Use release mode for best performance.
+
+There are two parameters you must modify: 1) the number of iterations and 2) the mesh to load.
+Both are modifiable on the first two lines in the arap.cpp's init function.
+Use an integer for the num iterations and a string to the path for the mesh.
+
2. _Briefly_, all the features your code implements, including any known bugs.
- - E.g.: "I implemented ARAP ... and affine progressive meshes ... however, my program doesn't work in these specific cases: ..."
+
+I implemented the basics of arap under the move() function. The order of the overall implementation is as follows:
+- When the number of anchors changes:
+ - Estimate pprime from p.
+ - Compute the cotan weights.
+ - Define the constraints map.
+ - Compute the L matrix.
+- For the number of iterations:
+ - Estimate the rotation matrices.
+ - Estimate the positions.
+- Update the mesh vertices.
+
+The number of iterations is statically defined as a parameter.
You should also have all the [example videos](#example-videos) described in the next section embedded in your README.
@@ -67,3 +86,15 @@ For this project, we ask that you demonstrate to us that your program achieves t
| You should be able to make the armadillo wave. | ![](./readme-videos/armadillo.gif) |
| Attempting to deform `tetrahedron.obj` should not cause it to collapse or behave erratically. | ![](./readme-videos/tetrahedron.gif) |
| Attempting to deform a (large) mesh like `bunny.obj` or `peter.obj` should not cause your code to crash. | ![](./readme-videos/peter.gif) |
+
+### Extra Feature: Parallelization
+
+For the solving algorithm, I divided the dimensions and parallelized my code using the QTFramework to concurrently calculate the estimated positions.
+See line 280 in arap.c for the implementation.
+The video below shows both implementations (concurrent and normal) when deforming bunny.obj, a large mesh, at 1000 iterations.
+It appears the concurrent implementation is faster by only about a second.
+
+| Program Specification | Video |
+|:------------------------------------------------------------------|:------------------------------------|
+| Modifying Peter at 1000 iterations with no concurrent framework. | ![](./readme-videos/bunny-conc.gif) |
+| Modifying Peter at 1000 iterations using QTConcurrent map-reduce. | ![](./readme-videos/bunny-norm.gif) |