-
Notifications
You must be signed in to change notification settings - Fork 5
Instructions
To apply the 2D DSC method to your application, simply follow these few steps:
You can either use the default setup in the DEMO folder (the demo.cpp, user_interface.h, user_interface.cpp, draw.h and draw.cpp source files) or incorporate the DSC method in an existing setup. If you choose the latter, please use the default setup as starting point.
Create a your own velocity function class which extends the VelocityFunc class. This class should as minimum override the get_name() and deform() functions. The get_name() function should return a string with the name of the velocity function and the deform() function should have the following signature:
-
For each interface node **n** in the dsc-
Calculate a new position **p** according to the velocity function -
Call _set_destination_( **n**, **p** )
-
-
Call _deform_()
Three examples of velocity functions can be found in the repository in the DEMO folder: A rotation function (rotate_function.h), a function which smooths the model (average_function.h) and a function which moves the interface in the normal direction (normal_function.h).
Three default initialisation functions are provided with the DEMO application (rotate_square(), smooth_square() and expand_blobs()). Use these as your starting point when creating a new initialisation function. An initialisation function should contain the following:
- Construct a new instance of the DeformableSimplicialComplex class.
- Construct a new instance of a velocity function class (for example the one created in step 2).
- Optional: Construct a new instance of the Log class.
Note: If you use the default setup in the DEMO application, you have to add the initialisation function to the keyboard() function.
When the DeformableSimplicialComplex object is constructed, several parameters are set to control the min/max edge length, min/max angle etc. of the simplicial complex. You can change these parameters by extending the DeformableSimplicialComplex class and override the constructor.