1#ifndef CHRYSALIS_CONFIG_H
2#define CHRYSALIS_CONFIG_H
4#include <CGAL/Exact_circular_kernel_2.h>
5#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
13 static constexpr auto PRECISION = 15;
17 using LinearKernel = CGAL::Exact_predicates_inexact_constructions_kernel;
22 using Ray = CGAL::Ray_2<LinearKernel>;
23 using Line = CGAL::Line_2<LinearKernel>;
24 using Point = CGAL::Point_2<LinearKernel>;
25 using Vector = CGAL::Vector_2<LinearKernel>;
26 using Segment = CGAL::Segment_2<LinearKernel>;
28 using CPoint = CGAL::Point_2<CircularKernel>;
29 using Circle = CGAL::Circle_2<CircularKernel>;
30 using CArcPoint = CGAL::Circular_arc_point_2<CircularKernel>;
32 using CCIntersection = CGAL::CK2_Intersection_traits<CircularKernel, Circle, Circle>::type;
36 double sin(
double value);
37 double cos(
double value);
38 double round(
double value);
48 template<
typename T1,
typename T2>
49 std::optional<Point>
intersection(
const T1& obj1,
const T2& obj2) {
50 const auto intersection = CGAL::intersection(obj1, obj2);
53 return point ? std::optional(*point) : std::nullopt;
Vector rotate(const Vector &vector, double angle)
Definition CGAL.cpp:22
double round(double value)
Definition CGAL.cpp:17
CGAL::Vector_2< LinearKernel > Vector
Definition CGAL.h:25
Point projection(const Point &point, const Line &line)
Definition CGAL.cpp:54
CGAL::Ray_2< LinearKernel > Ray
Definition CGAL.h:22
CGAL::Exact_predicates_inexact_constructions_kernel LinearKernel
Definition CGAL.h:17
std::optional< Point > intersection(const T1 &obj1, const T2 &obj2)
Definition CGAL.h:49
CGAL::Circular_arc_point_2< CircularKernel > CArcPoint
Definition CGAL.h:30
double cos(double value)
Definition CGAL.cpp:9
Point circlesIntersection(const Point &anchor, CPoint center1, double radius1, CPoint center2, double radius2)
Definition CGAL.cpp:68
CGAL::Aff_transformation_2< LinearKernel > Transformation
Definition CGAL.h:20
std::optional< Point > yIntersection(const Point &pointFrom, const Point &pointTo)
Definition CGAL.cpp:63
double length(const Point &pointFrom, const Point &pointTo)
Definition CGAL.cpp:36
Point relativePoint(const Point &pointFrom, const Vector &vector)
Definition CGAL.cpp:45
CGAL::Line_2< LinearKernel > Line
Definition CGAL.h:23
double sin(double value)
Definition CGAL.cpp:5
CGAL::CK2_Intersection_traits< CircularKernel, Circle, Circle >::type CCIntersection
Definition CGAL.h:32
double radians(double degrees)
Definition CGAL.cpp:13
CGAL::Segment_2< LinearKernel > Segment
Definition CGAL.h:26
Point mirror(const Point &point, const Point ¢er)
Definition CGAL.cpp:41
CGAL::Circle_2< CircularKernel > Circle
Definition CGAL.h:29
CGAL::Point_2< CircularKernel > CPoint
Definition CGAL.h:28
CGAL::Point_2< LinearKernel > Point
Definition CGAL.h:24
std::optional< Point > xIntersection(const Point &pointFrom, const Point &pointTo)
Definition CGAL.cpp:58
CGAL::Exact_circular_kernel_2 CircularKernel
Definition CGAL.h:18
double angle(const Vector &vector1, const Vector &vector2)
Definition CGAL.cpp:27