All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
kzc_interpolated_value.h File Reference

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...
 

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

Function Documentation

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.