All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
eval.h
1//
2// Copyright 2024 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7
8#ifndef PXR_BASE_TS_EVAL_H
9#define PXR_BASE_TS_EVAL_H
10
11#include "pxr/pxr.h"
12#include "pxr/base/ts/api.h"
13#include "pxr/base/ts/types.h"
14
15#include <optional>
16
17PXR_NAMESPACE_OPEN_SCOPE
18
19struct Ts_SplineData;
20
21
22enum Ts_EvalAspect
23{
24 Ts_EvalValue,
25 Ts_EvalHeldValue,
26 Ts_EvalDerivative
27};
28
29enum Ts_EvalLocation
30{
31 Ts_EvalPre,
32 Ts_EvalAtTime, // AtTime is implemented identically to Post,
33 // but the intent of Post is a limit, while AtTime is exact.
34 Ts_EvalPost
35};
36
37
38// Evaluates a spline's value or derivative at a given time. An empty return
39// value means there is no value or derivative at all.
40//
41TS_API
42std::optional<double>
43Ts_Eval(
44 const Ts_SplineData *data,
45 TsTime time,
46 Ts_EvalAspect aspect,
47 Ts_EvalLocation location);
48
49
50PXR_NAMESPACE_CLOSE_SCOPE
51
52#endif