Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::Geometry::Circle< Vector > Struct Template Reference

#include <src/libslic3r/Geometry/Circle.hpp>

+ Collaboration diagram for Slic3r::Geometry::Circle< Vector >:

Public Types

using Scalar = typename Vector::Scalar
 

Public Member Functions

 Circle ()
 
 Circle (const Vector &center, const Scalar radius)
 
 Circle (const Vector &a, const Vector &b)
 
 Circle (const Vector &a, const Vector &b, const Vector &c, const Scalar epsilon)
 
template<typename Vector2 >
 Circle (const CircleSq< Vector2 > &c)
 
template<typename Vector2 >
Circle operator= (const CircleSq< Vector2 > &c)
 
bool invalid () const
 
bool valid () const
 
bool contains (const Vector &p) const
 
bool contains (const Vector &p, const Scalar epsilon) const
 
Circle inflated (Scalar epsilon) const
 

Static Public Member Functions

static Circle make_invalid ()
 

Public Attributes

Vector center
 
Scalar radius
 

Detailed Description

template<typename Vector>
struct Slic3r::Geometry::Circle< Vector >

Member Typedef Documentation

◆ Scalar

template<typename Vector >
using Slic3r::Geometry::Circle< Vector >::Scalar = typename Vector::Scalar

Constructor & Destructor Documentation

◆ Circle() [1/5]

template<typename Vector >
Slic3r::Geometry::Circle< Vector >::Circle ( )
inline
68{}

◆ Circle() [2/5]

template<typename Vector >
Slic3r::Geometry::Circle< Vector >::Circle ( const Vector center,
const Scalar  radius 
)
inline
Vector center
Definition Circle.hpp:65
Scalar radius
Definition Circle.hpp:66

◆ Circle() [3/5]

template<typename Vector >
Slic3r::Geometry::Circle< Vector >::Circle ( const Vector a,
const Vector b 
)
inline
70: center(Scalar(0.5) * (a + b)) { radius = (a - center).norm(); }
typename Vector::Scalar Scalar
Definition Circle.hpp:63

References Slic3r::Geometry::Circle< Vector >::center, and Slic3r::Geometry::Circle< Vector >::radius.

◆ Circle() [4/5]

template<typename Vector >
Slic3r::Geometry::Circle< Vector >::Circle ( const Vector a,
const Vector b,
const Vector c,
const Scalar  epsilon 
)
inline
71{ *this = CircleSq(a, b, c, epsilon); }

◆ Circle() [5/5]

template<typename Vector >
template<typename Vector2 >
Slic3r::Geometry::Circle< Vector >::Circle ( const CircleSq< Vector2 > &  c)
inlineexplicit
75: center(c.center), radius(c.radius2 <= 0 ? c.radius2 : sqrt(c.radius2)) {}
EIGEN_DEVICE_FUNC const SqrtReturnType sqrt() const
Definition ArrayCwiseUnaryOps.h:152

Member Function Documentation

◆ contains() [1/2]

template<typename Vector >
bool Slic3r::Geometry::Circle< Vector >::contains ( const Vector p) const
inline
81{ return (p - this->center).squaredNorm() <= this->radius * this->radius; }

References Slic3r::Geometry::Circle< Vector >::radius.

Referenced by Slic3r::BuildVolume::object_state().

+ Here is the caller graph for this function:

◆ contains() [2/2]

template<typename Vector >
bool Slic3r::Geometry::Circle< Vector >::contains ( const Vector p,
const Scalar  epsilon 
) const
inline
83 { Scalar re = this->radius + epsilon; return (p - this->center).squaredNorm() < re * re; }
constexpr double epsilon()
Definition DoubleSlider.hpp:28

◆ inflated()

template<typename Vector >
Circle Slic3r::Geometry::Circle< Vector >::inflated ( Scalar  epsilon) const
inline
85{ assert(this->radius >= 0); return { this->center, this->radius + epsilon }; }

References Slic3r::Geometry::Circle< Vector >::center.

◆ invalid()

template<typename Vector >
bool Slic3r::Geometry::Circle< Vector >::invalid ( ) const
inline
79{ return this->radius < 0; }

Referenced by Slic3r::Geometry::Circle< Vector >::valid().

+ Here is the caller graph for this function:

◆ make_invalid()

template<typename Vector >
static Circle Slic3r::Geometry::Circle< Vector >::make_invalid ( )
inlinestatic
87{ return Circle { { 0, 0 }, -1 }; }
Circle()
Definition Circle.hpp:68

Referenced by Slic3r::Geometry::circle_ransac(), and Slic3r::Geometry::circle_taubin_newton().

+ Here is the caller graph for this function:

◆ operator=()

template<typename Vector >
template<typename Vector2 >
Circle Slic3r::Geometry::Circle< Vector >::operator= ( const CircleSq< Vector2 > &  c)
inline
77{ this->center = c.center; this->radius = c.radius2 <= 0 ? c.radius2 : sqrt(c.radius2); }

References sqrt().

+ Here is the call graph for this function:

◆ valid()

template<typename Vector >
bool Slic3r::Geometry::Circle< Vector >::valid ( ) const
inline
80{ return ! this->invalid(); }
bool invalid() const
Definition Circle.hpp:79

References Slic3r::Geometry::Circle< Vector >::invalid().

+ Here is the call graph for this function:

Member Data Documentation

◆ center

◆ radius


The documentation for this struct was generated from the following file: