Calculate kinematic measures from trajectory data
Source:R/calculate_kinematics.R
calculate_kinematics.RdComputes translational and rotational kinematic measures from movement data. Handles data in any coordinate system by automatically converting to Cartesian for calculations, then converting back to the original system.
Value
An aniframe in the same coordinate system as the input, with added kinematic measures. For 2D data, includes translational kinematics (velocity components, speed, acceleration, path length) and rotational kinematics (heading, angular velocity, angular speed, angular acceleration). For 3D data, includes translational kinematics only (rotational measures for 3D are not yet implemented).
Details
The function preserves the original coordinate system by:
Detecting the input coordinate system from metadata
Converting to Cartesian if necessary
Computing kinematics in Cartesian space
Converting back to the original coordinate system
All kinematic calculations are performed using numerical differentiation
via the differentiate function. Angles are unwrapped to handle
discontinuities at ±π.
Examples
if (FALSE) { # \dontrun{
# 2D Cartesian data
traj_2d <- data.frame(time = 0:10, x = rnorm(11), y = rnorm(11)) |>
as_aniframe()
kinematics_2d <- calculate_kinematics(traj_2d)
# Polar data (automatically converted and converted back)
traj_polar <- aniframe::map_to_polar(traj_2d)
kinematics_polar <- calculate_kinematics(traj_polar)
} # }