InterpolationEngine
Handles interpolation of states and individual values.
Constructor
InterpolationEngine(easing_resolver, path_resolver = None)
Initialize the interpolation engine.
Parameters
-
easing_resolver - EasingResolver instance for determining easing functions
-
path_resolver - PathResolver instance for determining path functions (optional)
Methods
compute_changed_fields
compute_changed_fields(
start_state: State,
end_state: State,
attribute_keystates_fields: set
) -> Tuple[set, Dict[str, Tuple[Any, Any]]]
Pre-compute which fields differ between two states.
Returns
Tuple of (set of changed field names, dict of field_name -> (start_val, end_val))
create_eased_state
create_eased_state(
start_state: State,
end_state: State,
t: float,
segment_easing_overrides: Optional[Dict[str, Callable[[float], float]]],
attribute_keystates_fields: set,
vertex_buffer: Optional[Tuple[List, List[List]]] = None,
segment_interpolation_config: Optional[Dict[str, Callable]] = None,
morphing_config: Optional[Any] = None,
changed_fields: Optional[Tuple[set, Dict[str, Tuple[Any, Any]]]] = None,
linear_angle_interpolation: bool = False
) -> State
Create an interpolated state between two keystates.
Parameters
-
start_state - Starting state
-
end_state - Ending state
-
t - Interpolation parameter (0.0 to 1.0)
-
segment_easing_overrides - Per-segment easing overrides
-
attribute_keystates_fields - Attributes managed by field keystates
-
vertex_buffer - Optional reusable buffer for vertex interpolation
-
segment_interpolation_config - Optional per-field path config dict {field_name: path_func}
-
morphing_config - Optional morphing configuration (Morphing or MorphingConfig)
-
changed_fields - Optional pre-computed (changed_field_names, field_values) tuple
-
linear_angle_interpolation - If True, rotation uses linear interpolation (no angle wrapping)
interpolate_value
interpolate_value(
start_state: State,
end_state: State,
field_name: str,
start_value: Any,
end_value: Any,
eased_t: Union[float, Tuple[float, float]],
vertex_buffer: Optional[Tuple[List, List[List]]] = None,
segment_interpolation_config: Optional[Dict[str, Callable]] = None,
mapper: Optional[Any] = None,
vertex_aligner: Optional[Any] = None,
linear_angle_interpolation: bool = False
) -> Any
Interpolate a single value based on its type and context.