#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/Line.hpp>
|
| static const constexpr int | Dim = 2 |
◆ Scalar
◆ Line() [1/2]
Referenced by Slic3r::CurledLine::CurledLine(), Slic3r::CurledLine::CurledLine(), Slic3r::ThickLine::ThickLine(), Slic3r::ThickLine::ThickLine(), distance_to_infinite_squared(), distance_to_squared(), intersection(), intersection_infinite(), operator==(), overlap(), parallel_to(), perp_distance_to(), and perpendicular_to().
◆ Line() [2/2]
| Slic3r::Line::Line |
( |
const Point & | _a, |
|
|
const Point & | _b ) |
|
inline |
Point b
Definition Line.hpp:199
Point a
Definition Line.hpp:198
References a, and b.
◆ atan2_()
| double Slic3r::Line::atan2_ |
( |
| ) |
const |
|
inline |
◆ clip_with_bbox()
| bool Slic3r::Line::clip_with_bbox |
( |
const BoundingBox & | bbox | ) |
|
116{
117 Vec2d x0clip, x1clip;
119 if (result) {
122 }
123 return result;
124}
int64_t coord_t
Definition libslic3r.h:48
bool liang_barsky_line_clipping(Eigen::Matrix< T, 2, 1, Eigen::DontAlign > &x0, Eigen::Matrix< T, 2, 1, Eigen::DontAlign > &x1, const BoundingBoxBase< Eigen::Matrix< T, 2, 1, Eigen::DontAlign > > &bbox)
Definition Geometry.hpp:272
Eigen::Matrix< double, 2, 1, Eigen::DontAlign > Vec2d
Definition Point.hpp:67
References a, b, Slic3r::Geometry::liang_barsky_line_clipping(), Slic3r::BoundingBoxBase< PointType, APointsType >::max, and Slic3r::BoundingBoxBase< PointType, APointsType >::min.
◆ direction()
| double Slic3r::Line::direction |
( |
| ) |
const |
◆ distance_to() [1/2]
| double Slic3r::Line::distance_to |
( |
const Point & | point | ) |
const |
|
inline |
◆ distance_to() [2/2]
| double Slic3r::Line::distance_to |
( |
const Point & | point, |
|
|
const Point & | a, |
|
|
const Point & | b ) |
|
inlinestatic |
double distance_to_squared(const Point &point) const
Definition Line.hpp:170
References a, b, and distance_to_squared().
◆ distance_to_infinite()
| double Slic3r::Line::distance_to_infinite |
( |
const Point & | point, |
|
|
const Point & | a, |
|
|
const Point & | b ) |
|
inlinestatic |
◆ distance_to_infinite_squared() [1/2]
| double Slic3r::Line::distance_to_infinite_squared |
( |
const Point & | point, |
|
|
const Point & | a, |
|
|
const Point & | b ) |
|
inlinestatic |
Line()
Definition Line.hpp:158
double distance_to_infinite_squared(const L &line, const Vec< Dim< L >, Scalar< L > > &point, Vec< Dim< L >, Scalar< L > > *closest_point)
Definition Line.hpp:91
Mat< N, 1, T > Vec
Definition Point.hpp:48
References Line(), a, b, and Slic3r::line_alg::distance_to_infinite_squared().
◆ distance_to_infinite_squared() [2/2]
| double Slic3r::Line::distance_to_infinite_squared |
( |
const Point & | point, |
|
|
Point * | closest_point ) const |
|
inline |
◆ distance_to_squared() [1/3]
| double Slic3r::Line::distance_to_squared |
( |
const Point & | point | ) |
const |
|
inline |
References a, b, and distance_to_squared().
Referenced by Slic3r::MultiPoint::_douglas_peucker(), Slic3r::FillAdaptive::connect_lines_using_hooks(), distance_to(), distance_to_squared(), Slic3r::initial_connector_is_clear(), Slic3r::Arachne::SkeletalTrapezoidationGraph::insertRib(), Slic3r::PaintedLineVisitor::operator()(), Slic3r::restore_source_path_order(), Slic3r::GCodeWriter::spiral_lift_fits_printable_area(), Slic3r::FillLightning::Node::straighten(), and Slic3r::support_offset_at_start().
◆ distance_to_squared() [2/3]
| double Slic3r::Line::distance_to_squared |
( |
const Point & | point, |
|
|
const Point & | a, |
|
|
const Point & | b ) |
|
inlinestatic |
◆ distance_to_squared() [3/3]
| double Slic3r::Line::distance_to_squared |
( |
const Point & | point, |
|
|
Point * | closest_point ) const |
|
inline |
◆ extend()
| void Slic3r::Line::extend |
( |
double | offset | ) |
|
127{
129 this->
a -= offset_vector;
130 this->
b += offset_vector;
131}
Vector vector() const
Definition Line.hpp:182
Point Vector
Definition Point.hpp:42
Slic3r::Polygons offset(const Slic3r::Polygon &polygon, const float delta, JoinType joinType, double miterLimit)
Definition ClipperUtils.cpp:582
auto cast(const BoundingBoxBase< Tin > &b)
Definition BoundingBox.hpp:299
References a, b, Slic3r::cast(), Slic3r::offset(), and vector().
Referenced by Slic3r::FillAdaptive::create_offset_line(), Slic3r::WipeTower2::generate_rib_polygon(), Slic3r::WipeTower::generate_rib_polygon(), and Slic3r::line_intersection_with_epsilon().
◆ intersection()
| bool Slic3r::Line::intersection |
( |
const Line & | line, |
|
|
Point * | intersection ) const |
111{
113}
bool intersection(const Line &line, Point *intersection) const
Definition Line.cpp:110
bool intersection(const L &l1, const L &l2, Vec< Dim< L >, Scalar< L > > *intersection_pt)
Definition Line.hpp:126
T l2(const boost::geometry::model::d2::point_xy< T > &v)
Definition ExtrusionSimulator.cpp:177
References Line(), intersection(), Slic3r::line_alg::intersection(), and Slic3r::l2().
Referenced by Slic3r::FillAdaptive::connect_lines_using_hooks(), Slic3r::Polygon::first_intersection(), intersection(), Slic3r::Polygon::intersection(), Slic3r::Polygon::intersections(), Slic3r::ConflictChecker::line_intersect(), and Slic3r::line_intersection_with_epsilon().
◆ intersection_infinite()
| bool Slic3r::Line::intersection_infinite |
( |
const Line & | other, |
|
|
Point * | point ) const |
28{
29 Vec2d a1 = this->
a.cast<
double>();
33 double denom =
cross2(v1, v2);
35 return false;
36 double t1 =
cross2(v12, v2) / denom;
37 Vec2d result = (a1 + t1 * v1);
38 if (result.x() > double(std::numeric_limits<coord_t>::max()) || result.x() < double(std::numeric_limits<coord_t>::lowest()) ||
39 result.y() > double(std::numeric_limits<coord_t>::max()) || result.y() < double(std::numeric_limits<coord_t>::lowest())) {
40
41
42 return false;
43 }
45 return true;
46}
int32_t cross2(const Eigen::MatrixBase< Eigen::Matrix< int32_t, 2, 1, Options > > &v1, const Eigen::MatrixBase< Eigen::Matrix< int32_t, 2, 1, Options > > &v2)=delete
References Line(), a, b, Slic3r::cast(), Slic3r::cross2(), and EPSILON.
Referenced by Slic3r::Arachne::ExtrusionLine::simplify(), and Slic3r::Arachne::simplify().
◆ length()
| double Slic3r::Line::length |
( |
| ) |
const |
|
inline |
166{
return (
b -
a).cast<
double>().norm(); }
References a, and b.
Referenced by Slic3r::GCode::_extrude(), Slic3r::sla::ConcaveHull::add_connector_rectangles(), Slic3r::can_line_note_be_removed(), Slic3r::colorize_line(), Slic3r::BridgeDetector::detect_angle(), Slic3r::filter_colorized_polygon(), Slic3r::filter_painted_lines(), Slic3r::filter_vibrating_extrusions(), Slic3r::WipeTower2::generate_rib_polygon(), Slic3r::WipeTower::generate_rib_polygon(), Slic3r::PaintedLineVisitor::operator()(), overlap(), Slic3r::thick_lines_to_geometry(), Slic3r::thick_polyline_to_extrusion_paths_2(), Slic3r::thick_polyline_to_multi_path(), and Slic3r::AvoidCrossingPerimeters::travel_to().
◆ midpoint()
| Point Slic3r::Line::midpoint |
( |
| ) |
const |
|
inline |
167{
return (this->
a + this->
b) / 2; }
References a, and b.
◆ normal()
| Vector Slic3r::Line::normal |
( |
| ) |
const |
|
inline |
◆ operator Lines()
| Slic3r::Line::operator Lines |
( |
| ) |
const |
|
inlineexplicit |
160{
Lines lines; lines.emplace_back(*
this);
return lines; }
std::vector< Line > Lines
Definition Line.hpp:20
◆ operator==()
| bool Slic3r::Line::operator== |
( |
const Line & | rhs | ) |
const |
|
inline |
169{
return this->
a == rhs.a && this->
b == rhs.b; }
References Line(), a, and b.
◆ orientation()
| double Slic3r::Line::orientation |
( |
| ) |
const |
◆ overlap()
| bool Slic3r::Line::overlap |
( |
const Line & | line, |
|
|
double & | overlap_length ) const |
85{
87 Line line_(this->
a, line.a);
89 coord_t a_min = std::min(this->
a.x(), this->b.x());
90 coord_t a_max = std::max(this->
a.x(), this->b.x());
91 coord_t b_min = std::min(line.a.x(), line.b.x());
92 coord_t b_max = std::max(line.a.x(), line.b.x());
93 if (a_min>b_max||a_max<b_min) return false;
94 overlap_length = std::max((
coord_t)0, std::min(a_max, b_max) - std::max(a_min, b_min));
95 overlap_length /= ((double) a_max - a_min) / this->
length();
96 return true;
97}
double length() const
Definition Line.hpp:166
bool parallel_to(double angle) const
Definition Line.cpp:73
BoundingBox scaled(const BoundingBoxf &bb)
Definition BoundingBox.hpp:284
References Line(), a, b, EPSILON, length(), parallel_to(), and Slic3r::scaled().
Referenced by Slic3r::ConflictChecker::line_intersect().
◆ parallel_to() [1/2]
| bool Slic3r::Line::parallel_to |
( |
const Line & | line | ) |
const |
◆ parallel_to() [2/2]
| bool Slic3r::Line::parallel_to |
( |
double | angle | ) |
const |
◆ perp_distance_to()
| double Slic3r::Line::perp_distance_to |
( |
const Point & | point | ) |
const |
◆ perpendicular_to() [1/2]
| bool Slic3r::Line::perpendicular_to |
( |
const Line & | line | ) |
const |
◆ perpendicular_to() [2/2]
| bool Slic3r::Line::perpendicular_to |
( |
double | angle | ) |
const |
◆ reverse()
| void Slic3r::Line::reverse |
( |
| ) |
|
|
inline |
◆ rotate()
| void Slic3r::Line::rotate |
( |
double | angle, |
|
|
const Point & | center ) |
|
inline |
◆ scale()
| void Slic3r::Line::scale |
( |
double | factor | ) |
|
|
inline |
161{ this->
a *= factor; this->
b *= factor; }
References a, and b.
◆ translate() [1/2]
| void Slic3r::Line::translate |
( |
const Point & | v | ) |
|
|
inline |
◆ translate() [2/2]
| void Slic3r::Line::translate |
( |
double | x, |
|
|
double | y ) |
|
inline |
void translate(const Point &v)
Definition Line.hpp:162
Kernel::Point_3 Point
Definition MeshRepair.cpp:81
References translate().
Referenced by translate().
◆ vector()
| Vector Slic3r::Line::vector |
( |
| ) |
const |
|
inline |
Referenced by Slic3r::CurledLine::CurledLine(), Slic3r::CurledLine::CurledLine(), Line(), Slic3r::ThickLine::ThickLine(), Slic3r::ThickLine::ThickLine(), Slic3r::Voronoi::annotate_inside_outside(), Slic3r::any_expolygon_contains(), Slic3r::are_lines_overlapping_in_y_axes(), atan2_(), Slic3r::build_graph(), Slic3r::build_offset_polyline(), Slic3r::Point::ccw(), Slic3r::chain_lines(), Slic3r::chain_lines_by_triangle_connectivity(), clip_with_bbox(), Slic3r::anonymous_namespace{ExclusionVolumePathCheck.cpp}::collinear_segments_overlap(), Slic3r::colorize_line(), anonymous_namespace{IntersectionPoints.cpp}::compute_intersections(), Slic3r::FillAdaptive::connect_lines_using_hooks(), Slic3r::ExPolygon::contains(), Slic3r::Voronoi::contour_point(), Slic3r::Voronoi::contour_point(), libvgcode::convert_lines_to_vertices(), Slic3r::BridgeDetector::detect_angle(), Slic3r::Voronoi::detail::dist_to_site(), distance_to(), distance_to(), distance_to_infinite(), distance_to_infinite_squared(), distance_to_squared(), distance_to_squared(), Slic3r::Algorithm::do_split_line(), Slic3r::SVG::draw(), Slic3r::SVG::draw(), Slic3r::Voronoi::edge_offset_contour_intersections(), extend(), Slic3r::filter_painted_lines(), Slic3r::MultiPoint::first_intersection(), Slic3r::Polygon::first_intersection(), Slic3r::Geometry::foot_pt(), Slic3r::FillAdaptive::generate_infill_lines_recursive(), Slic3r::generate_rectange(), boost::polygon::segment_traits< Slic3r::ColoredLine >::get(), boost::polygon::segment_traits< Slic3r::Line >::get(), intersection_infinite(), Slic3r::Polygon::intersections(), Slic3r::is_point_closer_to_beginning_of_line(), Slic3r::join_close_ends(), length(), Slic3r::ConflictChecker::line_intersect(), Slic3r::Voronoi::detail::line_point_equal_distance_points(), Slic3r::RasterizationImpl::line_rasterization(), midpoint(), Slic3r::FillAdaptive::mk_rtree_seg(), Slic3r::need_wipe(), normal(), Slic3r::Voronoi::offset(), Slic3r::Voronoi::detail::on_site(), Slic3r::LineHash::operator()(), Slic3r::PaintedLineVisitor::operator()(), operator==(), Slic3r::Geometry::orientation_of_two_edges(), overlap(), Slic3r::anonymous_namespace{ExclusionVolumePathCheck.cpp}::overlaps_collinear_boundary(), parallel_to(), perp_distance_to(), perpendicular_to(), Slic3r::Algorithm::point_on_line(), Slic3r::Voronoi::detail::point_segment_dr_dl_thresholds(), Slic3r::Voronoi::detail::point_segment_skeleton_thresholds(), Slic3r::points_inside(), Slic3r::FillLightning::polygonCollidesWithLineSegment(), Slic3r::post_process_painted_lines(), Slic3r::project_line_on_line(), Slic3r::Point::projection_onto(), Slic3r::IntersectionLine::reverse(), reverse(), rotate(), scale(), Slic3r::Voronoi::signed_vertex_distances(), Slic3r::Voronoi::skeleton_edges_rough(), Slic3r::slice_facet(), Slic3r::slice_facet_for_cut_mesh(), Slic3r::slice_facet_with_slabs(), Slic3r::support_offset_at_start(), Slic3r::thick_lines_to_geometry(), Slic3r::thick_polyline_to_extrusion_paths_2(), Slic3r::thick_polyline_to_multi_path(), translate(), Slic3r::Geometry::MedialAxis::validate_edge(), vector(), Slic3r::Voronoi::debug::verify_twin_halfedges_successive(), and Slic3r::wipe_path_stays_on_material_side().
Referenced by Slic3r::CurledLine::CurledLine(), Slic3r::CurledLine::CurledLine(), Slic3r::FillAdaptive::Intersection::Intersection(), Line(), Slic3r::ThickLine::ThickLine(), Slic3r::ThickLine::ThickLine(), Slic3r::GCode::_extrude(), Slic3r::Voronoi::annotate_inside_outside(), Slic3r::any_expolygon_contains(), Slic3r::are_lines_overlapping_in_y_axes(), atan2_(), Slic3r::build_graph(), Slic3r::build_offset_polyline(), Slic3r::Point::ccw(), Slic3r::chain_lines(), Slic3r::chain_lines_by_triangle_connectivity(), clip_with_bbox(), Slic3r::anonymous_namespace{ExclusionVolumePathCheck.cpp}::collinear_segments_overlap(), Slic3r::colorize_line(), anonymous_namespace{IntersectionPoints.cpp}::compute_intersections(), Slic3r::FillAdaptive::connect_lines_using_hooks(), Slic3r::ExPolygon::contains(), Slic3r::Voronoi::contour_point(), Slic3r::Voronoi::contour_point(), libvgcode::convert_lines_to_vertices(), Slic3r::BridgeDetector::detect_angle(), Slic3r::Voronoi::detail::dist_to_site(), distance_to(), distance_to(), distance_to_infinite(), distance_to_infinite_squared(), distance_to_squared(), distance_to_squared(), Slic3r::Algorithm::do_split_line(), Slic3r::SVG::draw(), Slic3r::SVG::draw(), Slic3r::Voronoi::edge_offset_contour_intersections(), extend(), Slic3r::filter_painted_lines(), Slic3r::Polygon::first_intersection(), Slic3r::Geometry::foot_pt(), Slic3r::FillAdaptive::generate_infill_lines_recursive(), Slic3r::generate_rectange(), boost::polygon::segment_traits< Slic3r::ColoredLine >::get(), boost::polygon::segment_traits< Slic3r::Line >::get(), intersection_infinite(), Slic3r::Polygon::intersections(), Slic3r::is_point_closer_to_beginning_of_line(), Slic3r::join_close_ends(), length(), Slic3r::ConflictChecker::line_intersect(), Slic3r::Voronoi::detail::line_point_equal_distance_points(), Slic3r::RasterizationImpl::line_rasterization(), midpoint(), Slic3r::FillAdaptive::mk_rtree_seg(), Slic3r::need_wipe(), normal(), Slic3r::Voronoi::offset(), Slic3r::Voronoi::detail::on_site(), Slic3r::LineHash::operator()(), Slic3r::PaintedLineVisitor::operator()(), operator==(), Slic3r::Geometry::orientation_of_two_edges(), overlap(), Slic3r::anonymous_namespace{ExclusionVolumePathCheck.cpp}::overlaps_collinear_boundary(), parallel_to(), perp_distance_to(), perpendicular_to(), Slic3r::Algorithm::point_on_line(), Slic3r::Voronoi::detail::point_segment_dr_dl_thresholds(), Slic3r::Voronoi::detail::point_segment_skeleton_thresholds(), Slic3r::points_inside(), Slic3r::FillLightning::polygonCollidesWithLineSegment(), Slic3r::post_process_painted_lines(), Slic3r::project_line_on_line(), Slic3r::Point::projection_onto(), Slic3r::IntersectionLine::reverse(), reverse(), rotate(), scale(), Slic3r::Voronoi::signed_vertex_distances(), Slic3r::Voronoi::skeleton_edges_rough(), Slic3r::slice_facet(), Slic3r::slice_facet_for_cut_mesh(), Slic3r::slice_facet_with_slabs(), Slic3r::support_offset_at_start(), Slic3r::thick_lines_to_geometry(), Slic3r::thick_polyline_to_extrusion_paths_2(), Slic3r::thick_polyline_to_multi_path(), translate(), Slic3r::Geometry::MedialAxis::validate_edge(), vector(), Slic3r::Voronoi::debug::verify_twin_halfedges_successive(), and Slic3r::wipe_path_stays_on_material_side().
◆ Dim
| const constexpr int Slic3r::Line::Dim = 2 |
|
staticconstexpr |
The documentation for this class was generated from the following files:
- /home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/Line.hpp
- /home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/Line.cpp