Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::Emboss::OrthoProject Class Reference

#include <src/libslic3r/Emboss.hpp>

+ Inheritance diagram for Slic3r::Emboss::OrthoProject:
+ Collaboration diagram for Slic3r::Emboss::OrthoProject:

Public Member Functions

 OrthoProject (Transform3d matrix, Vec3d direction)
 
std::pair< Vec3d, Vec3dcreate_front_back (const Point &p) const override
 convert 2d point to 3d points
 
Vec3d project (const Vec3d &point) const override
 Move point with respect to projection direction e.g. Orthogonal projection will move with point by direction e.g. Spherical projection need to use center of projection.
 
std::optional< Vec2dunproject (const Vec3d &p, double *depth=nullptr) const override
 Back projection.
 

Private Attributes

Transform3d m_matrix
 
Vec3d m_direction
 
Transform3d m_matrix_inv
 

Detailed Description

Constructor & Destructor Documentation

◆ OrthoProject()

Slic3r::Emboss::OrthoProject::OrthoProject ( Transform3d  matrix,
Vec3d  direction 
)
inline
356 : m_matrix(matrix), m_direction(direction), m_matrix_inv(matrix.inverse())
357 {}
Vec3d m_direction
Definition Emboss.hpp:352
Transform3d m_matrix_inv
Definition Emboss.hpp:353
Transform3d m_matrix
Definition Emboss.hpp:350

Member Function Documentation

◆ create_front_back()

std::pair< Vec3d, Vec3d > Emboss::OrthoProject::create_front_back ( const Point p) const
overridevirtual

convert 2d point to 3d points

Parameters
p2d coordinate
Returns
first - front spatial point second - back spatial point

Implements Slic3r::Emboss::IProjection.

1642 {
1643 Vec3d front(p.x(), p.y(), 0.);
1644 Vec3d front_tr = m_matrix * front;
1645 return std::make_pair(front_tr, project(front_tr));
1646}
Vec3d project(const Vec3d &point) const override
Move point with respect to projection direction e.g. Orthogonal projection will move with point by di...
Definition Emboss.cpp:1648
TPoint< P > front(const P &p)
Definition geometry_traits.hpp:872

◆ project()

Vec3d Emboss::OrthoProject::project ( const Vec3d point) const
overridevirtual

Move point with respect to projection direction e.g. Orthogonal projection will move with point by direction e.g. Spherical projection need to use center of projection.

Parameters
pointSpatial point coordinate
Returns
Projected spatial point

Implements Slic3r::Emboss::IProject3d.

1649{
1650 return point + m_direction;
1651}

◆ unproject()

std::optional< Vec2d > Emboss::OrthoProject::unproject ( const Vec3d p,
double *  depth = nullptr 
) const
overridevirtual

Back projection.

Parameters
pPoint to project
depth[optional] Depth of 2d projected point. Be careful number is in 2d scale
Returns
Uprojected point when it is possible

Implements Slic3r::Emboss::IProjection.

1654{
1655 Vec3d pp = m_matrix_inv * p;
1656 if (depth != nullptr) *depth = pp.z();
1657 return Vec2d(pp.x(), pp.y());
1658}
Eigen::Matrix< double, 2, 1, Eigen::DontAlign > Vec2d
Definition Point.hpp:51

Member Data Documentation

◆ m_direction

Vec3d Slic3r::Emboss::OrthoProject::m_direction
private

◆ m_matrix

Transform3d Slic3r::Emboss::OrthoProject::m_matrix
private

◆ m_matrix_inv

Transform3d Slic3r::Emboss::OrthoProject::m_matrix_inv
private

The documentation for this class was generated from the following files: