Skip to content

Releases: GiorgioMedico/InterpolatePy

v3.1.0

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 21 May 13:59

Changes

  • Breaking-ish: Removed deprecated LogQuaternionBSpline class. Use LogQuaternionInterpolation or ModifiedLogQuaternionInterpolation instead.
  • Fix: Quaternion.to_axis_angle now returns the canonical form with angle in [0, π], handling the negative-scalar branch correctly.
  • Examples: Added Frenet-frame spiral examples for LQI (examples/lqi_spiral_frenet_ex.py) and mLQI (examples/mlqi_spiral_frenet_ex.py).
  • Deps: Added examples dependency group with PyQt6 for matplotlib interactive backend.

Full Changelog: v3.0.1...v3.1.0

v3.0.1

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 14 May 11:39
313945e

What's Changed

  • NumPy 1 compatibility, relaxed deps, and uv tooling migration by @GiorgioMedico in #12

Full Changelog: v3.0.0...v3.0.1

InterpolatePy v3.0.0 — C++ Port & Dual-Backend Architecture

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 21 Mar 13:54
a9b8fa1

What's New

InterpolatePy 3.0.0 is a major release that introduces a complete C++ reimplementation of the entire algorithm suite, accessible from Python through pybind11 bindings and
a transparent backend system.

C++ Library (interpolatecpp)

A standalone, header-based C++ library mirroring every Python algorithm:

  • Splines — Cubic splines (natural, clamped, acceleration-constrained), cubic smoothing splines with GCV
  • B-Splines — General, cubic, interpolating, approximating, and smoothing variants
  • Motion Profiles — Double-S (7-segment), trapezoidal, polynomial (cubic/quintic), parabolic linear blend
  • Quaternion Interpolation — SLERP, SQUAD C², logarithmic and modified-log schemes, quaternion splines
  • Path Planning — Linear/circular paths, linear trajectories, Frenet-Serret frame computation
  • C++20 Concepts — Compile-time interface contracts (Interpolatable, DifferentiableInterpolatable, MotionProfile)

Built with CMake, tested with Catch2 (16 test files), and shipped with 16 standalone examples.

Dual-Backend System

  • interpolatepy._backend detects whether the C++ module is available and selects the fastest implementation automatically
  • interpolatepy._adapters bridges C++ and Python APIs with zero user-facing changes
  • Pure-Python fallback is always available — no C++ compiler required to use the library

Protocol-Based Architecture

interpolatepy.protocols defines runtime-checkable structural typing contracts (InterpolatableProtocol, MotionProfileProtocol, QuaternionInterpolationProtocol) enabling
algorithm interchangeability regardless of backend.

Breaking Changes

  • Python 3.10 dropped — minimum is now 3.11
  • requirements.txt removed — all dependencies managed via pyproject.toml groups (test, dev, docs, all)
  • Public API reorganized — imports still work via interpolatepy, but internals restructured around the adapter layer

Documentation

  • New tutorials: Path Planning, Quaternion Interpolation
  • New Architecture guide explaining the dual-backend design
  • Updated API reference, installation, quickstart, and contributing guides

Infrastructure

  • GitHub Actions workflows modernized for pyproject.toml-based installs
  • _adapters subpackage correctly included in package discovery
  • Linter cleanup (removed stale noqa directives)

What's Changed

Full Changelog: v2.0.1...v3.0.0

v2.0.1

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 14 Aug 14:34
a0194fd

What's Changed

Full Changelog: v2.0.0...v2.0.1

v2.0.0

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 06 Aug 11:34
b558ea7

What's Changed

Full Changelog: v1.1.0...v2.0.0

v1.1.0

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 17 May 11:27
e82784d
Merge pull request #1 from GiorgioMedico/3.10+

3.10+

v1.0.3

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 31 Mar 20:16
doc

v1.0.2

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 26 Mar 17:46
v1.0.2

v1.0.1

Choose a tag to compare

@GiorgioMedico GiorgioMedico released this 26 Mar 17:06

First Release