from ._pathfinder import (
__version__,
Segment,
TrajectoryInfo,
Waypoint,
pathfinder_generate as generate,
pathfinder_deserialize as deserialize,
pathfinder_serialize as serialize,
pathfinder_serialize_csv as serialize_csv,
pf_fit_hermite_pre as FIT_HERMITE_PRE,
pf_fit_hermite_cubic as FIT_HERMITE_CUBIC,
pf_fit_hermite_quintic as FIT_HERMITE_QUINTIC,
SAMPLES_FAST,
SAMPLES_LOW,
SAMPLES_HIGH,
)
from . import followers, modifiers
# compability with Pathfinder-Java
import math
r2d = math.degrees
d2r = math.radians
[docs]def boundHalfDegrees(degrees):
"""Bound an angle (in degrees) to -180 to 180 degrees."""
degrees = math.fmod(degrees, 360.0)
if degrees >= 180.0:
degrees = degrees - 360.0
elif degrees <= -180.0:
degrees = degrees + 360.0
return degrees
[docs]def deserialize_csv(fname):
"""Read a Trajectory from a CSV File"""
import csv
with open(fname, "r") as fp:
csviter = csv.reader(fp)
next(csviter)
return [Segment(*map(float, row)) for row in csviter]