OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
ColorUtils.cpp File Reference
#include "ColorUtils.hpp"
#include <CGAL/Aff_transformation_3.h>
#include <CGAL/boost/graph/graph_traits_Surface_mesh.h>
#include <Eigen/Core>
#include <CGAL/Surface_mesh/Surface_mesh.h>
#include <CGAL/Origin.h>
#include <CGAL/centroid.h>
#include <CGAL/Named_function_parameters.h>
#include <CGAL/boost/graph/helpers.h>
#include <Eigen/Eigenvalues>
#include <CGAL/Polygon_mesh_processing/measure.h>
#include <algorithm>
#include <array>
#include <atomic>
#include <chrono>
#include <cmath>
#include <cstdio>
#include <fstream>
#include <functional>
#include <iostream>
#include <limits>
#include <map>
#include <numeric>
#include <boost/next_prior.hpp>
#include <CGAL/AABB_face_graph_triangle_primitive.h>
#include <CGAL/AABB_traits_3.h>
#include <CGAL/AABB_tree.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Point_3.h>
#include <CGAL/Polygon_mesh_processing/compute_normal.h>
#include <CGAL/Polygon_mesh_processing/intersection.h>
#include <CGAL/Polygon_mesh_processing/remesh.h>
#include <CGAL/Polygon_mesh_processing/repair_self_intersections.h>
#include <CGAL/Polygon_mesh_processing/self_intersections.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/mesh_segmentation.h>
#include <string>
#include <tbb/parallel_for.h>
#include "CgalUtils.hpp"
#include "TriMesh.hpp"
#include "libslic3r/Point.hpp"
#include "libslic3r/AABBTreeIndirect.hpp"
#include <boost/log/trivial.hpp>
#include <vector>
#include <utility>
#include <unordered_map>
#include <unordered_set>
#include <queue>
Include dependency graph for ColorUtils.cpp:

Go to the source code of this file.

Classes

struct  Slic3r::tex2color::color_utils::ColorPCA

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::tex2color
namespace  Slic3r::tex2color::color_utils
namespace  Slic3r::tex2color::color_utils::detail

Macros

#define M_PI   3.1415926535897932
#define EPSILON   1e-6
#define DOUBLE_LIMITS
#define Double_MAX   std::numeric_limits<double>::max()
#define Double_MIN   -std::numeric_limits<double>::max()

Typedefs

using Slic3r::tex2color::color_utils::CGALKernel = cgalutils::Kernel
typedef CGAL::Aff_transformation_3< CGALKernel > Slic3r::tex2color::color_utils::Affine_transformation_3
typedef boost::graph_traits< CGALMesh >::halfedge_descriptor Slic3r::tex2color::color_utils::halfedge_descriptor
typedef boost::graph_traits< CGALMesh >::edge_descriptor Slic3r::tex2color::color_utils::edge_descriptor
typedef boost::graph_traits< CGALMesh >::vertex_descriptor Slic3r::tex2color::color_utils::vertex_descriptor
typedef CGAL::AABB_face_graph_triangle_primitive< CGALMesh > Slic3r::tex2color::color_utils::Primitive
typedef CGAL::AABB_traits_3< CGALKernel, Primitive > Slic3r::tex2color::color_utils::Traits
typedef CGAL::AABB_tree< Traits > Slic3r::tex2color::color_utils::Tree
typedef CGALMesh::template Property_map< vertex_descriptor, CGALKernel::Vector_3 > Slic3r::tex2color::color_utils::VNMap
typedef std::array< double, 3 > Slic3r::tex2color::color_utils::HSV
typedef std::array< double, 3 > Slic3r::tex2color::color_utils::XYZ
typedef std::array< double, 3 > Slic3r::tex2color::color_utils::LAB
using Slic3r::tex2color::color_utils::WorkingDistFunc = double (*)(const ColorDouble&, const ColorDouble&)
using Slic3r::tex2color::color_utils::CGALMesh

Functions

template<typename Mesh>
double Slic3r::tex2color::color_utils::detail::average_edge_length_impl (const Mesh &m)
static ColorDouble Slic3r::tex2color::color_utils::convert_rgb_uint_to_rgb_double (const Color &color)
static void Slic3r::tex2color::color_utils::normalize (CGALKernel::Vector_3 &vec)
static double Slic3r::tex2color::color_utils::get_angle_between_vectors (const CGALKernel::Vector_3 &v1, const CGALKernel::Vector_3 &v2)
static void Slic3r::tex2color::color_utils::calc_face_normals (const CGALMesh &mesh, std::vector< Eigen::Vector3d > &face_normals)
static bool Slic3r::tex2color::color_utils::check_and_repair_self_intersect (CGALMesh &mesh, bool *is_self_intersect_status=nullptr)
static bool Slic3r::tex2color::color_utils::save_polylines (const std::string &file_name, const std::vector< std::vector< CGALKernel::Point_3 > > &polylines)
static bool Slic3r::tex2color::color_utils::smooth_region_topo_boundary (CGALMesh &mesh, std::vector< std::size_t > &face_labels, std::size_t max_iters=20)
static bool Slic3r::tex2color::color_utils::smooth_region_geom_boundary (CGALMesh &mesh, std::vector< std::size_t > &face_labels, const SmoothParameters &smooth_parameters)
static HSV Slic3r::tex2color::color_utils::convert_rgb_to_hsv (const RGB &rgb)
 Convert an RGB color to the HSV color space.
static RGB Slic3r::tex2color::color_utils::convert_hsv_to_rgb (const HSV &hsv)
 Convert an HSV color to the RGB color space.
static XYZ Slic3r::tex2color::color_utils::convert_rgb_to_xyz (const RGB &color_rgb)
static XYZ Slic3r::tex2color::color_utils::convert_srgb01_to_xyz (double rs, double gs, double bs)
static LAB Slic3r::tex2color::color_utils::convert_xyz_to_lab (const XYZ &xyz)
static LAB Slic3r::tex2color::color_utils::convert_srgb01_to_lab (const ColorDouble &srgb01)
static LAB Slic3r::tex2color::color_utils::convert_rgb_to_lab (const RGB &rgb)
static Color Slic3r::tex2color::color_utils::convert_lab_to_rgb (const LAB &lab)
static double Slic3r::tex2color::color_utils::ciede2000 (const std::array< double, 3 > &lab1, const std::array< double, 3 > &lab2)
 CIEDE2000 color-difference computation.
double Slic3r::tex2color::color_utils::calc_rgb_color_difference_by_ciede2000 (const RGB &rgb1, const RGB &rgb2)
 Compute the CIEDE2000 color difference between two RGB colors.
double Slic3r::tex2color::color_utils::calc_rgb_color_difference_by_ciede2000_srgb01 (const ColorDouble &rgb1, const ColorDouble &rgb2)
 Compute the CIEDE2000 color difference between two sRGB colors (double precision, non-linear channels in [0,1]).
static std::vector< ColorDouble > Slic3r::tex2color::color_utils::farthest_point_sampling_init (const std::vector< ColorDouble > &working_colors, std::size_t k, WorkingDistFunc dist_func)
bool Slic3r::tex2color::color_utils::remesh_mesh (TriMesh &mesh, std::vector< std::size_t > &face_labels, double target_edge_length_ratio)
 Remesh the mesh while preserving color boundaries.
bool Slic3r::tex2color::color_utils::is_closed (const TriMesh &tri_mesh)
 Check whether the mesh is closed (watertight).
static bool Slic3r::tex2color::color_utils::smooth_region_labels (TriMesh &tri_mesh, std::vector< std::size_t > &face_labels, const SmoothParameters &smooth_parameters)
bool Slic3r::tex2color::color_utils::smooth_region (TriMesh &tri_mesh, std::vector< std::array< std::size_t, 3 > > &face_labels, const SmoothParameters &smooth_parameters=SmoothParameters())
 Smooth region boundaries (RGB color labels).
bool Slic3r::tex2color::color_utils::smooth_region (TriMesh &tri_mesh, std::vector< std::size_t > &face_labels, const SmoothParameters &smooth_parameters=SmoothParameters())
 Smooth region boundaries (integer labels).
double Slic3r::tex2color::color_utils::calc_rgb_color_difference_by_squared_rgb_double (const ColorDouble &c1, const ColorDouble &c2)
 Compute the squared Euclidean distance between two RGB colors (double precision).
double Slic3r::tex2color::color_utils::calc_rgb_color_difference_by_squared_rgb (const RGB &rgb1, const RGB &rgb2)
 Compute the squared Euclidean distance between two RGB colors.
static std::vector< ColorDouble > Slic3r::tex2color::color_utils::kmeans_core (const std::vector< ColorDouble > &working_colors, std::size_t k, std::size_t max_iter, WorkingDistFunc dist_func, const std::function< bool()> &cancel_cb=nullptr)
std::vector< Color > Slic3r::tex2color::color_utils::cluster_k_means (const std::vector< Color > &colors, const ClusterParameters &cluster_parameters)
 K-Means clustering algorithm that minimizes the sum of squared errors.
std::vector< Color > Slic3r::tex2color::color_utils::cluster_to_specified_colors (const std::vector< Color > &colors, const std::vector< Color > &specified_colors)
 Cluster a color list to a set of specified cluster centers.
static std::vector< ColorPCA > Slic3r::tex2color::color_utils::sort_colors_by_pca (const std::vector< Color > &colors)
std::vector< Color > Slic3r::tex2color::color_utils::cluster_adaptive (const std::vector< Color > &colors, const ClusterParameters &cluster_parameters)
 Adaptive K-Means clustering that determines an appropriate number of clusters under a max color-distance constraint.
static std::vector< std::vector< CGAL::SM_Face_index > > Slic3r::tex2color::color_utils::get_connected_face_groups (const CGALMesh &mesh)
bool Slic3r::tex2color::color_utils::get_components (const TriMesh &mesh, const std::vector< Vec2f > &vertex_uvs, std::vector< TriMesh > &component_meshes, std::vector< std::vector< Vec2f > > &component_vertex_uvs)
 Split the mesh into connected components.
bool Slic3r::tex2color::color_utils::calc_nearest_color_id (const std::vector< RGB > &colors, const RGB &color, std::size_t &nearest_color_id)
 Find the ID of the nearest color in a color list to a given color.
bool Slic3r::tex2color::color_utils::mesh_cluster (const TriMesh &mesh, const std::vector< RGB > &cluster_centers, std::vector< RGB > &map_face_to_rgb, std::vector< std::size_t > &map_face_to_cluster_id)
 Cluster mesh face colors based on given cluster centers.

Variables

static constexpr double Slic3r::tex2color::color_utils::TOPO_SMOOTH_WEIGHT_THRESHOLD = 0.3
const XYZ Slic3r::tex2color::color_utils::D65_WHITE = {0.95047, 1.0, 1.08883}

Macro Definition Documentation

◆ DOUBLE_LIMITS

#define DOUBLE_LIMITS

◆ Double_MAX

#define Double_MAX   std::numeric_limits<double>::max()

◆ Double_MIN

#define Double_MIN   -std::numeric_limits<double>::max()

◆ EPSILON

#define EPSILON   1e-6

Referenced by Slic3r::anonymous_namespace{AdaptiveInfillField.cpp}::DensityLevels::DensityLevels(), Slic3r::ExtrusionLoopSloped::ExtrusionLoopSloped(), Slic3r::FillLightning::Generator::Generator(), Slic3r::FillLightning::Generator::Generator(), Slic3r::sla::Pad::Pad(), Slic3r::GUI::GLGizmoCut3D::PartSelection::PartSelection(), Slic3r::PerimeterGenerator::PerimeterGenerator(), Slic3r::PrintObject::PrintObject(), Slic3r::Geometry::TransformationSVD::TransformationSVD(), Slic3r::TreeSupport::TreeSupport(), Slic3r::TreeSupport3D::TreeSupportMeshGroupSettings::TreeSupportMeshGroupSettings(), Slic3r::TreeSupport3D::TreeSupportSettings::TreeSupportSettings(), Slic3r::Fill::_adjust_solid_spacing(), Slic3r::Print::_align_belt_purge_layers(), Slic3r::GUI::Plater::_calib_temp_belt_sectioned(), Slic3r::GCode::_do_export(), Slic3r::_3MF_Importer::_extract_sla_support_points_from_archive(), Slic3r::GCode::_extrude(), Slic3r::Fill3DHoneycomb::_fill_surface_single(), Slic3r::FillCrossHatch::_fill_surface_single(), Slic3r::FillGyroid::_fill_surface_single(), Slic3r::FillLightning::Filler::_fill_surface_single(), Slic3r::FillTpmsD::_fill_surface_single(), Slic3r::FillTpmsFK::_fill_surface_single(), Slic3r::PrintObject::_generate_support_material(), Slic3r::Print::_make_wipe_tower(), Slic3r::Print::_plan_belt_purge(), Slic3r::FanMover::_process_gcode_line(), Slic3r::add_extra_point(), Slic3r::FillAdaptive::add_hook(), Slic3r::GUI::ObjectList::add_layer_range_after_current(), Slic3r::WipeTowerWriter::add_wipe_path(), Slic3r::addTops(), Slic3r::adjust_layer_height_profile(), Slic3r::WipeTower::align_perimeter(), Slic3r::Measure::angle_edge_edge(), Slic3r::WipeTowerIntegration::append_tcr(), Slic3r::WipeTowerIntegration::append_tcr2(), Slic3r::MMU_Graph::append_voronoi_vertices(), Slic3r::Geometry::ArcWelder::arc_discretization_steps(), Slic3r::Measure::are_parallel(), Slic3r::Measure::are_perpendicular(), Slic3r::arrangement::arrange(), Slic3r::LayerRanges::assign(), Slic3r::ModelObject::bake_xy_rotation_into_meshes(), Slic3r::belt_brim_band_paths(), Slic3r::GUI::belt_calib_rotation_params(), Slic3r::anonymous_namespace{BeltTransform.cpp}::belt_floor_shear(), Slic3r::GCode::belt_height_above_floor(), Slic3r::GCode::belt_layer_past_first_layer_band(), Slic3r::PrintObject::belt_shift_layer_grid(), Slic3r::PrintObject::belt_truncate_layers_above(), Slic3r::PrintObjectSupportMaterial::bottom_contact_layers_and_layer_support_areas(), Slic3r::sla::anonymous_namespace{Pad.cpp}::breakstick_holes(), Slic3r::PrintObject::bridge_over_infill(), Slic3r::TriangleSelector::bucket_fill_select_triangles(), Slic3r::build_offset_polyline(), Slic3r::BeltTransformPipeline::build_rotation_matrix(), Slic3r::GUI::TabPrinter::build_unregular_pages(), Slic3r::GUI::calc_surface_offset(), Slic3r::GCodeProcessor::TimeMachine::calculate_time(), Slic3r::Wipe::calculateWipeRetractionLengths(), Slic3r::GUI::Plater::calib_retraction(), Slic3r::GUI::Plater::calib_temp(), Slic3r::GUI::CalibUtils::calib_temptue(), Slic3r::GUI::CalibUtils::calib_VFA(), Slic3r::GUI::Plater::calib_VFA(), Slic3r::TreeSupportData::ceil_radius(), Slic3r::Model::center_instances_around_point(), Slic3r::chain_monotonic_regions(), Slic3r::GUI::GizmoObjectManipulation::change_absolute_rotation_value(), Slic3r::GUI::GizmoObjectManipulation::change_position_value(), Slic3r::GUI::GizmoObjectManipulation::change_rotation_value(), Slic3r::GUI::GizmoObjectManipulation::change_scale_value(), Slic3r::GUI::GizmoObjectManipulation::change_size_value(), Slic3r::GUI::ConfigManipulation::check_layer_height(), Slic3r::check_object_layers_fixed(), Slic3r::Geometry::circle_ransac(), Slic3r::ToolOrdering::collect_extruders(), Slic3r::GCode::collect_layers_to_print(), Slic3r::GCode::collect_layers_to_print(), libvgcode::ObjectHelper::color_print_color_id(), Slic3r::PrintObject::combine_infill(), Slic3r::combine_sparse_wipe_tower_layers(), Slic3r::compacted_wipe_tower_clearance(), Slic3r::Print::compacted_wipe_tower_clearance_valid(), Slic3r::compacted_wipe_tower_zone(), Slic3r::anonymous_namespace{BeltTransform.cpp}::compute_belt_height_and_floor_impl(), Slic3r::compute_principal_components(), Slic3r::WipeTower2::cone_base_polygon(), Slic3r::WipeTowerData::construct_mesh(), Slic3r::contour_distance(), Slic3r::contour_extrusion_path(), Slic3r::GUI::ToolpathsObjExporter::corner_cross_section(), Slic3r::CornerSmoother::corner_vertices(), Slic3r::SupportGeneratorLayerExtruded::could_merge(), Slic3r::SlicingParameters::create_from_config(), Slic3r::sla::SupportTreeBuildsteps::create_ground_pillar(), Slic3r::TreeSupport::create_tree_support_layers(), Slic3r::cubic_upper_level(), Slic3r::cut_mesh(), Slic3r::KDTreeIndirect< 3, float, SeamPlacerImpl::SeamCandidateCoordinateFunctor >::descent_mask(), Slic3r::detect_belt_floor_bottom_contacts(), Slic3r::detect_overhangs(), Slic3r::TreeSupport::detect_overhangs(), Slic3r::detect_steep_overhang(), Slic3r::Line::direction(), Slic3r::Geometry::directions_parallel(), Slic3r::Geometry::directions_perpendicular(), Slic3r::PrintObject::discover_horizontal_shells(), Slic3r::PrintObject::discover_vertical_shells(), Slic3r::TreeSupport3D::discretize_circle(), Slic3r::GCode::do_export(), Slic3r::TreeSupport::drop_nodes(), Slic3r::GUI::ObjectList::edit_layer_range(), Slic3r::GUI::ensure_belt_purge_tower(), Slic3r::WipingExtrusions::ensure_perimeters_infills_order(), Slic3r::WipeTower::estimate_brim_real_width(), Slic3r::SupportSpotsGenerator::estimate_malformations(), Slic3r::WipeTower::estimate_rib_tower_bbox_side(), Slic3r::WipeTower::estimate_tower_blocks_depth(), Slic3r::estimate_wipe_tower_footprint(), Slic3r::estimated_wipe_tower_footprint(), Slic3r::client::InterpolateTableContext::evaluate(), Slic3r::Geometry::extract_rotation_scale(), Slic3r::WipeTower2::extract_wipe_volumes(), Slic3r::GCodeWriter::extrude_arc_as_polyline(), Slic3r::WipeTowerWriter2::extrude_arc_explicit(), Slic3r::WipeTowerWriter::extrude_arc_explicit(), Slic3r::WipeTowerWriter2::extrude_explicit(), Slic3r::WipeTowerWriter::extrude_explicit(), Slic3r::extruder_range_slow_down_non_proportional(), Slic3r::arrangement::fill_config(), Slic3r::FillRectilinear::fill_surface_trapezoidal(), Slic3r::ToolOrdering::fill_wipe_tower_partitions(), Slic3r::filter_convex_concave_points_by_angle_threshold(), Slic3r::WipeTowerIntegration::finalize(), Slic3r::sla::find_min_z_height_rotation(), Slic3r::find_plane_at_point(), Slic3r::WipeTower::finish_block_solid(), Slic3r::WipeTower2::finish_layer(), Slic3r::Voronoi::detail::first_circle_segment_intersection_parameter(), Slic3r::BeltTransformPipeline::floor_shear(), Slic3r::Feature::FuzzySkin::fuzzy_extrusion_line_ripple(), Slic3r::Feature::FuzzySkin::fuzzy_polyline_ripple(), Slic3r::PrintObjectSupportMaterial::generate(), Slic3r::WipeTower2::generate(), Slic3r::TreeSupport::generate_contact_points(), Slic3r::TreeSupport3D::generate_initial_areas(), Slic3r::InterlockingGenerator::generate_interlocking_structure(), Slic3r::generate_layer_height_texture(), Slic3r::WipeTower::generate_new(), Slic3r::generate_object_layers(), Slic3r::WipeTowerWriter2::generate_path(), Slic3r::WipeTowerWriter::generate_path(), Slic3r::WipeTowerIntegration::generate_path_to_wipe_tower(), Slic3r::generate_raft_base(), Slic3r::TreeSupport3D::generate_raft_contact(), Slic3r::GCode::generate_skirt(), Slic3r::TreeSupport3D::generate_support_areas(), Slic3r::generate_support_layers(), Slic3r::WipeTower2::generate_support_rib_wall(), Slic3r::WipeTower::generate_support_wall(), Slic3r::WipeTower::generate_support_wall_new(), Slic3r::tex2color::color_utils::get_angle_between_vectors(), Slic3r::get_bed_excluded_area(), Slic3r::get_boundary(), Slic3r::get_boundary_external(), Slic3r::GUI::GLCanvas3D::get_camera_pan_anchor(), Slic3r::PrintObject::get_certain_layers(), Slic3r::sla::anonymous_namespace{Rotfinder.cpp}::get_chull_rotations(), Slic3r::GLVolumeCollection::get_current_print_zs(), Slic3r::orientation::AutoOrienter::get_features(), Slic3r::get_flush_volumes_matrix(), Slic3r::sla::DrainHole::get_intersections(), Slic3r::GUI::get_max_layer_height(), Slic3r::Measure::get_measurement(), Slic3r::sla::get_mesh(), Slic3r::get_perimeter_spacing_external(), Slic3r::GUI::GLGizmoPainterBase::get_projected_mouse_positions(), Slic3r::GLVolumeCollection::get_selection_support_normal_z(), Slic3r::TreeSupport::get_trim_support_regions(), Slic3r::GUI::MeshRaycaster::get_unobscured_idxs(), Slic3r::WipeTower::get_wall_skip_points(), Slic3r::LinesBucketQueue::getCurrBottomZ(), Slic3r::group_fills(), Slic3r::TreeSupport3D::group_meshes(), Slic3r::BeltTransformPipeline::has_rotation(), Slic3r::BeltFloorContext::init(), Slic3r::GUI::init_arrange_params(), Slic3r::MachineFrameTransform::init_from_config(), Slic3r::ToolOrdering::initialize_layers(), Slic3r::OverhangCluster::insert(), Slic3r::insert_points(), Slic3r::FillAdaptive::Octree::insert_triangle(), Slic3r::sla::SupportTreeBuildsteps::interconnect_pillars(), Slic3r::GCode::interpolate_value_across_layers(), Slic3r::line_alg::intersection(), Slic3r::Line::intersection_infinite(), Slic3r::ModelInstance::intersects_bed_exclude_region(), Slic3r::is_approx(), Slic3r::is_approx(), Slic3r::is_approx(), Slic3r::is_approx(), Slic3r::is_approx(), Slic3r::GCodeProcessor::Trapezoid::is_cruise_only(), Slic3r::TriangleSelector::HeightRange::is_edge_inside_cursor(), Slic3r::sla::DrainHole::is_inside(), Slic3r::ToolOrdering::is_last_extrusion_layer(), Slic3r::WipeTower::is_need_reverse_travel(), Slic3r::sla::anonymous_namespace{Rotfinder.cpp}::is_on_floor(), Slic3r::CornerSmoother::is_on_straight_run(), Slic3r::GUI::is_pa_params_valid(), Slic3r::GUI::is_same_nozzle_config(), Slic3r::is_stick(), Slic3r::WipeTower::its_make_rib_brim(), Slic3r::WipeTower::its_make_rib_tower(), Slic3r::layer_height_profile_adaptive(), Slic3r::layer_height_profile_from_ranges(), Slic3r::layer_height_ranges_copy_configs(), Slic3r::layer_height_ranges_equal(), Slic3r::TreeSupport3D::layer_idx_ceil(), Slic3r::TreeSupport3D::layer_idx_floor(), Slic3r::layer_range_next(), Slic3r::lerp(), Slic3r::lerp(), Slic3r::lerp(), Slic3r::Model::looks_like_multipart_object(), Slic3r::make_belt_brim(), Slic3r::FillAdaptive::make_cubes_properties(), Slic3r::make_loops(), Slic3r::make_one_period(), Slic3r::LayerRegion::make_perimeters(), Slic3r::Skirt::make_skirt_loops_per_extruder_other_layers(), Slic3r::make_support_cfg(), Slic3r::makeEndPoints(), Slic3r::makeGrid(), Slic3r::makeZigZag(), Slic3r::ToolOrdering::mark_skirt_layers(), Slic3r::GCode::mass_load_limited_machine_acceleration(), Slic3r::material_side_support_lines(), Slic3r::merge_contact_layers(), Slic3r::WipeTower::merge_tcr(), Slic3r::Layer::merged(), Slic3r::GUI::GLGizmoRotate::mouse_position_in_local_plane(), Slic3r::WipeTower::move_box_inside_polygon(), Slic3r::CalibPressureAdvance::move_to(), Slic3r::Point::nearest_point_index(), Slic3r::GCode::needs_retraction(), Slic3r::new_contact_layer(), Slic3r::new_feedrate_to_reach_time_stretch(), Slic3r::SlicingAdaptive::next_layer_height(), Slic3r::tex2color::color_utils::normalize(), Slic3r::anonymous_namespace{SupportCommon.cpp}::object_layer_id_at_z(), Slic3r::Voronoi::offset(), Slic3r::GCode::on_first_layer(), Slic3r::GCode::on_first_layer(), Slic3r::GUI::GLCanvas3D::on_mouse(), Slic3r::GUI::GLGizmoRotate::on_render(), Slic3r::GUI::PA_Calibration_Dlg::on_start(), Slic3r::AntPathMatrix::operator()(), Slic3r::BrimPoint::operator==(), Slic3r::GUI::Rect::operator==(), Slic3r::Measure::SurfaceFeature::operator==(), Slic3r::sla::SupportPoint::operator==(), Slic3r::TreeSupport3D::organic_smooth_branches_avoid_collisions(), Slic3r::Line::overlap(), Slic3r::GUI::pan_camera(), Slic3r::Line::parallel_to(), Slic3r::PlateData::parse_filament_info(), Slic3r::patternPoints(), Slic3r::peak_curvature_by_reach(), Slic3r::Line::perpendicular_to(), Slic3r::SeamPlacer::place_seam(), anonymous_namespace{OrcaSlicer_profile_validator.cpp}::place_wipe_tower(), Slic3r::TreeSupport::plan_layer_heights(), Slic3r::WipeTower::plan_toolchange(), Slic3r::WipeTower::plan_tower_new(), Slic3r::GCodeWriter::planned_travel_z(), Slic3r::LayerRegion::prepare_fill_surfaces(), Slic3r::GUI::PartPlateList::preprocess_exclude_areas(), Slic3r::PerimeterGenerator::printable_slices(), Slic3r::orientation::AutoOrienter::process(), Slic3r::GCodeProcessor::process_G1(), Slic3r::GCodeProcessor::process_G2_G3(), Slic3r::AdaptivePAProcessor::process_layer(), Slic3r::GCode::process_layer(), Slic3r::SpiralVase::process_layer(), Slic3r::GCode::process_layer_change_gcode(), Slic3r::GCodeProcessor::PreCoolingInjector::process_pre_cooling_and_heating(), Slic3r::Point3::projection_onto(), Slic3r::AdaptiveInfillField::radial(), Slic3r::PrintObjectSupportMaterial::raft_and_intermediate_support_layers(), Slic3r::WipeTower::ramming(), Slic3r::ray_intersetion_line(), Slic3r::Geometry::ray_ray_intersection(), Slic3r::GUI::Camera::recover_from_free_camera(), Slic3r::GUI::GLCanvas3D::reload_scene(), Slic3r::GUI::GLGizmoRotate::render_angle_arc(), Slic3r::GUI::GLGizmoPainterBase::render_cursor_circle(), Slic3r::GUI::GLGizmoMeasure::render_dimensioning(), Slic3r::GUI::AMSLib::render_generic_text(), Slic3r::GUI::GCodeViewer::render_legend_color_arr_recommen(), Slic3r::reorder_by_two_exchanges_with_segment_flipping(), Slic3r::ToolOrdering::reorder_extruders_for_minimum_flush_volume(), Slic3r::GCodeWriter::retract(), Slic3r::GCodeWriter::retract_for_toolchange(), Slic3r::WipeTower::rib_footprint_side(), Slic3r::GUI::Selection::rotate(), Slic3r::GUI::Camera::rotate_local_around_target(), Slic3r::GUI::Camera::rotate_local_with_target(), Slic3r::CornerSmoother::round_corner(), Slic3r::CLI::run(), Slic3r::TriangleSelector::seed_fill_select_triangles(), Slic3r::Geometry::segment_segment_intersection(), Slic3r::GUI::GLGizmoRotate::set_angle(), Slic3r::GCode::set_extruder(), Slic3r::set_flush_volumes_matrix(), Slic3r::Extruder::set_retracted(), Slic3r::GUI::GLGizmoMeasure::show_distance_xyz_ui(), Slic3r::GUI::GLGizmoMeasure::show_face_face_assembly_senior(), Slic3r::PrintObject::slice(), Slic3r::slice_mesh_slabs(), Slic3r::slice_volumes_inner(), Slic3r::PerExtruderAdjustments::slow_down_to_feedrate(), Slic3r::tex2color::color_utils::smooth_region_labels(), Slic3r::SLAPrint::Steps::support_tree(), Slic3r::GUI::Sidebar::priv::sync_extruder_list(), Slic3r::thick_polyline_to_multi_path(), Slic3r::PerExtruderAdjustments::time_stretch_when_slowing_down_to_feedrate(), Slic3r::WipeTower2::toolchange_Wipe(), Slic3r::WipeTower::toolchange_Wipe(), Slic3r::WipeTower::toolchange_wipe_new(), Slic3r::ToolOrdering::tools_for_layer(), Slic3r::WipeTowerIntegration::tower_height_tag(), Slic3r::trafos_differ_in_rotation_by_z_and_mirroring_by_xy_only(), Slic3r::transformed_its_bbox2d(), Slic3r::transformed_its_bboxes_in_z_ranges(), Slic3r::GCodeWriter::travel_to_xyz(), Slic3r::GCodeWriter::travel_to_z(), Slic3r::tree_supports_generate_paths(), Slic3r::TriangleSelector::triangle_midpoint_or_allocate(), Slic3r::anonymous_namespace{Model.cpp}::triangulated_prism_footprints(), Slic3r::PrintObjectSupportMaterial::trim_support_layers_by_object(), Slic3r::ArcSegment::try_create_arc(), Slic3r::sla::SupportPointGenerator::uniformly_cover(), Slic3r::GUI::GLCanvas3D::update_compacted_wipe_tower_clearance(), Slic3r::GUI::PartPlate::update_exclusion_volume_preview_models(), Slic3r::GUI::GizmoObjectManipulation::update_if_dirty(), Slic3r::GUI::GLGizmoMeasure::update_measurement_result(), Slic3r::PresetBundle::update_multi_material_filament_presets(), Slic3r::GUI::ConfigManipulation::update_print_fff_config(), Slic3r::arrangement::update_selected_items_axis_align(), Slic3r::GUI::GCodeViewer::update_sequential_view_current(), Slic3r::GUI::Sidebar::priv::update_sync_status(), Slic3r::update_volume_bboxes(), Slic3r::Print::validate(), Slic3r::Print::validate_compacted_wipe_tower_clearance(), Slic3r::TriangleSelector::verify_triangle_midpoints(), Slic3r::GCodeWriter::will_move_z(), Slic3r::Wipe::wipe(), Slic3r::wipe_path_stays_on_material_side(), Slic3r::Print::wipe_tower_data(), Slic3r::Flow::with_cross_section(), and Slic3r::arrangement::z_ranges_overlap().

◆ M_PI

#define M_PI   3.1415926535897932