NDEVR
API Documentation
MovementPath.h
1/*--------------------------------------------------------------------------------------------
2Copyright (c) 2019, NDEVR LLC
3tyler.parke@ndevr.org
4 __ __ ____ _____ __ __ _______
5 | \ | | | __ \ | ___|\ \ / / | __ \
6 | \ | | | | \ \ | |___ \ \ / / | |__) |
7 | . \| | | |__/ / | |___ \ V / | _ /
8 | |\ |_|_____/__|_____|___\_/____| | \ \
9 |__| \__________________________________| \__\
10
11Subject to the terms of the Enterprise+ Agreement, NDEVR hereby grants
12Licensee a limited, non-exclusive, non-transferable, royalty-free license
13(without the right to sublicense) to use the API solely for the purpose of
14Licensee's internal development efforts to develop applications for which
15the API was provided.
16
17The above copyright notice and this permission notice shall be included in all
18copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
22PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
23FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25DEALINGS IN THE SOFTWARE.
26
27Library: Design
28File: MovementPath
29Included in API: True
30Author(s): Tyler Parke
31 *-----------------------------------------------------------------------------------------**/
32#pragma once
33#include <NDEVR/Path.h>
34#include <NDEVR/Angle.h>
35#include <NDEVR/DesignObjectLookup.h>
36namespace NDEVR
37{
42 {
43 public:
48
54 : m_time(time)
55 {}
56
66
76
83 {
84
85 }
86 };
87}
88
89
90
Stores an angle in an optimized internal format with support for efficient trigonometric operations.
Definition Angle.h:83
The equivelent of std::vector but with a bit more control.
Definition Buffer.hpp:58
A core class where all Design Objects including models, materials, and geometries are stored.
void setPositionChannel(uint01 dim, const Buffer< fltp04 > &path)
Sets the position interpolation path for a single spatial dimension using monotone cubic interpolatio...
Buffer< Time > m_time
The ordered sequence of time keyframes corresponding to path control points.
void setAngleChannel(uint01 dim, const Buffer< Angle< fltp08 > > &path)
Sets the rotation interpolation path for a single axis using azimuth-aware monotone cubic interpolati...
Path location_path[3]
Interpolation paths for X, Y, Z position channels, indexed by dimension.
UUID object
The unique identifier of the design object to move along the path.
void updateObject(const DesignObjectLookup *)
Updates the referenced design object's transform based on the current path state.
Path rotation_path[3]
Interpolation paths for rotation channels (one per axis), indexed by dimension.
MovementPath(const Buffer< Time > &time)
Constructs a MovementPath with the given time keyframes.
A monotone cubic Hermite spline path that interpolates values over time.
Definition TimePath.h:47
static Path createMonotoneCubicPathAzimuth(const Buffer< Time > &time, const Buffer< Angle< fltp08 > > &y)
Creates a monotone cubic Hermite spline path for azimuth (angular) values over time.
Definition TimePath.h:208
static Path createMonotoneCubicPathSorted(const Buffer< Time > &time, const Buffer< fltp04 > &y)
Creates a monotone cubic path after sorting the control points by time in descending order.
Definition TimePath.h:252
A universally unique identifier (UUID) is a 128-bit number used to identify information in computer s...
Definition UUID.h:61
The primary namespace for the NDEVR SDK.
uint8_t uint01
-Defines an alias representing a 1 byte, unsigned integer -Can represent exact integer values 0 throu...