src/manifold.rs

Tue, 01 Apr 2025 21:45:15 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Tue, 01 Apr 2025 21:45:15 -0500
changeset 65
d5d746465b6e
parent 56
34f8ec636368
permissions
-rw-r--r--

Another README typofix

13
f67949050a32 documentation
Tuomo Valkonen <tuomov@iki.fi>
parents: 8
diff changeset
1 /*!
f67949050a32 documentation
Tuomo Valkonen <tuomov@iki.fi>
parents: 8
diff changeset
2 Abstract traits for manifolds.
f67949050a32 documentation
Tuomo Valkonen <tuomov@iki.fi>
parents: 8
diff changeset
3 */
5
f248e1434c3b Some distance functions etc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 3
diff changeset
4
37
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
5 use serde::Serialize;
5
f248e1434c3b Some distance functions etc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 3
diff changeset
6 use alg_tools::euclidean::Euclidean;
56
34f8ec636368 Update to current alg_tools
Tuomo Valkonen <tuomov@iki.fi>
parents: 37
diff changeset
7 use alg_tools::instance::{Space, BasicDecomposition};
0
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9 /// A point on a manifold
56
34f8ec636368 Update to current alg_tools
Tuomo Valkonen <tuomov@iki.fi>
parents: 37
diff changeset
10 pub trait ManifoldPoint : Space<Decomp=BasicDecomposition> + Clone + PartialEq {
0
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
11 // Type of tangent factors
37
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
12 type Tangent : Euclidean<f64, Output=Self::Tangent> + std::fmt::Debug + Serialize;
0
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
14 /// Exponential map
8
17d71ca4ce84 Make exp consuming
Tuomo Valkonen <tuomov@iki.fi>
parents: 7
diff changeset
15 fn exp(self, tangent : &Self::Tangent) -> Self;
0
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
16
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17 /// Logarithmic map
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18 fn log(&self, other : &Self) -> Self::Tangent;
5
f248e1434c3b Some distance functions etc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 3
diff changeset
19
f248e1434c3b Some distance functions etc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 3
diff changeset
20 /// Distance to `other`
f248e1434c3b Some distance functions etc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 3
diff changeset
21 fn dist_to(&self, other : &Self) -> f64;
6
df9628092285 Add a zero function on manifolds
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
22
df9628092285 Add a zero function on manifolds
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
23 /// Return the zero tangent at `self`.
df9628092285 Add a zero function on manifolds
Tuomo Valkonen <tuomov@iki.fi>
parents: 5
diff changeset
24 fn tangent_origin(&self) -> Self::Tangent;
0
989e2fe08db2 Basic cube logarithm
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
25 }
5
f248e1434c3b Some distance functions etc.
Tuomo Valkonen <tuomov@iki.fi>
parents: 3
diff changeset
26
7
8979a6638424 A simple test
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
27 /// Point on a manifold that possesses displayable embedded coordinates.
8979a6638424 A simple test
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
28 pub trait EmbeddedManifoldPoint : ManifoldPoint + std::fmt::Debug {
37
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
29 type EmbeddedCoords : std::fmt::Display + Serialize;
7
8979a6638424 A simple test
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
30
8979a6638424 A simple test
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
31 /// Convert a point on a manifold into embedded coordinates
8979a6638424 A simple test
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
32 fn embedded_coords(&self) -> Self::EmbeddedCoords;
8979a6638424 A simple test
Tuomo Valkonen <tuomov@iki.fi>
parents: 6
diff changeset
33 }
37
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
34
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
35 /// Point on a manifold that possesses faces
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
36 pub trait FacedManifoldPoint : ManifoldPoint + std::fmt::Debug {
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
37 type Face : std::fmt::Display + Serialize;
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
38
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
39 /// Convert a point on a manifold into embedded coordinates
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
40 fn face(&self) -> Self::Face;
d7cd14b8ccc0 Basic cylinder implementation
Tuomo Valkonen <tuomov@iki.fi>
parents: 13
diff changeset
41 }

mercurial