![]() |
Prusa Slicer 2.6.0
|
Collaboration diagram for igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >:Public Member Functions | |
| IGL_INLINE void | SolvePoisson (Eigen::VectorXd Stiffness, double vector_field_scale=0.1f, double grid_res=1.f, bool direct_round=true, int localIter=0, bool _integer_rounding=true, bool _singularity_rounding=true, std::vector< int > roundVertices=std::vector< int >(), std::vector< std::vector< int > > hardFeatures=std::vector< std::vector< int > >()) |
| IGL_INLINE | PoissonSolver (const Eigen::PlainObjectBase< DerivedV > &_V, const Eigen::PlainObjectBase< DerivedF > &_F, const Eigen::PlainObjectBase< DerivedV > &_Vcut, const Eigen::PlainObjectBase< DerivedF > &_Fcut, const Eigen::PlainObjectBase< DerivedF > &_TT, const Eigen::PlainObjectBase< DerivedF > &_TTi, const Eigen::PlainObjectBase< DerivedV > &_PD1, const Eigen::PlainObjectBase< DerivedV > &_PD2, const Eigen::Matrix< int, Eigen::Dynamic, 1 > &_Handle_Singular, const MeshSystemInfo &_Handle_SystemInfo) |
| IGL_INLINE std::complex< double > | GetRotationComplex (int interval) |
| START COMMON MATH FUNCTIONS return the complex encoding the rotation for a given missmatch interval. | |
| IGL_INLINE void | AddFixedVertex (int v) |
| END COMMON MATH FUNCTIONS. | |
| IGL_INLINE void | FindFixedVertField () |
| find vertex to fix in case we're using a vector field NB: multiple components not handled | |
| IGL_INLINE void | FindFixedVert () |
| find hard constraint depending if using or not a vector field | |
| IGL_INLINE int | GetFirstVertexIndex (int v) |
| IGL_INLINE void | FixBlockedVertex () |
| fix the vertices which are flagged as fixed | |
| IGL_INLINE void | AddSingularityRound () |
| END FIXING VERTICES. | |
| IGL_INLINE void | AddToRoundVertices (std::vector< int > ids) |
| IGL_INLINE void | BuildLaplacianMatrix (double vfscale=1) |
| START GENERIC SYSTEM FUNCTIONS. | |
| IGL_INLINE void | FindSizes () |
| find different sized of the system | |
| IGL_INLINE void | AllocateSystem () |
| IGL_INLINE void | InitMatrix () |
| intitialize the whole matrix | |
| IGL_INLINE void | MapCoords () |
| map back coordinates after that the system has been solved | |
| IGL_INLINE void | BuildSeamConstraintsExplicitTranslation () |
| END GENERIC SYSTEM FUNCTIONS. | |
| IGL_INLINE void | BuildUserDefinedConstraints () |
| set the constraints for the inter-range cuts | |
| IGL_INLINE void | MixedIntegerSolve (double cone_grid_res=1, bool direct_round=true, int localIter=0) |
| call of the mixed integer solver | |
| IGL_INLINE void | clearUserConstraint () |
| IGL_INLINE void | addSharpEdgeConstraint (int fid, int vid) |
Public Attributes | |
| const Eigen::PlainObjectBase< DerivedV > & | V |
| const Eigen::PlainObjectBase< DerivedF > & | F |
| const Eigen::PlainObjectBase< DerivedV > & | Vcut |
| const Eigen::PlainObjectBase< DerivedF > & | Fcut |
| const Eigen::PlainObjectBase< DerivedF > & | TT |
| const Eigen::PlainObjectBase< DerivedF > & | TTi |
| const Eigen::PlainObjectBase< DerivedV > & | PD1 |
| const Eigen::PlainObjectBase< DerivedV > & | PD2 |
| const Eigen::Matrix< int, Eigen::Dynamic, 1 > & | Handle_Singular |
| const MeshSystemInfo & | Handle_SystemInfo |
| Eigen::VectorXd | Handle_Stiffness |
| std::vector< std::vector< int > > | VF |
| std::vector< std::vector< int > > | VFi |
| Eigen::MatrixXd | UV |
| Eigen::MatrixXd | WUV |
| Eigen::MatrixXd | UV_out |
| Eigen::SparseMatrix< double > | Lhs |
| Eigen::SparseMatrix< double > | Constraints |
| Eigen::VectorXd | rhs |
| Eigen::VectorXd | constraints_rhs |
| std::vector< double > | X |
| vector of unknowns | |
| unsigned int | n_fixed_vars |
| number of fixed vertex | |
| unsigned int | n_vert_vars |
| the number of REAL variables for vertices | |
| unsigned int | num_total_vars |
| total number of variables of the system, do not consider constraints, but consider integer vars | |
| unsigned int | n_integer_vars |
| the total number of integer variables | |
| unsigned int | num_cut_constraint |
| CONSTRAINT PART number of cuts constraints. | |
| unsigned int | num_userdefined_constraint |
| unsigned int | num_constraint_equations |
| total number of constraints equations | |
| std::vector< int > | Hard_constraints |
| vector of blocked vertices | |
| std::vector< int > | ids_to_round |
| vector of indexes to round | |
| std::vector< std::vector< int > > | userdefined_constraints |
| vector of indexes to round | |
| bool | integer_rounding |
| boolean that is true if rounding to integer is needed | |
| IGL_INLINE igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::PoissonSolver | ( | const Eigen::PlainObjectBase< DerivedV > & | _V, |
| const Eigen::PlainObjectBase< DerivedF > & | _F, | ||
| const Eigen::PlainObjectBase< DerivedV > & | _Vcut, | ||
| const Eigen::PlainObjectBase< DerivedF > & | _Fcut, | ||
| const Eigen::PlainObjectBase< DerivedF > & | _TT, | ||
| const Eigen::PlainObjectBase< DerivedF > & | _TTi, | ||
| const Eigen::PlainObjectBase< DerivedV > & | _PD1, | ||
| const Eigen::PlainObjectBase< DerivedV > & | _PD2, | ||
| const Eigen::Matrix< int, Eigen::Dynamic, 1 > & | _Handle_Singular, | ||
| const MeshSystemInfo & | _Handle_SystemInfo | ||
| ) |
References igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::F, Eigen::PlainObjectBase< Derived >::rows(), igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::UV, igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::UV_out, igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::V, igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Vcut, igl::vertex_triangle_adjacency(), igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::VF, igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::VFi, and igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::WUV.
Here is the call graph for this function:| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::AddFixedVertex | ( | int | v | ) |
END COMMON MATH FUNCTIONS.
START FIXING VERTICES set a given vertex as fixed
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::addSharpEdgeConstraint | ( | int | fid, |
| int | vid | ||
| ) |
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::AddSingularityRound |
END FIXING VERTICES.
HANDLING SINGULARITY
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::AddToRoundVertices | ( | std::vector< int > | ids | ) |
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::AllocateSystem |
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::BuildLaplacianMatrix | ( | double | vfscale = 1 | ) |
START GENERIC SYSTEM FUNCTIONS.
Compute LHS
Compute RHS
References igl::doublearea(), igl::grad(), igl::slice_into(), and Eigen::SparseMatrixBase< Derived >::transpose().
Here is the call graph for this function:| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::BuildSeamConstraintsExplicitTranslation |
END GENERIC SYSTEM FUNCTIONS.
set the constraints for the inter-range cuts
current constraint row
get the integer variable
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::BuildUserDefinedConstraints |
set the constraints for the inter-range cuts
the user defined constraints are at the end
current constraint row
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::clearUserConstraint |
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::FindFixedVert |
find hard constraint depending if using or not a vector field
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::FindFixedVertField |
find vertex to fix in case we're using a vector field NB: multiple components not handled
if anything fixed fix the first
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::FindSizes |
find different sized of the system
find the vertex that need to be fixed
REAL PART
INTEGER PART the total number of integer variables
CONSTRAINT PART
total variable of the system
initialize matrix size
References DEBUGPRINT.
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::FixBlockedVertex |
fix the vertices which are flagged as fixed
get first index of the vertex that must blocked
multiply times 2 because of uv
find the first free row to add the constraint
add fixing constraint LHS
add fixing constraint RHS
| IGL_INLINE int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::GetFirstVertexIndex | ( | int | v | ) |
| IGL_INLINE std::complex< double > igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::GetRotationComplex | ( | int | interval | ) |
START COMMON MATH FUNCTIONS return the complex encoding the rotation for a given missmatch interval.
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::InitMatrix |
intitialize the whole matrix
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::MapCoords |
map back coordinates after that the system has been solved
map coords to faces
then get U and V coords
| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::MixedIntegerSolve | ( | double | cone_grid_res = 1, |
| bool | direct_round = true, |
||
| int | localIter = 0 |
||
| ) |
call of the mixed integer solver
variables part
matrix A
constraints part
add penalization term for integer variables
References col(), DEBUGPRINT, and row().
Here is the call graph for this function:| IGL_INLINE void igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::SolvePoisson | ( | Eigen::VectorXd | Stiffness, |
| double | vector_field_scale = 0.1f, |
||
| double | grid_res = 1.f, |
||
| bool | direct_round = true, |
||
| int | localIter = 0, |
||
| bool | _integer_rounding = true, |
||
| bool | _singularity_rounding = true, |
||
| std::vector< int > | roundVertices = std::vector<int>(), |
||
| std::vector< std::vector< int > > | hardFeatures = std::vector<std::vector<int> >() |
||
| ) |
Initializing Matrix
initialize the matrix ALLOCATING SPACE
build the laplacian system
References DEBUGPRINT.
Referenced by igl::copyleft::comiso::MIQ_class< DerivedV, DerivedF, DerivedU >::MIQ_class().
Here is the caller graph for this function:| Eigen::SparseMatrix<double> igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Constraints |
| Eigen::VectorXd igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::constraints_rhs |
| const Eigen::PlainObjectBase<DerivedF>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::F |
| const Eigen::PlainObjectBase<DerivedF>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Fcut |
| const Eigen::Matrix<int, Eigen::Dynamic, 1>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Handle_Singular |
| Eigen::VectorXd igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Handle_Stiffness |
| const MeshSystemInfo& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Handle_SystemInfo |
| std::vector<int> igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Hard_constraints |
vector of blocked vertices
| std::vector<int> igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::ids_to_round |
vector of indexes to round
| bool igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::integer_rounding |
boolean that is true if rounding to integer is needed
| Eigen::SparseMatrix<double> igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Lhs |
| unsigned int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::n_fixed_vars |
number of fixed vertex
| unsigned int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::n_integer_vars |
the total number of integer variables
| unsigned int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::n_vert_vars |
the number of REAL variables for vertices
| unsigned int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::num_constraint_equations |
total number of constraints equations
| unsigned int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::num_cut_constraint |
CONSTRAINT PART number of cuts constraints.
| unsigned int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::num_total_vars |
total number of variables of the system, do not consider constraints, but consider integer vars
| unsigned int igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::num_userdefined_constraint |
| const Eigen::PlainObjectBase<DerivedV>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::PD1 |
| const Eigen::PlainObjectBase<DerivedV>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::PD2 |
| Eigen::VectorXd igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::rhs |
| const Eigen::PlainObjectBase<DerivedF>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::TT |
| const Eigen::PlainObjectBase<DerivedF>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::TTi |
| std::vector<std::vector<int > > igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::userdefined_constraints |
vector of indexes to round
| Eigen::MatrixXd igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::UV |
| Eigen::MatrixXd igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::UV_out |
| const Eigen::PlainObjectBase<DerivedV>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::V |
| const Eigen::PlainObjectBase<DerivedV>& igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::Vcut |
| std::vector<std::vector<int> > igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::VF |
| std::vector<std::vector<int> > igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::VFi |
| Eigen::MatrixXd igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::WUV |
| std::vector< double > igl::copyleft::comiso::PoissonSolver< DerivedV, DerivedF >::X |
vector of unknowns