Hello,
as preparation for the upcoming assembly module I started to write 3D-constraints under logari's advise for his solver. I'm far from finished, but i thougth I share what I've already done to get some feedback (So this mostly concearns logari, i think). These are the constraints working rigth now:
P2PDistance_3D, //point-point distance (works as point-on-point with distance 0)
P2LDistance_3D, //point-line distance (works as point-on-line with distance 0)
P2PLDistance_3D, //point-plane distance (works as point-on-plane with distance 0)
LParallel_3D, //lines-parallel
PLParallel_3D, //planes-parallel
LPerpendicular_3D, //lines-perpendicular
I've attached an archive with a test suit. It's a cmake project creating an executable which reads an xml-file describing the problem to solve (thanks logari for this) and writes a octave-file to show the results (directly executable by octave). Execute like this: solver in.gcs out.m. Examples are included.
Most stuff is in 3DConstraint.h and *.cpp, here is what i changed in the basic solver files:
Geo.h : added 3D points, lines and planes
Constraint.h: added the new constraint types in the type-enum
gcs.cpp: copy the new constraints in the constructor.
Now here are some questions which raised while coding:
1. I don't fully crasp what the scale and maxStep functions in constraints suppose to do. It would be nice to get some theoretical background on this, as from code alone i dont get a full understanding. Seems everything works without implementing them, but i belive I could get prettyer results by using these two.
2. 3D stuff is best done with vectors, so i written my own little vector extension. This was stupid as eigen provides everything I needed (and of course way better), just discoverd that too late. I suppose sticking with eigen is the way to go?
3. Is describing planes with 3 points a good way to go? I think a normal vector and reference point would be nicer, but no idea how to integrate this into the solver.
4. How does the P2PAngle constraint in works in 2D? I've no idea what this one is about, so there is no way for me to extend it in 3D.
I'm off traveling again the next week, so no work will be done on this for a few days. I'm still very excited on the progress I've made and love to hear some of your ideas.
Greetings,
Stefan