6#ifndef ACTIVE_GEOMETRY_ARC
7#define ACTIVE_GEOMETRY_ARC
9#include "Active/Geometry/Box.h"
10#include "Active/Geometry/Plane.h"
11#include "Active/Geometry/Point.h"
12#include "Active/Geometry/PolyPoint.h"
13#include "Active/Geometry/Vector3.h"
52 Arc(
const Point& centre,
double radius,
double sweep = 2.0 * math::pi,
double start = 0,
const Vector3& norm =
Vector3(0, 0, 1));
230 double getArea(
bool isArcOnly =
true,
bool isResultSigned =
false)
const;
359 void movePolar(
double len,
double azim,
double alt);
365 void movePolar(
double len,
double angle);
370 void expand(
double inc) { radius += inc; }
375 void spin(
double rotAngle) { startAngle += rotAngle; }
Class to represent an arc.
Definition Arc.h:25
bool isParallelTo3D(const Arc &ref, double prec=math::eps) const
Definition Arc.cpp:482
void flip()
Definition Arc.cpp:809
bool createIntersect(const Point &pt, const Arc &arc, const Arc &ref, XList &inter, double prec=math::eps) const
Definition Arc.cpp:836
void movePolar(double len, double azim, double alt)
Definition Arc.cpp:801
Arc & operator=(const Arc &source)
Definition Arc.cpp:140
std::optional< Arc > Option
Optional.
Definition Arc.h:37
Point closestPointTo3D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:544
double length3D() const
Definition Arc.cpp:431
PolyPoint getEnd() const
Definition Arc.cpp:331
double getEndAngle() const
Definition Arc.h:203
bool operator==(const Arc &ref) const
Definition Arc.h:101
Point closestPointAlong2D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:494
bool encloses3D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:772
Arc & operator-=(const Point &offset)
Definition Arc.cpp:196
Arc operator+(const Point &offset) const
Definition Arc.cpp:159
void expand(double inc)
Definition Arc.h:370
Arc operator*(double scale) const
Definition Arc.cpp:209
Arc operator-(const Point &offset) const
Definition Arc.cpp:184
Box::Unique bounds() const
Definition Arc.cpp:373
vertex_index intersectionWith3D(const Line &ref, XList &inter, double prec=math::eps) const
Definition Arc.cpp:631
vertex_index intersectionWithLevel(const Line &ref, XList &inter, double prec=math::eps) const
Definition Arc.cpp:874
Arc * clonePtr() const
Definition Arc.h:79
void setEndAngle(double end)
Definition Arc.h:352
Position positionOf2D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:708
bool encloses2D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:759
bool isEqual2D(const Arc &ref, double prec=math::eps) const
Definition Arc.cpp:277
Arc & operator*=(double scale)
Definition Arc.cpp:221
bool isEqual3D(const Arc &ref, double prec=math::eps) const
Definition Arc.cpp:299
Arc()
Definition Arc.cpp:29
Point getOrigin() const
Definition Arc.cpp:318
bool isColinearTo2D(const Arc &ref, double prec=math::eps) const
Definition Arc.cpp:443
vertex_index intersectionWith(const Plane &ref, XList &inter, double prec=math::eps) const
Definition Arc.cpp:566
Position positionOf3D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:740
Point closestPointAlong3D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:519
std::shared_ptr< Arc > Shared
Shared pointer.
Definition Arc.h:35
bool isColinearTo3D(const Arc &ref, double prec=math::eps) const
Definition Arc.cpp:457
void initLevel(Leveller &level, double prec=math::eps) const
Definition Arc.cpp:822
bool operator!=(const Arc &ref) const
Definition Arc.h:107
Point closestPointTo2D(const Point &ref, double prec=math::eps) const
Definition Arc.cpp:532
bool isParallelTo2D(const Arc &ref, double prec=math::eps) const
Definition Arc.cpp:470
Arc & operator+=(const Point &offset)
Definition Arc.cpp:171
double getArea(bool isArcOnly=true, bool isResultSigned=false) const
Definition Arc.cpp:403
std::unique_ptr< Arc > Unique
Unique pointer.
Definition Arc.h:33
vertex_index intersectionWith2D(const Line &ref, XList &inter, double prec=math::eps) const
Definition Arc.cpp:587
Point midpoint() const
Definition Arc.cpp:346
double length2D() const
Definition Arc.cpp:421
double isValid(double prec=math::eps) const
Definition Arc.cpp:263
void spin(double rotAngle)
Definition Arc.h:375
Plane getPlane() const
Definition Arc.cpp:362
std::unique_ptr< Box > Unique
Unique pointer.
Definition Box.h:27
Class to reorientate geometric objects to a horizontal plane.
Definition Leveller.h:20
Class to represent a line.
Definition Line.h:21
A 3x3 matrix class.
Definition Matrix3x3.h:16
Class to represent a plane.
Definition Plane.h:21
Definition PolyPoint.h:24
A 1x3 vector class.
Definition Vector3.h:20
int32_t vertex_index
Index of a vertex, e.g. within a polygon.
Definition Point.h:22
Position
Relative spatial position.
Definition Position.h:12
@ origin
On the origin of an edge.
@ end
On the end of an edge.
constexpr double eps
Default length precision (0.01mm)
Definition MathFunctions.h:22