Open artivis opened 4 years ago
@joansola I thrown here a few initial ideas on improving act
, any thoughts??
Notice that, at the moment, I tend to favor option 3.
I'll edit the ticket to keep it up to date with the discussion.
Complex groups are SE(3)
, SE_2(3)
, Sgal(3)
.
I was thinking, regarding act()
in all complex groups. Maybe we could have special actions. In case e.g. of SGal3
, we would have:
T+R*p
and other possible actions only available for this group.
In SE3 we have a similar problem, in
T+R*p
R*v
In manif
we already have some examples on non-abstracted methods:
asSO3()
<-- for SE3
, SE23
, SGal3
E6()
<-- for the generatorsso I see no fundamental impediment for act()
. In fact, it is possible that act()
as an abstract form is not convenient, precisely because actions are not pre-defined operations for Lie groups in their abstract form.
At the moment, the
act
function treats its input argument as a point and act on it accordingly (e.g. SE2 rotates and translates). It would be great ifact
could act appropriately on different objects, likely vectors and points at first.Options
This calls for a rethinking/redesign of the function with the following options:
enum
)struct assumePoint
)Pro/cons:
1.
Pro:
Cons:
act
implementation is going to be a bigswitch
enum
for every new object2.
Pro:
Cons:
3.
Pro:
Cons:
class Point
)Pseudo-code for each options:
act( obj, Ja, Jb, flag )
act< flag >( obj, Ja, Jb )
act( Vector, Ja, Jb )
act( Point, Ja, Jb )