ProjGeom 1.0.11
Loading...
Searching...
No Matches
pg_concepts.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <array>
8#include <cassert>
9
10#include "common_concepts.h"
11
12namespace fun {
19 template <class Point, class Line>
21 std::equality_comparable<Point> //
22 && requires(const Point& pt_p, const Point& pt_q, const Line& ln_l) {
23 { pt_p.incident(ln_l) } -> std::convertible_to<bool>; // incidence
24 { pt_p.meet(pt_q) } -> std::convertible_to<Line>; // join or meet
25 };
26
33 template <class Point, class Line>
36
44 template <typename Value, class Point, class Line>
46 = std::equality_comparable<Point> && ProjectivePlanePrimitive<Point, Line> //
47 && requires(const Point& pt_p, const Point& pt_q, const Line& ln_l, const Value& a) {
48 { pt_p.aux() } -> std::convertible_to<Line>; // line not incident with pt_p
49 { pt_p.dot(ln_l) } -> std::convertible_to<Value>; // for basic measurement
50 { Point::parametrize(a, pt_p, a, pt_q) } -> std::convertible_to<Point>;
51 };
52
60 template <typename Value, class Point, class Line>
63
64} // namespace fun
Common C++20 concepts: Ring, OrderedRing, Integral, Sequence.
Projective plane Concept (full)
Definition pg_concepts.hpp:35
Projective plane dual Concept.
Definition pg_concepts.hpp:62
Projective plane Concept.
Definition pg_concepts.hpp:20
Projective plane Concept.
Definition pg_concepts.hpp:46
Definition ck_concepts.hpp:11