Kanzi Graphics Engine
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
kzc_interpolated_value.h File Reference

Core component for smooth interpolation in code. More...

Functions

kzsError kzcInterpolatedValueCreate (const struct KzcMemoryManager *memoryManager, kzFloat startingValue, kzFloat accelerationCoefficient, kzFloat dragCoefficient, struct KzcInterpolatedValue **out_interpolatedValue)
 Creates an interpolated value integrator. More...
 
kzsError kzcInterpolatedValueDelete (struct KzcInterpolatedValue *interpolatedValue)
 Deletes an interpolated value integrator. More...
 
void kzcInterpolatedValueInitializeBoundMode (struct KzcInterpolatedValue *interpolatedValue, kzFloat accelerationCoefficient, kzFloat dragCoefficient)
 Initializes simulation variables. More...
 
void kzcInterpolatedValueSetMinimumValue (struct KzcInterpolatedValue *interpolatedValue, kzFloat minimumValue)
 Sets minimum value for interpolator. More...
 
kzFloat kzcInterpolatedValueGetMinimumValue (const struct KzcInterpolatedValue *interpolatedValue)
 Gets minimum value of interpolator. More...
 
void kzcInterpolatedValueSetMaximumValue (struct KzcInterpolatedValue *interpolatedValue, kzFloat maximumValue)
 Sets maximum value for interpolator. More...
 
kzFloat kzcInterpolatedValueGetMaximumValue (const struct KzcInterpolatedValue *interpolatedValue)
 Gets maximum value of interpolator. More...
 
void kzcInterpolatedValueSetMaximumTimeStep (struct KzcInterpolatedValue *interpolatedValue, kzFloat maximumStep)
 Sets maximum time step for the interpolator. More...
 
kzFloat kzcInterpolatedValueGetMaximumTimeStep (const struct KzcInterpolatedValue *interpolatedValue)
 Gets maximum time step of the interpolator. More...
 
void kzcInterpolatedValueSetLooping (struct KzcInterpolatedValue *interpolatedValue, kzBool state)
 Sets interpolator to loop between minimum and maximum value. More...
 
kzBool kzcInterpolatedValueIsLooping (const struct KzcInterpolatedValue *interpolatedValue)
 Return interpolator's looping state. More...
 
void kzcInterpolatedValueEnforceBounds (struct KzcInterpolatedValue *interpolatedValue)
 Normalizes interpolator's value to [minimumValue, maximumValue]. More...
 
kzFloat kzcInterpolatedValueGetValue (const struct KzcInterpolatedValue *interpolatedValue)
 Returns current value of the interpolator. More...
 
void kzcInterpolatedValueSetValue (struct KzcInterpolatedValue *interpolatedValue, kzFloat value, kzBool resetInterpolation)
 Sets current value of the interpolator. More...
 
void kzcInterpolatedValueSetSpeed (struct KzcInterpolatedValue *interpolatedValue, kzFloat speed)
 Sets current speed of the interpolated value. More...
 
kzFloat kzcInterpolatedValueGetSpeed (const struct KzcInterpolatedValue *interpolatedValue)
 Returns current speed of the interpolated value. More...
 
void kzcInterpolatedValueModifySpeed (struct KzcInterpolatedValue *interpolatedValue, kzFloat speedDelta)
 Adds 'speedDelta' to current speed of the interpolated value. More...
 
kzsError kzcInterpolatedValueUpdate (struct KzcInterpolatedValue *interpolatedValue, kzUint timeDelta)
 Integrates simulation for 'timeDelta' milliseconds. More...
 
kzBool kzcInterpolatedValueInterpolationEnded (const struct KzcInterpolatedValue *interpolatedValue)
 Returns KZ_TRUE if interpolation has ended for now, i.e. More...
 
kzFloat kzcInterpolatedValueGetTarget (const struct KzcInterpolatedValue *interpolatedValue)
 Returns target value of the interpolator. More...
 
kzFloat kzcInterpolatedValueGetTargetNonNormalized (const struct KzcInterpolatedValue *interpolatedValue)
 Returns current non-normalized target value of the interpolator. More...
 
void kzcInterpolatedValueSetTarget (struct KzcInterpolatedValue *interpolatedValue, kzFloat target)
 Sets target value of the interpolator. More...
 
void kzcInterpolatedValueModifyTarget (struct KzcInterpolatedValue *interpolatedValue, kzFloat targetDelta)
 Adds 'targetDelta' to target value of the interpolator. More...
 

Detailed Description

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-2019 by Rightware. All rights reserved.

Function Documentation

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.

kzsError kzcInterpolatedValueDelete ( struct KzcInterpolatedValue interpolatedValue)

Deletes an interpolated value integrator.

void kzcInterpolatedValueInitializeBoundMode ( struct KzcInterpolatedValue interpolatedValue,
kzFloat  accelerationCoefficient,
kzFloat  dragCoefficient 
)

Initializes simulation variables.

void kzcInterpolatedValueSetMinimumValue ( struct KzcInterpolatedValue interpolatedValue,
kzFloat  minimumValue 
)

Sets minimum value for interpolator.

kzFloat kzcInterpolatedValueGetMinimumValue ( const struct KzcInterpolatedValue interpolatedValue)

Gets minimum value of interpolator.

void kzcInterpolatedValueSetMaximumValue ( struct KzcInterpolatedValue interpolatedValue,
kzFloat  maximumValue 
)

Sets maximum value for interpolator.

kzFloat kzcInterpolatedValueGetMaximumValue ( const struct KzcInterpolatedValue interpolatedValue)

Gets maximum value of interpolator.

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.

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.

void kzcInterpolatedValueSetLooping ( struct KzcInterpolatedValue interpolatedValue,
kzBool  state 
)

Sets interpolator to loop between minimum and maximum value.

kzBool kzcInterpolatedValueIsLooping ( const struct KzcInterpolatedValue interpolatedValue)

Return interpolator's looping state.

void kzcInterpolatedValueEnforceBounds ( struct KzcInterpolatedValue interpolatedValue)

Normalizes interpolator's value to [minimumValue, maximumValue].

Calling this function manually is normally not required.

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.

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.

void kzcInterpolatedValueSetSpeed ( struct KzcInterpolatedValue interpolatedValue,
kzFloat  speed 
)

Sets current speed of the interpolated value.

kzFloat kzcInterpolatedValueGetSpeed ( const struct KzcInterpolatedValue interpolatedValue)

Returns current speed of the interpolated value.

void kzcInterpolatedValueModifySpeed ( struct KzcInterpolatedValue interpolatedValue,
kzFloat  speedDelta 
)

Adds 'speedDelta' to current speed of the interpolated value.

kzsError kzcInterpolatedValueUpdate ( struct KzcInterpolatedValue interpolatedValue,
kzUint  timeDelta 
)

Integrates simulation for 'timeDelta' milliseconds.

kzBool kzcInterpolatedValueInterpolationEnded ( const struct KzcInterpolatedValue interpolatedValue)

Returns KZ_TRUE if interpolation has ended for now, i.e.

target reached and speed close to zero.

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.

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.

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.

void kzcInterpolatedValueModifyTarget ( struct KzcInterpolatedValue interpolatedValue,
kzFloat  targetDelta 
)

Adds 'targetDelta' to target value of the interpolator.