You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 2, 2024. It is now read-only.
Copy file name to clipboardExpand all lines: docs/api/kln::entity.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -156,7 +156,7 @@ Ex: The exterior product $e_1 \wedge \mathbf{e}_{32}$ is $-\mathbf{e}_{123}$.
156
156
157
157
Poincaré Dual
158
158
159
-
The Poincaré Dual of an element is the "subspace complement" of the argument with respect to the pseudoscalar. In practice, it is a relabeling of the coordinates to their dual-coordinates and is used most often to implement a "join" operation in terms of the exterior product of the duals of each operand.
159
+
The Poincaré Dual of an element is the "subspace complement" of the argument with respect to the pseudoscalar in the exterior algebra. In practice, it is a relabeling of the coordinates to their dual-coordinates and is used most often to implement a "join" operation in terms of the exterior product of the duals of each operand.
160
160
161
161
Ex: The dual of the point $\mathbf{e}_{123} + 3\mathbf{e}_{013} - 2\mathbf{e}_{021}$ (the point at $(0, 3, -2)$) is the plane $e_0 + 3e_2 - 2e_3$.
Copy file name to clipboardExpand all lines: docs/api/kln::plane.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,9 @@ The plane multivector in PGA looks like $d\mathbf{e}_0 + a\mathbf{e}_1 + b\mathb
18
18
`public `[`plane`](#structkln_1_1plane_1a29dbb1804fa3ec402f901ca8049d60bc)`(float * data) noexcept` | Data should point to four floats with memory layout `(d, a, b, c)` where `d` occupies the lowest address in memory.
19
19
`public explicit `[`plane`](#structkln_1_1plane_1a4fe52a0426bc881947909d0d9b1745d0)`(`[`entity`](/Klein/api/kln::entity#structkln_1_1entity)`< 0b1001 > const & other) noexcept` | Line to plane cast.
20
20
`public void `[`load`](#structkln_1_1plane_1a5a00871dbe19d7658b7e8cda71b326f2)`(float * data) noexcept` | Unaligned load of data. The `data` argument should point to 4 floats corresponding to the `(d, a, b, c)` components of the plane multivector where `d` occupies the lowest address in memory.
21
+
`public `[`plane`](#structkln_1_1plane)` KLN_VEC_CALL `[`operator()`](#structkln_1_1plane_1a1c7a11e35d91c2aee88a4152b1799ca9)`(`[`plane`](#structkln_1_1plane)` const & p) const noexcept` | Reflect another plane $p_2$ through this plane $p_1$. The operation performed via this call operator is an optimized routine equivalent to the expression $p_1 p_2 p_1$.
22
+
`public `[`line`](/Klein/api/kln::line#structkln_1_1line)` KLN_VEC_CALL `[`operator()`](#structkln_1_1plane_1a782e4e0b1b93ab5bffb2c972f6d7acfa)`(`[`line`](/Klein/api/kln::line#structkln_1_1line)` const & l) const noexcept` | Reflect line $\ell$ through this plane $p$. The operation performed via this call operator is an optimized routine equivalent to the expression $p \ell p$.
23
+
`public `[`point`](/Klein/api/kln::point#structkln_1_1point)` KLN_VEC_CALL `[`operator()`](#structkln_1_1plane_1a20b6577f6d1717e1ec086314d3ebd497)`(`[`point`](/Klein/api/kln::point#structkln_1_1point)` const & p) const noexcept` | Reflect the point $P$ through this plane $p$. The operation performed via this call operator is an optimized routine equivalent to the expression $p P p$.
Reflect another plane $p_2$ through this plane $p_1$. The operation performed via this call operator is an optimized routine equivalent to the expression $p_1 p_2 p_1$.
Reflect line $\ell$ through this plane $p$. The operation performed via this call operator is an optimized routine equivalent to the expression $p \ell p$.
Reflect the point $P$ through this plane $p$. The operation performed via this call operator is an optimized routine equivalent to the expression $p P p$.
`public explicit `[`point`](#structkln_1_1point_1ad149cbbf9e9a7e77fc680b808e971ee0)`(`[`entity`](/Klein/api/kln::entity#structkln_1_1entity)`< 0b1001 > const & e) noexcept` | A point projected onto a line will have an extinguished partition-0, which necessitates this explicit cast when it is known to be safe.
17
18
`public void `[`load`](#structkln_1_1point_1a805739dde6d772f5b228cce5b95ef13f)`(float * data) noexcept` | Fast load from a pointer to an array of four floats with layout `(w, z, y, x)` where `w` occupies the lowest address in memory.
Copy file name to clipboardExpand all lines: docs/overview.md
+10-5Lines changed: 10 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,18 @@
2
2
3
3
Working with Klein is designed to be as simple as it is efficient. To "grok" the API, the main thing
4
4
to understand is that everything that has an underlying multivector representation is an
5
-
[`entity`](/Klein/api/kln::entity) which means that all operations supported by the entity will be
5
+
[`entity`](../api/kln::entity) which means that all operations supported by the entity will be
6
6
inherited.
7
7
8
-
The entities provided are Euclidean objects ([`points`](/Klein/api/kln::point), [`lines`](/Klein/api/kln::line), [`planes`](/Klein/api/kln::plane)), objects that arise in
9
-
Projective space ([`directions`](/Klein/api/kln::direction), [`ideal lines`](/Klein/api/kln::ideal_line)),
10
-
and geometric actions ([`rotors`](/Klein/api/kln::rotor), [`translators`](/Klein/api/kln::translator),
11
-
[`motors`](/Klein/api/kln::motor)).
8
+
The entities provided are Euclidean objects ([`points`](../api/kln::point), [`lines`](../api/kln::line), [`planes`](../api/kln::plane)), objects that arise in
9
+
Projective space ([`directions`](../api/kln::direction), [`ideal lines`](../api/kln::ideal_line)),
10
+
and geometric actions ([`rotors`](../api/kln::rotor), [`translators`](../api/kln::translator),
11
+
[`motors`](../api/kln::motor), and [`planes`](../api/kln::plane)).
12
+
13
+
!!! note
14
+
15
+
The call operator on a plane performs a _reflection_ of the passed entity through the plane. The call operator on a rotor performs a _rotation_ of the entity. The translator
16
+
translates, and the motor performs a combination of a rotation and a translation.
12
17
13
18
The multivector operations such as the geometric product, exterior product, regressive product, etc.
14
19
are supported for all the listed entities above via the following operator table:
0 commit comments