|
| constexpr | persp_euclid_plane (Point I_re, Point I_im, Line l_inf) |
| | Construct a new persp euclid plane object.
|
| |
| constexpr auto | l_inf () const -> const Line & |
| |
| constexpr auto | perp (const Line &v) const -> Point |
| | Compute the pole of a line.
|
| |
| constexpr auto | is_parallel (const Line &ln_l, const Line &ln_m) const -> bool |
| | Check if two lines are parallel.
|
| |
| constexpr auto | midpoint (const Point &pt_a, const Point &pt_b) const -> Point |
| | Compute the midpoint of two points.
|
| |
| constexpr auto | tri_midpoint (const Triple< Point > &triangle) const |
| | Compute the midpoints of all three sides of a triangle.
|
| |
| constexpr auto | omega (const Point &x) const -> K |
| | Compute the omega value for a point.
|
| |
| constexpr auto | omega (const Line &x) const -> K |
| | Compute the omega value for a line.
|
| |
| template<ProjectivePlane2 _Point> |
| constexpr auto | measure (const _Point &a1, const _Point &a2) const |
| | Compute the cross-ratio measure between two elements.
|
| |
template<typename Point, typename Line = typename Point::Dual>
requires ProjectivePlanePrim<Point, Line>
class fun::persp_euclid_plane< Point, Line >
Perspective-Euclidean plane class.
A Cayley-Klein plane that combines projective geometry with Euclidean metrics.
- Template Parameters
-
| Point | The point type |
| Line | The line type (dual of point) |
template<typename Point , typename Line = typename Point::Dual>
template<ProjectivePlane2 _Point>
Compute the cross-ratio measure between two elements.
Returns the ratio of omega values for measuring projective relationships.
\[
\mu(a_1, a_2) = \frac{\omega(a_1 \times a_2)}{\omega(a_1)\omega(a_2)}
\]
- Parameters
-
| [in] | a1 | First point or line |
| [in] | a2 | Second point or line |
- Returns
- auto The measure value
template<typename Point , typename Line = typename Point::Dual>
| constexpr auto fun::persp_euclid_plane< Point, Line >::midpoint |
( |
const Point & |
pt_a, |
|
|
const Point & |
pt_b |
|
) |
| const -> Point |
|
inlineconstexpr |
Compute the midpoint of two points.
\[
M = \operatorname{parametrize}(\alpha,\; a,\; \beta,\; b)
\]
where \(\alpha = a \cdot l_\infty\), \(\beta = b \cdot l_\infty\).
- Parameters
-
| [in] | pt_a | First point |
| [in] | pt_b | Second point |
- Returns
- Point The midpoint
template<typename Point , typename Line = typename Point::Dual>
Compute the omega value for a line.
The omega function measures how far a line is from the ideal points.
\[
\omega(l) = (l \cdot I_{\mathrm{re}})^2 + (l \cdot I_{\mathrm{im}})^2
\]
- Parameters
-
- Returns
- K The omega value
template<typename Point , typename Line = typename Point::Dual>
Compute the pole of a line.
\[
v^\perp = \alpha I_{\mathrm{re}} + \beta I_{\mathrm{im}}
\]
where \(\alpha = v \cdot I_{\mathrm{re}}\) and \(\beta = v \cdot I_{\mathrm{im}}\).
- Parameters
-
- Returns
- Point The pole (polar) of the line