8#ifndef PXR_BASE_TS_MATH_UTILS_H
9#define PXR_BASE_TS_MATH_UTILS_H
12#include "pxr/base/ts/api.h"
13#include "pxr/base/ts/types.h"
15PXR_NAMESPACE_OPEN_SCOPE
23double Ts_SolveCubic(
const TsTime c[4], TsTime time);
29Ts_CubicDerivative(
const T poly[4],
double deriv[3] )
31 deriv[2] = 3. * poly[3];
32 deriv[1] = 2. * poly[2];
38Ts_SolveCubicInInterval(
39 const TsTime poly[4],
const TsTime polyDeriv[3],
44Ts_SolveQuadratic(
const double poly[3],
double *root0,
double *root1 );
49Ts_EvalQuadratic(
const T c[3],
double u)
51 return u * (u * c[2] + c[1]) + c[0];
57Ts_EvalCubic(
const T c[4],
double u)
59 return u * (u * (u * c[3] + c[2]) + c[1]) + c[0];
64Ts_EvalCubicDerivative(
const T c[4],
double u)
66 return u * (u * 3.0 * c[3] + 2.0 * c[2]) + c[1];
69PXR_NAMESPACE_CLOSE_SCOPE
A basic mathematical interval class.
Stores a 4x4 matrix of double elements.