Blender V4.3
slim Namespace Reference

Classes

struct  GeometryData
 
struct  MatrixTransfer
 
struct  MatrixTransferChart
 
struct  PinnedVertexData
 
struct  SLIMData
 
class  SlimFailedException
 

Typedefs

typedef std::unique_ptr< SLIMDataSLIMDataPtr
 

Functions

static void correct_geometry_size (double surface_area_to_map_area_ratio, MatrixXd &vertex_positions, double desired_surface_area_to_map_ration)
 
template<typename VertexPositionType , typename FaceIndicesType >
static double compute_surface_area (const VertexPositionType v, const FaceIndicesType f)
 
void correct_map_surface_area_if_necessary (SLIMData &slim_data)
 
void correct_mesh_surface_area_if_necessary (SLIMData &slim_data)
 
template<typename DerivedV , typename DerivedF , typename DerivedC >
static void cotmatrix_entries (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::PlainObjectBase< DerivedC > &C)
 
template<typename DerivedV , typename DerivedF , typename Scalar >
void cotmatrix (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::SparseMatrix< Scalar > &L)
 
template<typename DerivedX , typename DerivedY , typename DerivedIX >
static void doublearea_sort3 (const Eigen::PlainObjectBase< DerivedX > &X, const int dim, const bool ascending, Eigen::PlainObjectBase< DerivedY > &Y, Eigen::PlainObjectBase< DerivedIX > &IX)
 
template<typename DerivedV , typename DerivedF , typename DeriveddblA >
void doublearea (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::PlainObjectBase< DeriveddblA > &dblA)
 
template<typename Derivedl , typename DeriveddblA >
void doublearea (const Eigen::PlainObjectBase< Derivedl > &ul, Eigen::PlainObjectBase< DeriveddblA > &dblA)
 
template<typename DerivedV , typename DerivedF , typename DerivedL >
void edge_lengths (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::PlainObjectBase< DerivedL > &L)
 
template<typename DerivedV , typename DerivedF , typename DerivedL >
void squared_edge_lengths (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::PlainObjectBase< DerivedL > &L)
 
static double line_search (Eigen::MatrixXd &x, const Eigen::MatrixXd &d, double step_size, std::function< double(Eigen::MatrixXd &)> energy, double cur_energy=-1)
 
static double get_smallest_pos_quad_zero (double a, double b, double c)
 
static double get_min_pos_root_2D (const Eigen::MatrixXd &uv, const Eigen::MatrixXi &F, Eigen::MatrixXd &d, int f)
 
static double compute_max_step_from_singularities (const Eigen::MatrixXd &uv, const Eigen::MatrixXi &F, Eigen::MatrixXd &d)
 
double flip_avoiding_line_search (const Eigen::MatrixXi F, Eigen::MatrixXd &cur_v, Eigen::MatrixXd &dst_v, std::function< double(Eigen::MatrixXd &)> energy, double cur_energy)
 
static void create_weights_per_face (SLIMData &slim_data)
 
static void apply_transformation (SLIMData &slim_data, Matrix2d &transformation_matrix)
 
static void apply_translation (SLIMData &slim_data, Vector2d &translation_vector)
 
static void retrieve_positions_of_pinned_vertices_in_initialization (const MatrixXd &all_uv_positions_in_initialization, const VectorXi &indices_of_pinned_vertices, MatrixXd &position_of_pinned_vertices_in_initialization)
 
static void flip_input_geometry (SLIMData &slim_data)
 
static void compute_centroid (const MatrixXd &point_cloud, Vector2d &centroid)
 
static void compute_least_squares_scaling (MatrixXd centered_pins, MatrixXd centered_initialized_pins, Matrix2d &transformation_matrix)
 
static void comput_least_squares_rotation_scale_only (SLIMData &slim_data, Vector2d &translation_vector, Matrix2d &transformation_matrix, bool is_flip_allowed)
 
static void compute_transformation_matrix2_pins (const SLIMData &slim_data, Matrix2d &transformation_matrix)
 
static void compute_translation1_pin (const SLIMData &slim_data, Vector2d &translation_vector)
 
static void transform_initialized_map (SLIMData &slim_data)
 
static bool is_translation_needed (const SLIMData &slim_data)
 
void transform_initialization_if_necessary (SLIMData &slim_data)
 
template<typename DerivedV , typename DerivedF >
static void grad (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::SparseMatrix< typename DerivedV::Scalar > &G, bool uniform=false)
 
template<typename DerivedA , typename DerivedR , typename DerivedT , typename DerivedU , typename DerivedS , typename DerivedV >
static void polar_svd (const Eigen::PlainObjectBase< DerivedA > &A, Eigen::PlainObjectBase< DerivedR > &R, Eigen::PlainObjectBase< DerivedT > &T, Eigen::PlainObjectBase< DerivedU > &U, Eigen::PlainObjectBase< DerivedS > &S, Eigen::PlainObjectBase< DerivedV > &V)
 
static void compute_surface_gradient_matrix (const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::MatrixXd &F1, const Eigen::MatrixXd &F2, Eigen::SparseMatrix< double > &D1, Eigen::SparseMatrix< double > &D2)
 
static void compute_weighted_jacobians (SLIMData &s, const Eigen::MatrixXd &uv)
 
static void compute_unweighted_jacobians (SLIMData &s, const Eigen::MatrixXd &uv)
 
static void compute_jacobians (SLIMData &s, const Eigen::MatrixXd &uv)
 
static void update_weights_and_closest_rotations (SLIMData &s, Eigen::MatrixXd &uv)
 
template<typename DerivedV , typename DerivedF >
static void local_basis (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, Eigen::PlainObjectBase< DerivedV > &B1, Eigen::PlainObjectBase< DerivedV > &B2, Eigen::PlainObjectBase< DerivedV > &B3)
 
static void pre_calc (SLIMData &s)
 
static void buildA (SLIMData &s, Eigen::SparseMatrix< double > &A)
 
static void buildRhs (SLIMData &s, const Eigen::SparseMatrix< double > &At)
 
static void add_soft_constraints (SLIMData &s, Eigen::SparseMatrix< double > &L)
 
static void build_linear_system (SLIMData &s, Eigen::SparseMatrix< double > &L)
 
static double compute_energy_with_jacobians (SLIMData &s, const Eigen::MatrixXd &Ji, Eigen::VectorXd &areas, Eigen::VectorXd &singularValues, bool gatherSingularValues)
 
static double compute_soft_const_energy (SLIMData &s, Eigen::MatrixXd &V_o)
 
static double compute_energy (SLIMData &s, Eigen::MatrixXd &V_new, Eigen::VectorXd &singularValues, bool gatherSingularValues)
 
static double compute_energy (SLIMData &s, Eigen::MatrixXd &V_new)
 
static double compute_energy (SLIMData &s, Eigen::MatrixXd &V_new, Eigen::VectorXd &singularValues)
 
void slim_precompute (Eigen::MatrixXd &V, Eigen::MatrixXi &F, Eigen::MatrixXd &V_init, SLIMData &data, SLIMData::SLIM_ENERGY slim_energy, Eigen::VectorXi &b, Eigen::MatrixXd &bc, double soft_p)
 
double computeGlobalScaleInvarianceFactor (Eigen::VectorXd &singularValues, Eigen::VectorXd &areas)
 
static void solve_weighted_arap (SLIMData &s, Eigen::MatrixXd &uv)
 
Eigen::MatrixXd slim_solve (SLIMData &data, int iter_num)
 
static void transfer_uvs_back_to_native_part (MatrixTransferChart &chart, Eigen::MatrixXd &uv)
 
static Eigen::MatrixXd get_interactive_result_blended_with_original (float blend, const SLIMData &slim_data)
 
static void adjust_pins (SLIMData &slim_data, const PinnedVertexData &pinned_vertex_data)
 
static double compute_angle (const Eigen::Vector3d &a, const Eigen::Vector3d &b)
 
static void find_vertex_to_opposite_angles_correspondence (const Eigen::MatrixXi &f, const Eigen::MatrixXd &v, Eigen::SparseMatrix< double > &vertex_to_face_indices)
 
static void find_vertex_to_its_angles_correspondence (const Eigen::MatrixXi &f, const Eigen::MatrixXd &v, Eigen::SparseMatrix< double > &vertex_to_face_indices)
 
void convex_border_parameterization (const Eigen::MatrixXi &f, const Eigen::MatrixXd &v, const Eigen::MatrixXi &e, const Eigen::VectorXd &el, const Eigen::VectorXi &bnd, const Eigen::MatrixXd &bnd_uv, Eigen::MatrixXd &uv, Method method)
 
void mvc (const Eigen::MatrixXi &f, const Eigen::MatrixXd &v, const Eigen::MatrixXi &e, const Eigen::VectorXd &el, const Eigen::VectorXi &bnd, const Eigen::MatrixXd &bnd_uv, Eigen::MatrixXd &uv)
 
void harmonic (const Eigen::MatrixXi &f, const Eigen::MatrixXd &v, const Eigen::MatrixXi &e, const Eigen::VectorXd &el, const Eigen::VectorXi &bnd, const Eigen::MatrixXd &bnd_uv, Eigen::MatrixXd &uv)
 
void tutte (const Eigen::MatrixXi &f, const Eigen::MatrixXd &v, const Eigen::MatrixXi &e, const Eigen::VectorXd &el, const Eigen::VectorXi &bnd, const Eigen::MatrixXd &bnd_uv, Eigen::MatrixXd &uv)
 
void map_vertices_to_convex_border (Eigen::MatrixXd &vertex_positions)
 
static void get_flips (const Eigen::MatrixXi &f, const Eigen::MatrixXd &uv, std::vector< int > &flip_idx)
 
int count_flips (const Eigen::MatrixXi &f, const Eigen::MatrixXd &uv)
 
void harmonic (const Eigen::MatrixXd &v, const Eigen::MatrixXi &f, const Eigen::MatrixXi &B, const Eigen::MatrixXd &bnd_uv, int power_of_harmonic_operaton, Eigen::MatrixXd &UV)
 

Typedef Documentation

◆ SLIMDataPtr

typedef std::unique_ptr<SLIMData> slim::SLIMDataPtr

Definition at line 18 of file slim_matrix_transfer.h.

Function Documentation

◆ add_soft_constraints()

static void slim::add_soft_constraints ( SLIMData & s,
Eigen::SparseMatrix< double > & L )
inlinestatic

Definition at line 516 of file slim.cpp.

References BLI_assert, and L.

Referenced by build_linear_system().

◆ adjust_pins()

◆ apply_transformation()

static void slim::apply_transformation ( SLIMData & slim_data,
Matrix2d & transformation_matrix )
static

◆ apply_translation()

static void slim::apply_translation ( SLIMData & slim_data,
Vector2d & translation_vector )
static

◆ build_linear_system()

static void slim::build_linear_system ( SLIMData & s,
Eigen::SparseMatrix< double > & L )
inlinestatic

Definition at line 529 of file slim.cpp.

References A, add_soft_constraints(), BLI_assert, buildA(), buildRhs(), and L.

Referenced by solve_weighted_arap().

◆ buildA()

static void slim::buildA ( SLIMData & s,
Eigen::SparseMatrix< double > & A )
inlinestatic

Definition at line 442 of file slim.cpp.

References BLI_assert.

Referenced by build_linear_system().

◆ buildRhs()

static void slim::buildRhs ( SLIMData & s,
const Eigen::SparseMatrix< double > & At )
inlinestatic

Definition at line 490 of file slim.cpp.

References BLI_assert.

Referenced by build_linear_system().

◆ comput_least_squares_rotation_scale_only()

static void slim::comput_least_squares_rotation_scale_only ( SLIMData & slim_data,
Vector2d & translation_vector,
Matrix2d & transformation_matrix,
bool is_flip_allowed )
static

◆ compute_angle()

static double slim::compute_angle ( const Eigen::Vector3d & a,
const Eigen::Vector3d & b )
static

◆ compute_centroid()

static void slim::compute_centroid ( const MatrixXd & point_cloud,
Vector2d & centroid )
static

◆ compute_energy() [1/3]

static double slim::compute_energy ( SLIMData & s,
Eigen::MatrixXd & V_new )
inlinestatic

Definition at line 634 of file slim.cpp.

References BLI_assert, and compute_energy().

◆ compute_energy() [2/3]

static double slim::compute_energy ( SLIMData & s,
Eigen::MatrixXd & V_new,
Eigen::VectorXd & singularValues )
inlinestatic

Definition at line 641 of file slim.cpp.

References BLI_assert, and compute_energy().

◆ compute_energy() [3/3]

static double slim::compute_energy ( SLIMData & s,
Eigen::MatrixXd & V_new,
Eigen::VectorXd & singularValues,
bool gatherSingularValues )
inlinestatic

◆ compute_energy_with_jacobians()

static double slim::compute_energy_with_jacobians ( SLIMData & s,
const Eigen::MatrixXd & Ji,
Eigen::VectorXd & areas,
Eigen::VectorXd & singularValues,
bool gatherSingularValues )
inlinestatic

◆ compute_jacobians()

static void slim::compute_jacobians ( SLIMData & s,
const Eigen::MatrixXd & uv )
inlinestatic

◆ compute_least_squares_scaling()

static void slim::compute_least_squares_scaling ( MatrixXd centered_pins,
MatrixXd centered_initialized_pins,
Matrix2d & transformation_matrix )
static

Definition at line 94 of file least_squares_relocator.cpp.

References abs().

Referenced by comput_least_squares_rotation_scale_only().

◆ compute_max_step_from_singularities()

static double slim::compute_max_step_from_singularities ( const Eigen::MatrixXd & uv,
const Eigen::MatrixXi & F,
Eigen::MatrixXd & d )
inlinestatic

Definition at line 140 of file flip_avoiding_line_search.cpp.

References get_min_pos_root_2D(), and min.

Referenced by flip_avoiding_line_search().

◆ compute_soft_const_energy()

static double slim::compute_soft_const_energy ( SLIMData & s,
Eigen::MatrixXd & V_o )
inlinestatic

Definition at line 613 of file slim.cpp.

References BLI_assert, and e.

Referenced by compute_energy().

◆ compute_surface_area()

template<typename VertexPositionType , typename FaceIndicesType >
static double slim::compute_surface_area ( const VertexPositionType v,
const FaceIndicesType f )
static

◆ compute_surface_gradient_matrix()

static void slim::compute_surface_gradient_matrix ( const Eigen::MatrixXd & V,
const Eigen::MatrixXi & F,
const Eigen::MatrixXd & F1,
const Eigen::MatrixXd & F2,
Eigen::SparseMatrix< double > & D1,
Eigen::SparseMatrix< double > & D2 )
inlinestatic

Definition at line 214 of file slim.cpp.

References G, grad(), and V.

Referenced by pre_calc().

◆ compute_transformation_matrix2_pins()

static void slim::compute_transformation_matrix2_pins ( const SLIMData & slim_data,
Matrix2d & transformation_matrix )
static

◆ compute_translation1_pin()

static void slim::compute_translation1_pin ( const SLIMData & slim_data,
Vector2d & translation_vector )
static

◆ compute_unweighted_jacobians()

static void slim::compute_unweighted_jacobians ( SLIMData & s,
const Eigen::MatrixXd & uv )
inlinestatic

Definition at line 249 of file slim.cpp.

References BLI_assert.

Referenced by compute_jacobians().

◆ compute_weighted_jacobians()

static void slim::compute_weighted_jacobians ( SLIMData & s,
const Eigen::MatrixXd & uv )
inlinestatic

Definition at line 231 of file slim.cpp.

References BLI_assert.

Referenced by compute_jacobians().

◆ computeGlobalScaleInvarianceFactor()

double slim::computeGlobalScaleInvarianceFactor ( Eigen::VectorXd & singularValues,
Eigen::VectorXd & areas )
inline

Definition at line 690 of file slim.cpp.

References b, sqrt(), and x.

Referenced by slim_solve().

◆ convex_border_parameterization()

void slim::convex_border_parameterization ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & v,
const Eigen::MatrixXi & e,
const Eigen::VectorXd & el,
const Eigen::VectorXi & bnd,
const Eigen::MatrixXd & bnd_uv,
Eigen::MatrixXd & uv,
Method method )

◆ correct_geometry_size()

static void slim::correct_geometry_size ( double surface_area_to_map_area_ratio,
MatrixXd & vertex_positions,
double desired_surface_area_to_map_ration )
static

◆ correct_map_surface_area_if_necessary()

◆ correct_mesh_surface_area_if_necessary()

◆ cotmatrix()

template<typename DerivedV , typename DerivedF , typename Scalar >
void slim::cotmatrix ( const Eigen::PlainObjectBase< DerivedV > & V,
const Eigen::PlainObjectBase< DerivedF > & F,
Eigen::SparseMatrix< Scalar > & L )
inline

Definition at line 57 of file cotmatrix.cpp.

References C, cotmatrix_entries(), e, F, L, and V.

◆ cotmatrix_entries()

template<typename DerivedV , typename DerivedF , typename DerivedC >
static void slim::cotmatrix_entries ( const Eigen::PlainObjectBase< DerivedV > & V,
const Eigen::PlainObjectBase< DerivedF > & F,
Eigen::PlainObjectBase< DerivedC > & C )
inlinestatic

Definition at line 24 of file cotmatrix.cpp.

References C, doublearea(), l, squared_edge_lengths(), and V.

Referenced by cotmatrix().

◆ count_flips()

int slim::count_flips ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & uv )

Definition at line 284 of file uv_initializer.cpp.

References get_flips().

◆ create_weights_per_face()

◆ doublearea() [1/2]

template<typename Derivedl , typename DeriveddblA >
void slim::doublearea ( const Eigen::PlainObjectBase< Derivedl > & ul,
Eigen::PlainObjectBase< DeriveddblA > & dblA )
inline

Definition at line 163 of file doublearea.cpp.

References doublearea_sort3(), l, range, and sqrt().

◆ doublearea() [2/2]

template<typename DerivedV , typename DerivedF , typename DeriveddblA >
void slim::doublearea ( const Eigen::PlainObjectBase< DerivedV > & V,
const Eigen::PlainObjectBase< DerivedF > & F,
Eigen::PlainObjectBase< DeriveddblA > & dblA )
inline

Definition at line 116 of file doublearea.cpp.

References doublearea(), edge_lengths(), F, l, V, x, and y.

Referenced by compute_surface_area(), cotmatrix_entries(), doublearea(), and slim_precompute().

◆ doublearea_sort3()

template<typename DerivedX , typename DerivedY , typename DerivedIX >
static void slim::doublearea_sort3 ( const Eigen::PlainObjectBase< DerivedX > & X,
const int dim,
const bool ascending,
Eigen::PlainObjectBase< DerivedY > & Y,
Eigen::PlainObjectBase< DerivedIX > & IX )
inlinestatic

Definition at line 36 of file doublearea.cpp.

References b, cast(), range, X, and Y.

Referenced by doublearea().

◆ edge_lengths()

template<typename DerivedV , typename DerivedF , typename DerivedL >
void slim::edge_lengths ( const Eigen::PlainObjectBase< DerivedV > & V,
const Eigen::PlainObjectBase< DerivedF > & F,
Eigen::PlainObjectBase< DerivedL > & L )
inline

Definition at line 17 of file edge_lengths.cpp.

References L, squared_edge_lengths(), and V.

Referenced by doublearea().

◆ find_vertex_to_its_angles_correspondence()

static void slim::find_vertex_to_its_angles_correspondence ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & v,
Eigen::SparseMatrix< double > & vertex_to_face_indices )
static

Definition at line 56 of file uv_initializer.cpp.

References compute_angle(), and v.

Referenced by convex_border_parameterization().

◆ find_vertex_to_opposite_angles_correspondence()

static void slim::find_vertex_to_opposite_angles_correspondence ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & v,
Eigen::SparseMatrix< double > & vertex_to_face_indices )
static

Definition at line 21 of file uv_initializer.cpp.

References compute_angle(), and v.

Referenced by convex_border_parameterization().

◆ flip_avoiding_line_search()

double slim::flip_avoiding_line_search ( const Eigen::MatrixXi F,
Eigen::MatrixXd & cur_v,
Eigen::MatrixXd & dst_v,
std::function< double(Eigen::MatrixXd &)> energy,
double cur_energy )
inline

Definition at line 155 of file flip_avoiding_line_search.cpp.

References compute_max_step_from_singularities(), line_search(), and min.

Referenced by slim_solve().

◆ flip_input_geometry()

static void slim::flip_input_geometry ( SLIMData & slim_data)
static

◆ get_flips()

static void slim::get_flips ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & uv,
std::vector< int > & flip_idx )
static

Definition at line 261 of file uv_initializer.cpp.

Referenced by count_flips().

◆ get_interactive_result_blended_with_original()

static Eigen::MatrixXd slim::get_interactive_result_blended_with_original ( float blend,
const SLIMData & slim_data )
static

◆ get_min_pos_root_2D()

static double slim::get_min_pos_root_2D ( const Eigen::MatrixXd & uv,
const Eigen::MatrixXi & F,
Eigen::MatrixXd & d,
int f )
inlinestatic

Definition at line 107 of file flip_avoiding_line_search.cpp.

References b, F, get_smallest_pos_quad_zero(), and v2.

Referenced by compute_max_step_from_singularities().

◆ get_smallest_pos_quad_zero()

static double slim::get_smallest_pos_quad_zero ( double a,
double b,
double c )
inlinestatic

Definition at line 66 of file flip_avoiding_line_search.cpp.

References b, max, min, pow(), and sqrt().

Referenced by get_min_pos_root_2D().

◆ grad()

template<typename DerivedV , typename DerivedF >
static void slim::grad ( const Eigen::PlainObjectBase< DerivedV > & V,
const Eigen::PlainObjectBase< DerivedF > & F,
Eigen::SparseMatrix< typename DerivedV::Scalar > & G,
bool uniform = false )
inlinestatic

Definition at line 47 of file slim.cpp.

References F, G, int, M_PI, sqrt(), V, and v2.

Referenced by compute_surface_gradient_matrix().

◆ harmonic() [1/2]

void slim::harmonic ( const Eigen::MatrixXd & v,
const Eigen::MatrixXi & f,
const Eigen::MatrixXi & B,
const Eigen::MatrixXd & bnd_uv,
int power_of_harmonic_operaton,
Eigen::MatrixXd & UV )

◆ harmonic() [2/2]

void slim::harmonic ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & v,
const Eigen::MatrixXi & e,
const Eigen::VectorXd & el,
const Eigen::VectorXi & bnd,
const Eigen::MatrixXd & bnd_uv,
Eigen::MatrixXd & uv )

Definition at line 222 of file uv_initializer.cpp.

References convex_border_parameterization(), e, HARMONIC, and v.

◆ is_translation_needed()

static bool slim::is_translation_needed ( const SLIMData & slim_data)
static

◆ line_search()

static double slim::line_search ( Eigen::MatrixXd & x,
const Eigen::MatrixXd & d,
double step_size,
std::function< double(Eigen::MatrixXd &)> energy,
double cur_energy = -1 )
inlinestatic

Definition at line 33 of file flip_avoiding_line_search.cpp.

Referenced by flip_avoiding_line_search().

◆ local_basis()

template<typename DerivedV , typename DerivedF >
static void slim::local_basis ( const Eigen::PlainObjectBase< DerivedV > & V,
const Eigen::PlainObjectBase< DerivedF > & F,
Eigen::PlainObjectBase< DerivedV > & B1,
Eigen::PlainObjectBase< DerivedV > & B2,
Eigen::PlainObjectBase< DerivedV > & B3 )
inlinestatic

Definition at line 382 of file slim.cpp.

References F, normalized(), V, and v2.

Referenced by pre_calc().

◆ map_vertices_to_convex_border()

void slim::map_vertices_to_convex_border ( Eigen::MatrixXd & vertex_positions)

Definition at line 246 of file uv_initializer.cpp.

References cos(), x, and y.

◆ mvc()

void slim::mvc ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & v,
const Eigen::MatrixXi & e,
const Eigen::VectorXd & el,
const Eigen::VectorXi & bnd,
const Eigen::MatrixXd & bnd_uv,
Eigen::MatrixXd & uv )

Definition at line 210 of file uv_initializer.cpp.

References convex_border_parameterization(), e, MVC, and v.

◆ polar_svd()

template<typename DerivedA , typename DerivedR , typename DerivedT , typename DerivedU , typename DerivedS , typename DerivedV >
static void slim::polar_svd ( const Eigen::PlainObjectBase< DerivedA > & A,
Eigen::PlainObjectBase< DerivedR > & R,
Eigen::PlainObjectBase< DerivedT > & T,
Eigen::PlainObjectBase< DerivedU > & U,
Eigen::PlainObjectBase< DerivedS > & S,
Eigen::PlainObjectBase< DerivedV > & V )
inlinestatic

Definition at line 186 of file slim.cpp.

References R, V, and W.

Referenced by compute_energy_with_jacobians(), and update_weights_and_closest_rotations().

◆ pre_calc()

static void slim::pre_calc ( SLIMData & s)
inlinestatic

Definition at line 407 of file slim.cpp.

References BLI_assert, compute_surface_gradient_matrix(), and local_basis().

Referenced by slim_precompute().

◆ retrieve_positions_of_pinned_vertices_in_initialization()

static void slim::retrieve_positions_of_pinned_vertices_in_initialization ( const MatrixXd & all_uv_positions_in_initialization,
const VectorXi & indices_of_pinned_vertices,
MatrixXd & position_of_pinned_vertices_in_initialization )
static

◆ slim_precompute()

void slim::slim_precompute ( Eigen::MatrixXd & V,
Eigen::MatrixXi & F,
Eigen::MatrixXd & V_init,
SLIMData & data,
SLIMData::SLIM_ENERGY slim_energy,
Eigen::VectorXi & b,
Eigen::MatrixXd & bc,
double soft_p )

Definition at line 649 of file slim.cpp.

References b, BLI_assert, compute_energy(), doublearea(), F, pre_calc(), and V.

Referenced by slim::GeometryData::construct_slim_data().

◆ slim_solve()

◆ solve_weighted_arap()

static void slim::solve_weighted_arap ( SLIMData & s,
Eigen::MatrixXd & uv )
inlinestatic

Definition at line 743 of file slim.cpp.

References BLI_assert, build_linear_system(), and L.

Referenced by slim_solve().

◆ squared_edge_lengths()

template<typename DerivedV , typename DerivedF , typename DerivedL >
void slim::squared_edge_lengths ( const Eigen::PlainObjectBase< DerivedV > & V,
const Eigen::PlainObjectBase< DerivedF > & F,
Eigen::PlainObjectBase< DerivedL > & L )
inline

Definition at line 26 of file edge_lengths.cpp.

References F, L, range, and V.

Referenced by cotmatrix_entries(), and edge_lengths().

◆ transfer_uvs_back_to_native_part()

◆ transform_initialization_if_necessary()

void slim::transform_initialization_if_necessary ( SLIMData & slim_data)

◆ transform_initialized_map()

◆ tutte()

void slim::tutte ( const Eigen::MatrixXi & f,
const Eigen::MatrixXd & v,
const Eigen::MatrixXi & e,
const Eigen::VectorXd & el,
const Eigen::VectorXi & bnd,
const Eigen::MatrixXd & bnd_uv,
Eigen::MatrixXd & uv )

Definition at line 234 of file uv_initializer.cpp.

References convex_border_parameterization(), e, TUTTE, and v.

◆ update_weights_and_closest_rotations()

static void slim::update_weights_and_closest_rotations ( SLIMData & s,
Eigen::MatrixXd & uv )
inlinestatic