This project is configured using Visual Studio, using external libraries such as Eigen, Yaml, etc., these external libraries are managed by vcpkg
In my environment, the project should be built under Release and x64 mode, and vcpkg should have the packages as follow:
eigen3:x64-windows-static
fmt:x64-windows-static
yaml-cpp:x64-windows-static
Every time, in the initialization process, calculate the magnetization process and calculate the field around the surface of each micro-robot, the torque to each ball, then based on the field generate the magnetic line’s start points. In the first step, move all the test particles to form the magnetic line.
To run the project, you should enter into ./MagneticLinePlotting/Binary/Release/ and run Demo.exe with the command line parameters.
-t 0two balls and each ball contains three chains-t 1two balls and each ball contains three disks with the ratio of short axis and long axisba-t 2two uniform balls-t 3two peanuts and each peanut is formed by two balls, each ball contains three disks with the ratio of short axis and long axisba-t 4seven balls and each ball contains three disks with the ratio of short axis and long axisba-t 5seven uniform balls-t 6same as-t 1but with different orientation-t 7three balls arranged like an equilateral triangle and each ball contains three disks with the ratio of short axis and long axisba-t 8four balls arranged like a square and each ball contains three disks with the ratio of short axis and long axisba-t 9five balls arranged like three equilateral triangles and each ball contains three disks with the ratio of short axis and long axisba-t 10six balls arranged like an big equilateral triangle and each ball contains three disks with the ratio of short axis and long axisba-t 11three balls arranged in a special shape and each ball contains three disks with the ratio of short axis and long axisba-t 12seven balls arranged in a hexagon and each ball contains three chains-t 13seven uniform balls arranged in a hexagon-t 14one ball contains three disks-t 15like-t 11but another special shape-t 16like-t 7but uniform balls-t 17like-t 8but uniform balls-t 18like-t 17but another shape-t 19like-t 9but uniform balls-t 20like-t 10but uniform balls-t 21two balls and each ball contains single bundle
- If you just want the magnetic line drawn in the plane not all the space, please turn on
PLANARMOTION - If you want to draw the total field not only the field by the micro-robots, please turn on
DRAWALLFIELD - If you want to change the allowed space to draw the magnetic line, feel free to change the range in
bool collide2particle(const VectorDd &) const - In the
void printTorque(), there is some options for you to choose which torque to print - If you want to rotate the external field, please turn on
ROTATEEXTERNALFIELD - If you want to test the interaction just for one ball, please turn on
TESTONEBALL - If you want to make the lines denser, please add the limitation of the
cntinvoid generateSampleParticle() - If the distribution has any symmetric, please turn on the corresponding manipulation after generate the test particles in
void generateSampleParticle()