OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::SpiralVaseHelpers Namespace Reference

Functions

float distance (SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
SpiralVase::SpiralPoint subtract (SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
SpiralVase::SpiralPoint add (SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
SpiralVase::SpiralPoint scale (SpiralVase::SpiralPoint a, float factor)
float dot (SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
SpiralVase::SpiralPoint nearest_point_on_line (SpiralVase::SpiralPoint c, SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b, float &dist)
SpiralVase::SpiralPoint nearest_point_on_lines (SpiralVase::SpiralPoint p, std::vector< SpiralVase::SpiralPoint > *points, bool &found, float &dist)

Function Documentation

◆ add()

26{ return SpiralVase::SpiralPoint(a.x + b.x, a.y + b.y); }
Definition SpiralVase.hpp:17
float y
Definition SpiralVase.hpp:22
float x
Definition SpiralVase.hpp:22

References Slic3r::SpiralVase::SpiralPoint::x, and Slic3r::SpiralVase::SpiralPoint::y.

Referenced by nearest_point_on_line(), and Slic3r::SpiralVase::process_layer().

Here is the caller graph for this function:

◆ distance()

float Slic3r::SpiralVaseHelpers::distance ( SpiralVase::SpiralPoint a,
SpiralVase::SpiralPoint b )

== Smooth Spiral Helpers == Distance between a and b

19{ return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2)); }

References Slic3r::SpiralVase::SpiralPoint::x, and Slic3r::SpiralVase::SpiralPoint::y.

Referenced by nearest_point_on_line(), and Slic3r::SpiralVase::process_layer().

Here is the caller graph for this function:

◆ dot()

float Slic3r::SpiralVaseHelpers::dot ( SpiralVase::SpiralPoint a,
SpiralVase::SpiralPoint b )

dot product

31{ return a.x * b.x + a.y * b.y; }

References Slic3r::SpiralVase::SpiralPoint::x, and Slic3r::SpiralVase::SpiralPoint::y.

Referenced by nearest_point_on_line().

Here is the caller graph for this function:

◆ nearest_point_on_line()

SpiralVase::SpiralPoint Slic3r::SpiralVaseHelpers::nearest_point_on_line ( SpiralVase::SpiralPoint c,
SpiralVase::SpiralPoint a,
SpiralVase::SpiralPoint b,
float & dist )

Find the point on line ab closes to point c

35{
38 float t = dot(ca, ab) / dot(ab, ab);
39 t = t > 1 ? 1 : t;
40 t = t < 0 ? 0 : t;
42 dist = distance(c, closest);
43 return closest;
44}
T dist(const boost::polygon::point_data< T > &p1, const boost::polygon::point_data< T > &p2)
Definition Geometry.cpp:298
SpiralVase::SpiralPoint add(SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
Definition SpiralVase.cpp:26
SpiralVase::SpiralPoint scale(SpiralVase::SpiralPoint a, float factor)
Definition SpiralVase.cpp:28
float dot(SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
Definition SpiralVase.cpp:31
float distance(SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
Definition SpiralVase.cpp:19
SpiralVase::SpiralPoint subtract(SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b)
Definition SpiralVase.cpp:21

References add(), Slic3r::Geometry::dist(), distance(), dot(), scale(), and subtract().

Referenced by nearest_point_on_lines().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nearest_point_on_lines()

SpiralVase::SpiralPoint Slic3r::SpiralVaseHelpers::nearest_point_on_lines ( SpiralVase::SpiralPoint p,
std::vector< SpiralVase::SpiralPoint > * points,
bool & found,
float & dist )

Given a set of lines defined by points such as line[n] is the line from points[n] to points[n+1], find the closest point to p that falls on any of the lines

52{
53 if (points->size() < 2) {
54 found = false;
55 return SpiralVase::SpiralPoint(0, 0);
56 }
57 float min = std::numeric_limits<float>::max();
58 SpiralVase::SpiralPoint closest(0, 0);
59 for (unsigned long i = 0; i < points->size() - 1; i++) {
60 float currentDist = 0;
61 SpiralVase::SpiralPoint current = nearest_point_on_line(p, points->at(i), points->at(i + 1), currentDist);
62 if (currentDist < min) {
63 min = currentDist;
64 closest = current;
65 found = true;
66 }
67 }
68 dist = min;
69 return closest;
70}
Foot closest(const Contour &c, const Vec2d &p, double stop=-1.0, const std::vector< Vec2d > *source_normals=nullptr, double normal_cosine=0.0)
Definition SeamContour.cpp:36
SpiralVase::SpiralPoint nearest_point_on_line(SpiralVase::SpiralPoint c, SpiralVase::SpiralPoint a, SpiralVase::SpiralPoint b, float &dist)
Definition SpiralVase.cpp:34

References Slic3r::Geometry::dist(), and nearest_point_on_line().

Referenced by Slic3r::SpiralVase::process_layer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scale()

SpiralVase::SpiralPoint Slic3r::SpiralVaseHelpers::scale ( SpiralVase::SpiralPoint a,
float factor )
28{ return SpiralVase::SpiralPoint(a.x * factor, a.y * factor); }

References Slic3r::SpiralVase::SpiralPoint::x, and Slic3r::SpiralVase::SpiralPoint::y.

Referenced by nearest_point_on_line(), and Slic3r::SpiralVase::process_layer().

Here is the caller graph for this function:

◆ subtract()

SpiralVase::SpiralPoint Slic3r::SpiralVaseHelpers::subtract ( SpiralVase::SpiralPoint a,
SpiralVase::SpiralPoint b )
22{
23 return SpiralVase::SpiralPoint(a.x - b.x, a.y - b.y);
24}

References Slic3r::SpiralVase::SpiralPoint::x, and Slic3r::SpiralVase::SpiralPoint::y.

Referenced by nearest_point_on_line().

Here is the caller graph for this function: