Skip to content

Approximation

approximation

approximate_cubic

approximate_cubic(
    trajectory: Trajectory,
    approximation_settings: ApproximationSettings = ApproximationSettings(),
    inplace: bool = False,
) -> Trajectory

Approximate the trajectory using piecewise cubic polynomials based on the provided settings.

Parameters:

  • trajectory (Trajectory) –

    The trajectory to approximate.

  • approximation_settings (ApproximationSettings, default: ApproximationSettings() ) –

    Settings for the approximation.

  • inplace (bool, default: False ) –

    If True, modify the trajectory in place. Defaults to False.

Returns:

  • Trajectory ( Trajectory ) –

    The approximated trajectory.

Source code in trajectopy\processing\approximation.py
def approximate_cubic(
    trajectory: Trajectory,
    approximation_settings: ApproximationSettings = ApproximationSettings(),
    inplace: bool = False,
) -> Trajectory:
    """Approximate the trajectory using piecewise cubic polynomials based on the provided settings.

    Args:
        trajectory (Trajectory): The trajectory to approximate.
        approximation_settings (ApproximationSettings): Settings for the approximation.
        inplace (bool): If True, modify the trajectory in place. Defaults to False.

    Returns:
        Trajectory: The approximated trajectory.
    """
    xyz_approx = _piecewise_cubic(
        index=trajectory.index,
        values=trajectory.xyz,
        min_win_size=approximation_settings.position_interval_size,
        min_obs=approximation_settings.position_min_observations,
    )

    traj_approx = trajectory if inplace else trajectory.copy()
    traj_approx.positions.xyz = xyz_approx[trajectory.sort_switching_index, :]

    if not traj_approx.has_orientation:
        return traj_approx

    quat_approx = _average_rotations_in_window(
        index=trajectory.index,
        quat=trajectory.quat,
        win_size=approximation_settings.rotation_window_size,
    )
    traj_approx.rotations = Rotations.from_quat(quat_approx[trajectory.sort_switching_index, :])

    return traj_approx