artivis / manif

A small C++11 header-only library for Lie theory.
https://artivis.github.io/manif
MIT License
1.46k stars 239 forks source link

Provide a way to check if group is compact or not at compile and run time. #261

Open slovak194 opened 1 year ago

slovak194 commented 1 year ago

Dear @artivis @joansola,

I find it potentially useful to have the possibility to check whether the group is compact or not. Both at compile and run time. That looks like is a natural property of a group.

Please, let me know what you think.

Best regards, Alex

artivis commented 1 year ago

Hi @slovak194,

This makes sense. Would a static member like the existing Group::Dim/DoF... work for you?

artivis commented 1 year ago

@joansola Any thought on this? How about the name of such variable?

joansola commented 1 year ago

Two questions:

Are'nt all groups in manif compact?

What is the purpose of this information?

Missatge de Jeremie Deray @.***> del dia dj., 19 de gen. 2023 a les 18:40:

@joansola https://github.com/joansola Any thought on this? How about the name of such variable?

  • Group::Compact
  • Group::IsCompact
  • something else?

— Reply to this email directly, view it on GitHub https://github.com/artivis/manif/issues/261#issuecomment-1397365782, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAS2LPKV4ZHIPICAQ7FFOLDWTF4A5ANCNFSM6AAAAAAT5RLSTU . You are receiving this because you were mentioned.Message ID: @.***>

artivis commented 1 year ago

Are'nt all groups in manif compact?

I might be mistaken but I believe they are not. R^n isn't compact ( ]-inf, +inf[ ) and thus neither are SE2/3 etc.

What is the purpose of this information?

@slovak194 ?

slovak194 commented 1 year ago

As far as I understand, only purely rotational groups in Manif can be considered compact. Yes, the first step I thought is to provide static member as @artivis has suggested. But there might be another step is to specify the range of unique parametrization for tangent.

The purpos on my side is related to the way how covariance for the group is expressed on a tangent space. As it only makes some sense if +- 3 sigma is inside this unique parametrization. Or maybe half of it.

Best regards, Alex

joansola commented 1 year ago

Oh I see. Yes, this makes sense.

Would this binary marker compact / non-compact be enough then? How to systematize a specification of the first cover of the manifold by the tangent space?

So far, all groups in manif define this first cover by the norm of the rotational part of the tangent vector being inferior to PI.

Is it then generalizable to define the first cover through a maximum radius? I am unsure of these things in the general case.

joansola commented 1 year ago

@joansola Any thought on this? How about the name of such variable?

* `Group::Compact`

* `Group::IsCompact`

* something else?

I tend to prefer IsCompact over Compact

joansola commented 1 year ago

Oh I see. Yes, this makes sense.

Would this binary marker compact / non-compact be enough then? How to systematize a specification of the first cover of the manifold by the tangent space?

So far, all groups in manif define this first cover by the norm of the rotational part of the tangent vector being inferior to PI.

Is it then generalizable to define the first cover through a maximum radius? I am unsure of these things in the general case.

Would it be interesting / useful to have a test function in the group indicating whether a tangent vector is in the first cover of the manifold or beyond?

Tangent::inFirstCover() --> bool