You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* ENH: `Function` vectorized speed-up and refactor (#1049)
* MNT: deduplicate function arithmetic logic.
ENH: modularize function arithmetic and source dispatch.
MNT: refactor function math modules.
MNT: optimize function math speed.
* MNT: enhance parachute trigger evaluation for speed.
* MNT: improve typing stack on Function evaluation.
* MNT: architecture corrections and optimizations.
* TST: attempt at tests re-run.
* MNT: minor fixes and docstring update.
* DOC: Update Changelog for PR #1049
* ENH: Interactive 3D Flight Trajectory and Attitude Animation. (#1066)
* ENH: Interactive 3D Flight Trajectory and Attitude Animation.
* TST: update actions workflow dependencies for headless run.
* MNT: solve plot animation review comments on styling.
* DOC: Update Changelog for PR #1066
* MNT: Remove unused pylint disable statements. (#1067)
* DOC: Update Changelog for PR #1067
* TST: cover PyVista flight animation helpers and fix docstring
Fixes the two CI failures on the develop -> master sync (PR #1068):
- DOC/build-docs: the ``color_by`` parameter of ``animate_trajectory``
used the numpydoc ``{...}`` value-set syntax split across two lines,
which numpydoc rejects ("invalid value set (missing closing brace)").
Because the docs job builds with ``-W`` (warnings as errors) the build
failed. Rewrite the type as a single-line prose description.
- codecov/patch and codecov/project: the new PyVista animation subsystem
in ``_FlightPlots`` was only exercised by a single minimal off-screen
smoke test, leaving the scene builders and the pure geometry/telemetry
helpers uncovered. Add unit tests for the render-independent helpers
(quaternion rotation, polylines, camera paths, option validation, event
markers, telemetry panels, background palette, etc.) and extend the
off-screen integration tests to drive the full set of overlays (charts,
camera tracking, stability markers, playback controls) and the GIF
export path.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VW2VidZmPd93dd8xW8BX2J
* DOC: Update Changelog for PR #1069
* ENH: Add optional `max time` to `stochastic_flight` and create `stochastic_flight` objects with attributes in base flight (#1070)
* Add max_time option to stochastic_flight
* Update: use default attributes in flight object for stochastic flights
* Add tests to check attributes
* Refactor implementation
* MNT: pre-release v1.13.0 cleanup — changelog consolidation + optional deps sync (#1073)
* DOC: consolidate and clean v1.13.0 changelog for release
- Fold the Unreleased section into v1.13.0 and date it 2026-07-19.
- Drop reverted PR #958 entries (parachute abstract-base breaking change)
and its revert #1063 - neither ever reached a release.
- Consolidate the 3D flight animation into a single #1066 (PyVista) entry;
drop the superseded Vedo-based #909.
- Remove duplicate entries (#1066, #1067, #1055 in Added, #1047 in Added)
and the doubled "ENH: ENH:" / "MNT: MNT:" auto-changelog prefixes.
- Drop non-user-facing meta entries (#1062 changelog cleanup, #1069 CI fix)
and the test-only entry (#1051), per the changelog's own scope rules.
- Add the missing #1070 (max_time for StochasticFlight) entry.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* MNT: sync optional animation deps in requirements-optional.txt
The 3D flight animation switched from Vedo (#909) to PyVista (#1066).
pyproject.toml was updated (animation extra = pyvista + imageio-ffmpeg)
but requirements-optional.txt still pinned the now-unused vedo and was
missing the new deps. Drop vedo and add pyvista/imageio-ffmpeg so both
dependency sources agree.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* DOC: Update Changelog for PR #1073
---------
Co-authored-by: Pedro Henrique Marinho Bressan <87212571+phmbressan@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: ZuoRen Chen <180084773+zuorenchen@users.noreply.github.com>
- ENH: ENH: Refactor flight.py latitude/longitude to use inverted_haversine [#1055](https://github.com/RocketPy-Team/RocketPy/pull/1055)
46
-
- ENH: TST: Add unit tests for evaluate_reduced_mass and remove TODO [#1051](https://github.com/RocketPy-Team/RocketPy/pull/1051)
44
+
- ENH: `Function` vectorized speed-up and refactor [#1049](https://github.com/RocketPy-Team/RocketPy/pull/1049)
45
+
- ENH: Interactive 3D Flight Trajectory and Attitude Animation (PyVista) [#1066](https://github.com/RocketPy-Team/RocketPy/pull/1066)
46
+
- ENH: Add optional `max_time` to `StochasticFlight` and carry base-flight attributes into created objects [#1070](https://github.com/RocketPy-Team/RocketPy/pull/1070)
47
47
- ENH: seed sensor measurement noise per instance [#1052](https://github.com/RocketPy-Team/RocketPy/pull/1052)
48
-
- ENH: FIX: pre release hardening [#1047](https://github.com/RocketPy-Team/RocketPy/pull/1047)
49
-
- ENH: DEV: Claude Code ruff hooks (auto-format on edit + pre-push lint guard) [#1046](https://github.com/RocketPy-Team/RocketPy/pull/1046)
50
-
- ENH: CI: create a CI for testing docs updates + solve different docs issues [#1045](https://github.com/RocketPy-Team/RocketPy/pull/1045)
51
-
- ENH: MNT: final fixes before next release [#1044](https://github.com/RocketPy-Team/RocketPy/pull/1044)
48
+
- DEV: Claude Code ruff hooks (auto-format on edit + pre-push lint guard) [#1046](https://github.com/RocketPy-Team/RocketPy/pull/1046)
49
+
- CI: create a CI for testing docs updates + solve different docs issues [#1045](https://github.com/RocketPy-Team/RocketPy/pull/1045)
50
+
- MNT: final fixes before next release [#1044](https://github.com/RocketPy-Team/RocketPy/pull/1044)
52
51
- ENH: Individual Fins: add `Fin`, `TrapezoidalFin`, `EllipticalFin`, and `FreeFormFin` classes for modeling asymmetric or individually-positioned fins [#818](https://github.com/RocketPy-Team/RocketPy/pull/818)
53
52
- ENH: Add AIGFS and HRRR forecast models to the Environment class [#951](https://github.com/RocketPy-Team/RocketPy/pull/951)
54
53
- ENH: Add RingClusterMotor for annular clustered motor modeling [#924](https://github.com/RocketPy-Team/RocketPy/pull/924)
55
54
- ENH: Discrete and Continuous Controllers [#946](https://github.com/RocketPy-Team/RocketPy/pull/946)
56
55
- ENH: Add custom exceptions and unstable rocket warning [#970](https://github.com/RocketPy-Team/RocketPy/pull/970)
- ENH: Pass acceleration (`u_dot`) data to parachute trigger functions [#911](https://github.com/RocketPy-Team/RocketPy/pull/911)
59
-
- ENH: Add 3D flight trajectory and attitude animations in Flight plots layer [#909](https://github.com/RocketPy-Team/RocketPy/pull/909)
60
58
- ENH: Monte Carlo Formatting Options [#947](https://github.com/RocketPy-Team/RocketPy/pull/947)
61
59
- ENH: Adaptive Monte Carlo via Convergence Criteria [#922](https://github.com/RocketPy-Team/RocketPy/pull/922)
62
60
- ENH: Auto-Detection of Pressure Conversion Factor [#966](https://github.com/RocketPy-Team/RocketPy/pull/966)
63
61
- ENH: Introduce pressure unit conversion when using forecast/reanalysis/ensemble data [#955](https://github.com/RocketPy-Team/RocketPy/pull/955)
64
-
- MNT: Refactor parachute implementation with abstract base and hemispherical model split [#958](https://github.com/RocketPy-Team/RocketPy/pull/958)
65
62
- DOC: Add aerodynamic surfaces user guide [#1043](https://github.com/RocketPy-Team/RocketPy/pull/1043)
66
63
- DOC: Add Valkyrie flight example (Bisky Team) [#967](https://github.com/RocketPy-Team/RocketPy/pull/967)
67
64
- DOC: Configure AI instructions and update developer docs [#975](https://github.com/RocketPy-Team/RocketPy/pull/975)
@@ -72,7 +69,7 @@ Attention: The newest changes should be on top -->
72
69
### Changed
73
70
74
71
- REL: bumps up rocketpy version to 1.13.0 [#1048](https://github.com/RocketPy-Team/RocketPy/pull/1048)
75
-
- MNT: **Breaking**: `Parachute` is now an abstract base class and can no longer be instantiated directly; use `HemisphericalParachute` (or `Rocket.add_parachute`, which builds it for you). Loading old serialized files still works [#958](https://github.com/RocketPy-Team/RocketPy/pull/958)
- MNT: Discrete controllers are now called exactly once per time node (previously twice); results may change for stateful controllers and `observed_variables` no longer contains duplicated entries [#949](https://github.com/RocketPy-Team/RocketPy/pull/949)
77
74
- MNT: Multi-dimensional linear `Function` objects now apply their extrapolation rule to points outside the data's convex hull (previously returned NaN) [#969](https://github.com/RocketPy-Team/RocketPy/pull/969)
78
75
- MNT: Informational messages previously shown with `print()` now use Python logging and are silent by default; call `rocketpy.utils.enable_logging()` to see them [#973](https://github.com/RocketPy-Team/RocketPy/pull/973)
Copy file name to clipboardExpand all lines: docs/notebooks/getting_started_colab.ipynb
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -592,12 +592,12 @@
592
592
},
593
593
{
594
594
"cell_type": "markdown",
595
-
"source": "## 3D Flight Animation\n\nRocketPy can render an interactive 3D animation of the rocket's trajectory and attitude using [vedo](https://vedo.embl.es/). This feature requires the optional `animation` extra:\n\n```bash\npip install rocketpy[animation]\n```\n\n> **Note:** The interactive animation window opens in a desktop environment. It will not display inside Google Colab or other headless notebook servers — run it locally for the best experience.\n\nTwo animation modes are available:\n\n| Method | What it shows |\n|---|---|\n| `flight.plots.animate_trajectory()` | Rocket moves through 3D space following the simulated trajectory |\n| `flight.plots.animate_rotate()` | Rocket stays centred; only attitude (rotation) is animated |\n\nBoth methods accept an optional `file_name` argument pointing to a custom `.stl` model. When omitted, RocketPy uses a built-in default rocket shape.",
595
+
"source": "## 3D Flight Animation\n\nRocketPy can render an interactive 3D animation of the rocket's trajectory and attitude using [PyVista](https://pyvista.org/). This feature requires the optional `animation` extra:\n\n```bash\npip install rocketpy[animation]\n```\n\n> **Note:** A local desktop Python or Jupyter environment provides the best interactive experience. Google Colab requires a compatible PyVista Jupyter backend.\n\nTwo animation modes are available:\n\n| Method | What it shows |\n|---|---|\n| `flight.plots.animate_trajectory()` | Simulated and flown paths, scalar coloring, telemetry, velocity and wind, flight events and georeferenced ground imagery |\n| `flight.plots.animate_rotate()` | Centred attitude view with body, velocity and wind vectors, stability markers, an inertial reference sphere and live angular rates |\n\nBoth views provide play/pause, a draggable flight-time control, 0.5x/1x/2x/3x playback speeds, optional kinematic charts, camera presets and deterministic GIF/MP4 export. Day/night colors are selected from local launch time and blend toward near-space navy with altitude. The trajectory defaults to speed coloring and also supports Mach, dynamic pressure, acceleration and altitude. The rotate view can show aerodynamic angles, 3-1-3 Euler angles, body rates, center of mass and center of pressure. Pass `color_scheme` to override the shared palette. The methods accept an optional `file_name` argument pointing to a custom `.stl` model. When omitted, RocketPy uses a built-in default rocket shape.",
596
596
"metadata": {}
597
597
},
598
598
{
599
599
"cell_type": "code",
600
-
"source": "# Install the optional animation dependency (skip if already installed)\n!pip install \"rocketpy[animation]\"\n\n# Animate the full trajectory — rocket moves through 3D space\n# Press Escape or close the window to exit the animation\ntest_flight.plots.animate_trajectory(\n start=0,\n stop=test_flight.t_final,\n time_step=0.05,\n)\n\n# Alternatively, animate only the attitude changes (rocket stays centred)\n# test_flight.plots.animate_rotate(\n# start=0,\n# stop=test_flight.t_final,\n# time_step=0.05,\n# )\n\n# To use your own 3D model, pass its path via file_name:\n# test_flight.plots.animate_trajectory(file_name=\"my_rocket.stl\")",
600
+
"source": "# Install the optional animation dependency (skip if already installed)\n!pip install \"rocketpy[animation]\"\n\n# Animate the full trajectory — rocket moves through 3D space\n# Press Escape or close the window to exit the animation\ntest_flight.plots.animate_trajectory(\n start=0,\n stop=test_flight.t_final,\n time_step=0.05,\n color_by=\"speed\",\n show_kinematic_plots=True,\n camera_mode=\"follow\",\n)\n\n# Alternatively, animate attitude and stability diagnostics\n# test_flight.plots.animate_rotate(\n# start=0,\n# stop=test_flight.t_final,\n# time_step=0.05,\n# show_attitude_plots=True,\n# show_cp_cm=True,\n# )\n\n# Deterministic export:\n# test_flight.plots.animate_trajectory(export_file=\"flight.mp4\", export_fps=30)\n\n# To use your own 3D model, pass its path via file_name:\n# test_flight.plots.animate_trajectory(file_name=\"my_rocket.stl\")",
0 commit comments