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
|