Image Component Library (ICL)
Public Member Functions | Private Member Functions | Private Attributes | List of all members
icl::physics::FoldMap Class Reference

discretized paper space representing folds More...

#include <FoldMap.h>

Public Member Functions

 FoldMap (const utils::Size &resolution=utils::Size(200, 300), float intialValue=1)
 
 FoldMap (const core::Img32f &image, float initialValue=1)
 
void clear ()
 
void addFold (const utils::Point32f &a, const utils::Point32f &b, float value)
 memorized folds are nagative More...
 
void removeFold (const utils::Point32f &a, const utils::Point32f &b)
 sets fold pixels to 1 More...
 
float getFoldValue (const utils::Point32f &a, const utils::Point32f &b)
 return a value that can be used as fold stiffness More...
 
const core::Img32fgetImage () const
 current fold map More...
 

Private Member Functions

void draw_fold (const utils::Point32f &a, const utils::Point32f &b, float val)
 

Private Attributes

core::Img32f m
 
float initialValue
 

Detailed Description

discretized paper space representing folds

Each pixel contains a stiffness value of the paper at that point. For each link that is created on the paper, the minimum intersected stiffness value is used. By these means, all constraints, that intersect fold lines are weak.

For memorization, an extra mechanism was implemented. Memorized links (of first-order-type) will have a negative stiffness entry in the fold map.

A bending constraint gets a either a potitive stiffness value or, if all stiffness values were 1 (i.e. no non-memorized fold was intersected), but it crosses a memorized (<0) link, it gets the memorization property.

Constructor & Destructor Documentation

◆ FoldMap() [1/2]

icl::physics::FoldMap::FoldMap ( const utils::Size resolution = utils::Size(200, 300),
float  intialValue = 1 
)

◆ FoldMap() [2/2]

icl::physics::FoldMap::FoldMap ( const core::Img32f image,
float  initialValue = 1 
)
explicit

Member Function Documentation

◆ addFold()

void icl::physics::FoldMap::addFold ( const utils::Point32f a,
const utils::Point32f b,
float  value 
)

memorized folds are nagative

◆ clear()

void icl::physics::FoldMap::clear ( )

◆ draw_fold()

void icl::physics::FoldMap::draw_fold ( const utils::Point32f a,
const utils::Point32f b,
float  val 
)
private

◆ getFoldValue()

float icl::physics::FoldMap::getFoldValue ( const utils::Point32f a,
const utils::Point32f b 
)

return a value that can be used as fold stiffness

preferres non-1 positive values in the fold map Only if the minimum of these is 1, the maximum negative value (closest to 0) is returned

◆ getImage()

const core::Img32f& icl::physics::FoldMap::getImage ( ) const
inline

current fold map

◆ removeFold()

void icl::physics::FoldMap::removeFold ( const utils::Point32f a,
const utils::Point32f b 
)

sets fold pixels to 1

Member Data Documentation

◆ initialValue

float icl::physics::FoldMap::initialValue
private

◆ m

core::Img32f icl::physics::FoldMap::m
private

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