LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
intersectionhandler.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "cad/math/equation.h"
5 #include <Eigen/Dense>
10 #include "cad/geometry/geocircle.h"
11 #include "cad/geometry/geoarc.h"
13 #include "cad/geometry/geospline.h"
14 #include "cad/math/helpermethods.h"
15 
16 namespace lc {
17  namespace maths {
18  class Intersection {
19  public:
20  static std::vector<lc::geo::Coordinate> LineLine(
21  const Equation& l1, const Equation& l2);
22  static std::vector<lc::geo::Coordinate> LineQuad(
23  const Equation& l1, const Equation& q1);
24  static std::vector<geo::Coordinate> QuadQuad(
25  const Equation& l1, const Equation& l2);
26  static std::vector<geo::Coordinate> bezierLine(
27  geo::BB_CSPtr B, const geo::Vector& V);
28  static std::vector<geo::Coordinate> bezierCircle(
29  geo::BB_CSPtr B, const geo::Circle& C);
30  static std::vector<geo::Coordinate> bezierArc(
31  geo::BB_CSPtr B, const geo::Arc& A);
32  static std::vector<geo::Coordinate> bezierEllipse(geo::BB_CSPtr B, const geo::Ellipse& E);
33  static std::vector<geo::Coordinate> bezierBezier(
35 
36  static std::vector<geo::Coordinate> splineLine(
37  geo::Spline B, const geo::Vector& V);
38  static std::vector<geo::Coordinate> splineCircle(
39  geo::Spline B, const geo::Circle& C);
40  static std::vector<geo::Coordinate> splineArc(
41  geo::Spline B, const geo::Arc& A);
42  static std::vector<geo::Coordinate> splineEllipse(geo::Spline B, const geo::Ellipse& E);
43  static std::vector<geo::Coordinate> splineBezier(
44  geo::Spline B1, geo::BB_CSPtr B2);
45  static std::vector<geo::Coordinate> splineSpline(
46  geo::Spline B1, geo::Spline B2);
47  static std::vector<geo::Coordinate> bezCircleIntersect(lc::geo::BB_CSPtr bez, const geo::Coordinate &ec, double rx, double ry);
48  private:
49  static void bezBez(const geo::BB_CSPtr B1, const geo::BB_CSPtr B2, std::vector<geo::Coordinate>&ret);
50  };
51  }
52 }
static std::vector< geo::Coordinate > splineLine(geo::Spline B, const geo::Vector &V)
static std::vector< geo::Coordinate > splineEllipse(geo::Spline B, const geo::Ellipse &E)
static std::vector< geo::Coordinate > splineArc(geo::Spline B, const geo::Arc &A)
static std::vector< geo::Coordinate > bezCircleIntersect(lc::geo::BB_CSPtr bez, const geo::Coordinate &ec, double rx, double ry)
static std::vector< lc::geo::Coordinate > LineQuad(const Equation &l1, const Equation &q1)
static void bezBez(const geo::BB_CSPtr B1, const geo::BB_CSPtr B2, std::vector< geo::Coordinate > &ret)
static std::vector< geo::Coordinate > bezierCircle(geo::BB_CSPtr B, const geo::Circle &C)
Definition: cadentity.h:12
static std::vector< lc::geo::Coordinate > LineLine(const Equation &l1, const Equation &l2)
static std::vector< geo::Coordinate > splineCircle(geo::Spline B, const geo::Circle &C)
std::shared_ptr< const BezierBase > BB_CSPtr
Definition: geobezierbase.h:15
static std::vector< geo::Coordinate > bezierBezier(geo::BB_CSPtr B1, geo::BB_CSPtr B2)
static std::vector< geo::Coordinate > splineBezier(geo::Spline B1, geo::BB_CSPtr B2)
static std::vector< geo::Coordinate > splineSpline(geo::Spline B1, geo::Spline B2)
static std::vector< geo::Coordinate > bezierEllipse(geo::BB_CSPtr B, const geo::Ellipse &E)
static std::vector< geo::Coordinate > bezierLine(geo::BB_CSPtr B, const geo::Vector &V)
static std::vector< geo::Coordinate > QuadQuad(const Equation &l1, const Equation &l2)
static std::vector< geo::Coordinate > bezierArc(geo::BB_CSPtr B, const geo::Arc &A)