e280ae86d6
* split _WIN32 and _MSC_VER, lowercase includes
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
|
|
|
|
#include "ext/Potential.h"
|
|
#include <algorithm>
|
|
|
|
#if defined(_MSC_VER) && (_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!!!");
|
|
// w = std::min(std::max(0.0,w),1.0);
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// End Of File
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
|
|
#pragma warning(pop)
|
|
#endif
|