Image Component Library (ICL)
|
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::Img32f & | getImage () 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 |
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.
icl::physics::FoldMap::FoldMap | ( | const utils::Size & | resolution = utils::Size(200, 300) , |
float | intialValue = 1 |
||
) |
|
explicit |
void icl::physics::FoldMap::addFold | ( | const utils::Point32f & | a, |
const utils::Point32f & | b, | ||
float | value | ||
) |
memorized folds are nagative
void icl::physics::FoldMap::clear | ( | ) |
|
private |
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
|
inline |
current fold map
void icl::physics::FoldMap::removeFold | ( | const utils::Point32f & | a, |
const utils::Point32f & | b | ||
) |
sets fold pixels to 1
|
private |
|
private |