Core component for smooth interpolation in code. More...
Functions | |
KANZI_API kzsError | kzcInterpolatedValueCreate (const struct KzcMemoryManager *memoryManager, kzFloat startingValue, kzFloat accelerationCoefficient, kzFloat dragCoefficient, struct KzcInterpolatedValue **out_interpolatedValue) |
Creates an interpolated value integrator. More... | |
KANZI_API kzsError | kzcInterpolatedValueDelete (struct KzcInterpolatedValue *interpolatedValue) |
Deletes an interpolated value integrator. More... | |
KANZI_API void | kzcInterpolatedValueInitializeBoundMode (struct KzcInterpolatedValue *interpolatedValue, kzFloat accelerationCoefficient, kzFloat dragCoefficient) |
Initializes simulation variables. More... | |
KANZI_API void | kzcInterpolatedValueSetMinimumValue (struct KzcInterpolatedValue *interpolatedValue, kzFloat minimumValue) |
Sets minimum value for interpolator. More... | |
KANZI_API kzFloat | kzcInterpolatedValueGetMinimumValue (const struct KzcInterpolatedValue *interpolatedValue) |
Gets minimum value of interpolator. More... | |
KANZI_API void | kzcInterpolatedValueSetMaximumValue (struct KzcInterpolatedValue *interpolatedValue, kzFloat maximumValue) |
Sets maximum value for interpolator. More... | |
KANZI_API kzFloat | kzcInterpolatedValueGetMaximumValue (const struct KzcInterpolatedValue *interpolatedValue) |
Gets maximum value of interpolator. More... | |
KANZI_API void | kzcInterpolatedValueSetMaximumTimeStep (struct KzcInterpolatedValue *interpolatedValue, kzFloat maximumStep) |
Sets maximum time step for the interpolator. More... | |
KANZI_API kzFloat | kzcInterpolatedValueGetMaximumTimeStep (const struct KzcInterpolatedValue *interpolatedValue) |
Gets maximum time step of the interpolator. More... | |
KANZI_API void | kzcInterpolatedValueSetLooping (struct KzcInterpolatedValue *interpolatedValue, kzBool state) |
Sets interpolator to loop between minimum and maximum value. More... | |
KANZI_API kzBool | kzcInterpolatedValueIsLooping (const struct KzcInterpolatedValue *interpolatedValue) |
Return interpolator's looping state. More... | |
KANZI_API void | kzcInterpolatedValueEnforceBounds (struct KzcInterpolatedValue *interpolatedValue) |
Normalizes interpolator's value to [minimumValue, maximumValue]. More... | |
KANZI_API kzFloat | kzcInterpolatedValueGetValue (const struct KzcInterpolatedValue *interpolatedValue) |
Returns current value of the interpolator. More... | |
KANZI_API void | kzcInterpolatedValueSetValue (struct KzcInterpolatedValue *interpolatedValue, kzFloat value, kzBool resetInterpolation) |
Sets current value of the interpolator. More... | |
KANZI_API void | kzcInterpolatedValueSetSpeed (struct KzcInterpolatedValue *interpolatedValue, kzFloat speed) |
Sets current speed of the interpolated value. More... | |
KANZI_API kzFloat | kzcInterpolatedValueGetSpeed (const struct KzcInterpolatedValue *interpolatedValue) |
Returns current speed of the interpolated value. More... | |
KANZI_API void | kzcInterpolatedValueModifySpeed (struct KzcInterpolatedValue *interpolatedValue, kzFloat speedDelta) |
Adds 'speedDelta' to current speed of the interpolated value. More... | |
KANZI_API kzsError | kzcInterpolatedValueUpdate (struct KzcInterpolatedValue *interpolatedValue, kzUint timeDelta) |
Integrates simulation for 'timeDelta' milliseconds. More... | |
KANZI_API kzBool | kzcInterpolatedValueInterpolationEnded (const struct KzcInterpolatedValue *interpolatedValue) |
Returns KZ_TRUE if interpolation has ended for now, i.e. More... | |
KANZI_API kzFloat | kzcInterpolatedValueGetTarget (const struct KzcInterpolatedValue *interpolatedValue) |
Returns target value of the interpolator. More... | |
KANZI_API kzFloat | kzcInterpolatedValueGetTargetNonNormalized (const struct KzcInterpolatedValue *interpolatedValue) |
Returns current non-normalized target value of the interpolator. More... | |
KANZI_API void | kzcInterpolatedValueSetTarget (struct KzcInterpolatedValue *interpolatedValue, kzFloat target) |
Sets target value of the interpolator. More... | |
KANZI_API void | kzcInterpolatedValueModifyTarget (struct KzcInterpolatedValue *interpolatedValue, kzFloat targetDelta) |
Adds 'targetDelta' to target value of the interpolator. More... | |
Core component for smooth interpolation in code.
Uses Runge-Kutta methods and suitable differential equations to smoothly interpolate between input data.
Supports multiple interpolation modes such as looping/non-looping.
Copyright 2008-2020 by Rightware. All rights reserved.
KANZI_API kzsError kzcInterpolatedValueCreate | ( | const struct KzcMemoryManager * | memoryManager, |
kzFloat | startingValue, | ||
kzFloat | accelerationCoefficient, | ||
kzFloat | dragCoefficient, | ||
struct KzcInterpolatedValue ** | out_interpolatedValue | ||
) |
Creates an interpolated value integrator.
Larger acceleration coefficient leads to faster interpolation, larger drag coefficient lowers maximum speed.
KANZI_API kzsError kzcInterpolatedValueDelete | ( | struct KzcInterpolatedValue * | interpolatedValue | ) |
Deletes an interpolated value integrator.
KANZI_API void kzcInterpolatedValueInitializeBoundMode | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | accelerationCoefficient, | ||
kzFloat | dragCoefficient | ||
) |
Initializes simulation variables.
KANZI_API void kzcInterpolatedValueSetMinimumValue | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | minimumValue | ||
) |
Sets minimum value for interpolator.
KANZI_API kzFloat kzcInterpolatedValueGetMinimumValue | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Gets minimum value of interpolator.
KANZI_API void kzcInterpolatedValueSetMaximumValue | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | maximumValue | ||
) |
Sets maximum value for interpolator.
KANZI_API kzFloat kzcInterpolatedValueGetMaximumValue | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Gets maximum value of interpolator.
KANZI_API void kzcInterpolatedValueSetMaximumTimeStep | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | maximumStep | ||
) |
Sets maximum time step for the interpolator.
Simulation time is split into time slices of at most this length.
KANZI_API kzFloat kzcInterpolatedValueGetMaximumTimeStep | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Gets maximum time step of the interpolator.
Simulation time is split into time slices of at most this length.
KANZI_API void kzcInterpolatedValueSetLooping | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzBool | state | ||
) |
Sets interpolator to loop between minimum and maximum value.
KANZI_API kzBool kzcInterpolatedValueIsLooping | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Return interpolator's looping state.
KANZI_API void kzcInterpolatedValueEnforceBounds | ( | struct KzcInterpolatedValue * | interpolatedValue | ) |
Normalizes interpolator's value to [minimumValue, maximumValue].
Calling this function manually is normally not required.
KANZI_API kzFloat kzcInterpolatedValueGetValue | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Returns current value of the interpolator.
The value is normalized to the allowed range if a looping interpolator is used.
KANZI_API void kzcInterpolatedValueSetValue | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | value, | ||
kzBool | resetInterpolation | ||
) |
Sets current value of the interpolator.
If resetInterpolation is KZ_TRUE, sets target to the new value and resets speed.
KANZI_API void kzcInterpolatedValueSetSpeed | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | speed | ||
) |
Sets current speed of the interpolated value.
KANZI_API kzFloat kzcInterpolatedValueGetSpeed | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Returns current speed of the interpolated value.
KANZI_API void kzcInterpolatedValueModifySpeed | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | speedDelta | ||
) |
Adds 'speedDelta' to current speed of the interpolated value.
KANZI_API kzsError kzcInterpolatedValueUpdate | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzUint | timeDelta | ||
) |
Integrates simulation for 'timeDelta' milliseconds.
KANZI_API kzBool kzcInterpolatedValueInterpolationEnded | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Returns KZ_TRUE if interpolation has ended for now, i.e.
target reached and speed close to zero.
KANZI_API kzFloat kzcInterpolatedValueGetTarget | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Returns target value of the interpolator.
The value is normalized to the allowed range if a looping interpolator is used.
Function kzcInterpolatedValueGetTargetNonNormalized should be used instead if the target value will be set back with kzcInterpolatedValueSetTarget.
KANZI_API kzFloat kzcInterpolatedValueGetTargetNonNormalized | ( | const struct KzcInterpolatedValue * | interpolatedValue | ) |
Returns current non-normalized target value of the interpolator.
If the interpolator is looping, the target value may be out of bounds to indicate direction and repetition.
This call should be used instead of kzcInterpolatedValueGetTarget if the target value will be set back with kzcInterpolatedValueSetTarget.
KANZI_API void kzcInterpolatedValueSetTarget | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | target | ||
) |
Sets target value of the interpolator.
If the interpolator is looping, the target value may be out bounds to indicate direction and repetition.
KANZI_API void kzcInterpolatedValueModifyTarget | ( | struct KzcInterpolatedValue * | interpolatedValue, |
kzFloat | targetDelta | ||
) |
Adds 'targetDelta' to target value of the interpolator.