Find the tangent space of the solution variety #28
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
During (or immediately thereafter in the "background" if doing it in combination slows user responsiveness) constraint solving, find the tangent space of the solution variety. Project all initial/short-range motions of the assembly onto the tangent space before re-solving exactly.
Testing
Manual
Implement some simple motion commands, like pushing a sphere along the standard unit directions. Note that the final outcome of such a motion should satisfy all constraints, which the initial projection might only approximately do. So perhaps a distinction needs to be made between the "approximate projected push" and the "final push position".
Automated
Build a simple assembly with a known tangent space and verify that projection works as expected. If there is a separate final recalculated position post-push, that should be tested too.
Some thought/care needs to be given to what the expected outcome is when the current configuration is (a) infinitesimally rigid or (b) rigid but not infinitesimally rigid (hope I got the implication in the right direction). I mean, in case there are no global position or orientation constraints, you can always translate/rotate the entire assembly. But perhaps that never happens in the "initial push" but only in the "exact re-solve"? Not clear to me. I guess in the case of (b), the initial push moves along the apparent direction of freedom and then the re-solve restores the starting configuration? But then does that scheme become frustrating for the user? And does it block the drag of the entire assembly like you might be able to do with an infinitesimally rigid one? These subtleties need working out at some point...