| |
| |
| #include "ext/Potential.h" |
| #include <algorithm> |
| |
| #if defined(_WIN32) && (_MSC_VER <= 1200) |
| #pragma warning(push) |
| #pragma warning(disable : 4290) |
| #endif |
| |
| |
| |
| ToonzExt::Potential::Potential() |
| { |
| isValid_ = false; |
| } |
| |
| |
| |
| void ToonzExt::Potential::setParameters(const TStroke *ref, |
| double w, |
| double actionLength) |
| { |
| isValid_ = true; |
| |
| assert(ref); |
| if (!ref) |
| throw std::invalid_argument("Not valid stroke!!!"); |
| |
| assert(actionLength != 0.0); |
| if (actionLength == 0.0) |
| actionLength = TConsts::epsilon; |
| |
| assert(0.0 <= w && |
| w <= 1.0); |
| |
| if (0.0 > w || |
| w > 1.0) { |
| throw std::invalid_argument("Not valid parameter!!!"); |
| |
| } |
| |
| this->setParameters_(ref, |
| w, |
| actionLength); |
| } |
| |
| |
| |
| double |
| ToonzExt::Potential::value(double at) const |
| { |
| if (!isValid_) |
| throw std::range_error("Not yet initialized potential!"); |
| |
| assert(0.0 <= at && |
| at <= 1.0); |
| |
| if (0 > at || |
| at > 1.0) |
| at = std::min(std::max(at, 0.0), 1.0); |
| |
| return this->value_(at); |
| } |
| |
| |
| |
| |
| |
| #if defined(_WIN32) && (_MSC_VER <= 1200) |
| #pragma warning(pop) |
| #endif |
| |