v0.1.0 on PyPI·Apache 2.0 Open Source

3D geometry, 9D physics, and visualization for padel analytics

An open-source Python library for official FIP court coordinates, camera calibration & projection, 9D ball aerodynamics with analytical rebounds, 3D skeletal replays, and event-sourced match scoring.

Read the DocsView on GitHub
PadelVisualizer.export_html()
Open Fullscreen

Developer Experience

Clean Python APIs from simulation to 3D replay

Built on NumPy, Pandas, and PyArrow with typed dataclasses and presets for standard FIP courts, weather conditions, broadcast cameras, and ball wear.

Pure NumPy vectorization.
Run thousands of 9D RK4 ball trajectories in parallel via simulate_batch() with zero heavy ML runtime dependencies.
Projective 2D/3D geometry.
Calibrate broadcast or court-side cameras from 2D landmarks, undo lens distortion, and project 3D trajectories onto frames.
Single-file .parquet contract.
Store court specs, match metadata, 60 FPS 9D ball state, and 17-joint H36M 3D skeletal poses in one portable Apache Parquet file.
from padelkit import BallPhysicsEngine, BallState, EnvironmentConditions
env = EnvironmentConditions.from_atmosphere(temperature_c=24.0, altitude_m=650.0)
engine = BallPhysicsEngine(environment=env)
# Launch a high-spin bandeja with topspin & sidespin
shot = BallState.from_shot(
position=(1.8, -2.2, 2.35),
velocity=(-2.4, 16.5, -1.8),
topspin_rpm=-2100.0,
sidespin_rpm=-450.0,
)
traj = engine.simulate(shot, duration_s=2.4)
for bounce in traj.bounces:
print(f"{bounce.timestamp:.2f}s -> {bounce.surface.value} ({bounce.regime.value})")

Roadmap

Built for analytics, tracking, and synthetic data

Version 0.1.0 establishes the core physics, geometry, camera, scoring, and 3D visualization foundation. Here is what comes next.

padelkit.tracking
Physics-Informed 3D Tracking
Vectorized NumPy particle filtering and Rauch-Tung-Striebel smoothing over BallPhysicsEngine.simulate_batch() and Camera.project_points() for 2D-to-3D trajectory reconstruction.
padelkit[blender]
Headless Blender Synthetic Data
Photorealistic bpy renderer consuming MatchTimeline and Camera presets to export RGB frames, depth maps, segmentation masks, and 2D/3D ground-truth annotations.
padelkit.sim
Batch Match & Rally Simulation
High-throughput rally and match generator combining 9D ball aerodynamics, tactical shot selection, and MatchScoreHistory to synthesize large-scale tabular and trajectory datasets.
padelkit[vision]
Optional Vision & Audio Adapters
Lightweight ONNX and PyTorch inference wrappers for ball tracking, 2D/3D player pose estimation, and acoustic shot-impact detection feeding directly into MatchTimeline.

Start building with PadelKit today

Install the core Python package in seconds, explore the API reference, or inspect the source code on GitHub under the Apache 2.0 license.