Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ All notable Changes to the Julia package `LieGroups.jl` will be documented in th
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] unreleased
## [0.1.0] unreleased

Everything denoted by “formerly” refers to the previous name in [`Manifolds.jl`](https://juliamanifolds.github.io/Manifolds.jl/stable/).

Expand Down
3 changes: 3 additions & 0 deletions docs/CondaPkg.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[deps]
jupyter = ""
python = "3.11"
3 changes: 3 additions & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ if run_quarto || run_on_CI
run(`quarto render $(tutorials_folder)`)
return nothing
end
else
# fallback to at least create empty files for tutorials that are directly linked from the docs
touch(joinpath(@__DIR__, "src/tutorials/getstarted.md"))
end

# (d) load necessary packages for the docs
Expand Down
45 changes: 44 additions & 1 deletion docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,47 @@ CurrentModule = LieGroups

```@docs
LieGroups.LieGroups
```
```

The implemented [Lie groups](https://en.wikipedia.org/wiki/Lie_group) are implemented using the interface for manifolds in [`ManifoldsBase.jl`](@extref ManifoldsBase :doc:`index`) together with additional interfaces [for Lie groups](interface/group.md) and [Lie algebras](interface/algebra.md) as well as internally using the manifolds implemented in [`Manifolds.jl`](@extref Manifolds :doc:`index`).

For more general information about the history of and contributions to the package see the [About](about.md) page.

## Getting started

To install the package just type

```julia
using Pkg; Pkg.add("LieGroups")
```

Then you can directly start, for example consider the [`SpecialEuclideanGroup`](@ref)
``\mathrm{SE}(3)`` representing all orientations and places an object can take in ``ℝ^3``.
These are characterised by a ``3×3`` rotation matrix together with a point the object is at.
For example.
having such a point, we can use the Lie group logarithmic function [`log(G::SpecialEuclideanGroup, g)`](@ref)
and the Lie group exponential function [`exp(G::SpecialEuclideanGroup, X)`](@ref)
to create an orientation “half the way” from the origin pose.

The default representation is in [homogeneous coordinates]()

```@example start
using LieGroups
SE3 = SpecialEuclideanGroup(3)
g = 1/sqrt(2) .* [1.0 -1.0 0.0 0.0; 1.0 1.0 0.0 3.0*sqrt(2); 0.0 0.0 sqrt(2) 0.0; 0.0 0.0 0.0 sqrt(2)]
```

Then half that pose is

```@example start
h = exp(SE3, 0.5 .* log(SE3, g))
```

To check, just “perform that movement” twice with the group operation
[`compose`](@ref) of `h` with itself to get `g` back

```@example start
compose(SE3, h, h)
```

for more details see the [get started](tutorials/getstarted.md) tutorial.
22 changes: 19 additions & 3 deletions docs/src/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#
#
# A
# ------------------------------------------------------------------------------------------
@article{AndricaRohan:2013,
AUTHOR = {Andrica, D. and Rohan, R.-A.},
ISSUE = {2},
Expand All @@ -28,9 +29,7 @@ @book{BinzPods:2008
#
#
# G
#
# G
# ----------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------
@article{GallierXu:2002,
AUTHOR = {Gallier, J and Xu, D},
ISSUE = {4},
Expand Down Expand Up @@ -58,6 +57,7 @@ @inproceedings{Giles:2008
#
#
# H
# ------------------------------------------------------------------------------------------
@book{HilgertNeeb:2012,
AUTHOR = {Hilgert, Joachim and Neeb, Karl-Hermann},
DOI = {10.1007/978-0-387-84794-8},
Expand All @@ -67,6 +67,22 @@ @book{HilgertNeeb:2012
YEAR = {2012}
}

#
#
# L
# ------------------------------------------------------------------------------------------
@article{LatifiToomanian:2013,
AUTHOR = {Latifi, Dariush and Toomanian, Megerdich},
DOI = {10.1186/2251-7456-7-37},
ISSN = {2251-7456},
JOURNAL = {Mathematical Sciences},
MONTH = aug,
NUMBER = {1},
PAGES = {37},
TITLE = {On the existence of bi-invariant {Finsler} metrics on {Lie} groups},
VOLUME = {7},
YEAR = {2013}
}
#
#
# S
Expand Down
2 changes: 1 addition & 1 deletion docs/src/tutorials/transition.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ The list is alphabetical, but first lists types, then functions
| `SemidirectProductGroup(G, H, a)` | [`LeftSemidirectProductLieGroup`](@ref)`(G, H, a)` | While this staid the same, there is now also the [`default_left_action`](@ref)`(G,H)`. When this agrees with `a` you can use the short hand `G⋉H` to generate this semidirect product. Analogously there now also exists the [`RightSemidirectProductLieGroup`](@ref)`(G,H)` with[`default_left_action`](@ref)`(G,H)` that allows for the short cut `G⋊H` |
| `RightBackwardAction` | [`RightGroupOperationAction`](@ref) | |
| `RightForwardAction` | [`InverseLeftGroupOperationAction`](@ref) | note that this is an [`AbstractRightGroupActionType`](@ref) |
| `adjoint` | [`adjoint`](@ref) | now implemented with a default, when you provide [`diff_conjugate!`](@ref).
| `adjoint_action` | [`adjoint`](@ref) | now implemented with a default, when you provide [`diff_conjugate!`](@ref).
| `apply_diff` | [`diff_apply`](@ref) | modifiers (diff) come first, consistent with [`ManifoldsDiff.jl`](https://juliamanifolds.github.io/ManifoldDiff.jl/stable/) |
| `apply_diff_group` | [`diff_group_apply`](@ref) | modifiers (diff/group) come first, consistent with [`ManifoldsDiff.jl`](https://juliamanifolds.github.io/ManifoldDiff.jl/stable/) |
| | [`conjugate`](@ref), [`diff_conjugate`](@ref) | a new function to model ``c_g: \mathcal G → \mathcal G`` given by ``c_g(h) = g∘h∘g^{-1}`` |
Expand Down
2 changes: 1 addition & 1 deletion src/interface.jl
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ _doc_exponential = """
exp(G::AbstractLieGroup, X::T)
exp!(G::AbstractLieGroup, g, X)

Compute the (Lie group) exponential function
Compute the (Lie group) exponential function

```math
$(_tex(:exp))_{$(_math(:G))}: $(_math(:𝔤)) → $(_math(:G)),$(_tex(:qquad)) $(_tex(:exp))_{$(_math(:G))}(X) = γ_X(1),
Expand Down
10 changes: 10 additions & 0 deletions tutorials/Project.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
[deps]
IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a"
LieGroups = "6774de46-80ba-43f8-ba42-e41071ccfc5f"
Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e"
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
Rotations = "6038ab10-8711-5258-84ad-4b1120ba62dc"

[compat]
IJulia = "1.26"
LieGroups = "0.0.3"
Manifolds = "0.10.14"
RecursiveArrayTools = "3.31"
Rotations = "1.7"
Loading