More indentation fixes.

release/4.3a0
Paul Furgale 2014-12-08 08:55:14 +00:00
parent 21596e1894
commit 2b1d907a74
1 changed files with 16 additions and 16 deletions

View File

@ -38,15 +38,15 @@ Chart
A given chart is implemented using a small class that defines the chart itself (from manifold to tangent space) and its inverse. A given chart is implemented using a small class that defines the chart itself (from manifold to tangent space) and its inverse.
* types: * types:
* `ManifoldType`, a pointer back to the type * `ManifoldType`, a pointer back to the type
* valid expressions: * valid expressions:
* `v = Chart::Local(p,q)`, the chart, from manifold to tangent space, think of it as *q (-) p* * `v = Chart::Local(p,q)`, the chart, from manifold to tangent space, think of it as *q (-) p*
* `p = Chart::Retract(p,v)`, the inverse chart, from tangent space to manifold, think of it as *p (+) v* * `p = Chart::Retract(p,v)`, the inverse chart, from tangent space to manifold, think of it as *p (+) v*
For many differential manifolds, an obvious mapping is the `exponential map`, which associates straight lines in the tangent space with geodesics on the manifold (and it's inverse, the log map). However, there are two cases in which we deviate from this: For many differential manifolds, an obvious mapping is the `exponential map`, which associates straight lines in the tangent space with geodesics on the manifold (and it's inverse, the log map). However, there are two cases in which we deviate from this:
* Sometimes, most notably for *SO(3)* and *SE(3)*, the exponential map is unnecessarily expensive for use in optimization. Hence, the `defaultChart` functor returns a chart that is much cheaper to evaluate. * Sometimes, most notably for *SO(3)* and *SE(3)*, the exponential map is unnecessarily expensive for use in optimization. Hence, the `defaultChart` functor returns a chart that is much cheaper to evaluate.
* While vector spaces (see below) are in principle also manifolds, it is overkill to think about charts etc. Really, we should simply think about vector addition and subtraction. Hence, while a `defaultChart` functor is defined by default for every vector space, GTSAM will never call it. * While vector spaces (see below) are in principle also manifolds, it is overkill to think about charts etc. Really, we should simply think about vector addition and subtraction. Hence, while a `defaultChart` functor is defined by default for every vector space, GTSAM will never call it.
Group Group
@ -54,15 +54,15 @@ Group
A [group](http://en.wikipedia.org/wiki/Group_(mathematics)) should be well known from grade school :-), and provides a type with a composition operation that is closed, associative, has an identity element, and an inverse for each element. A [group](http://en.wikipedia.org/wiki/Group_(mathematics)) should be well known from grade school :-), and provides a type with a composition operation that is closed, associative, has an identity element, and an inverse for each element.
* values: * values:
* `group::identity<G>()` * `group::identity<G>()`
* valid expressions: * valid expressions:
* `group::compose(p,q)` * `group::compose(p,q)`
* `group::inverse(p)` * `group::inverse(p)`
* `group::between(p,q)` * `group::between(p,q)`
* invariants (using namespace group): * invariants (using namespace group):
* `compose(p,inverse(p)) == identity` * `compose(p,inverse(p)) == identity`
* `compose(p,between(p,q)) == q` * `compose(p,between(p,q)) == q`
* `between(p,q) == compose(inverse(p),q)` * `between(p,q) == compose(inverse(p),q)`
We do *not* at this time support more than one composition operator per type. Although mathematically possible, it is hardly ever needed, and the machinery to support it would be burdensome and counter-intuitive. We do *not* at this time support more than one composition operator per type. Although mathematically possible, it is hardly ever needed, and the machinery to support it would be burdensome and counter-intuitive.
@ -83,8 +83,8 @@ Even finite groups can act on continuous entities. For example, the [cyclic grou
Hence, we formalize by the following extension of the concept: Hence, we formalize by the following extension of the concept:
* valid expressions: * valid expressions:
* `group::act(g,t)`, for some instance of a space T, that can be acted upon by the group * `group::act(g,t)`, for some instance of a space T, that can be acted upon by the group
* `group::act(g,t,H)`, if the space acted upon is a continuous differentiable manifold * `group::act(g,t,H)`, if the space acted upon is a continuous differentiable manifold
Group actions are concepts in and of themselves that can be concept checked (see below). Group actions are concepts in and of themselves that can be concept checked (see below).
@ -133,8 +133,8 @@ Testable
Unit tests heavily depend on the following two functions being defined for all types that need to be tested: Unit tests heavily depend on the following two functions being defined for all types that need to be tested:
* valid expressions: * valid expressions:
* `print(p,s)` where s is an optional string * `print(p,s)` where s is an optional string
* `equals(p,q,tol)` where tol is an optional tolerance * `equals(p,q,tol)` where tol is an optional tolerance
Implementation Implementation
============== ==============