▼V Reference
52 Find a task or a name
53 Modules to require
54 Scenes and sampling
55 Scene states
56 Animation requests
57 Native model details
58 Visuals
59 Geometry
60 Number Lines and Coordinate Decorations
61 Point Markers, Scatter Plots, and Filled Areas
62 Probability and Statistical Diagrams
63 Calculus lessons
64 Colors
65 Slides
66 Slide command-line tools
67 Source Programs and Authored Timelines
68 Interactive Preview and Inspection
69 Preview controls and diagnostics
70 Projects and Final Rendering
71 Project execution and cache details
72 Pict Renderer Protocol
73 3D reference map
74 3D:   Objects, groups, and paths
75 3D:   Cameras and projection
76 3D:   Views inside a Scene
77 3D:   Animating 3D objects
78 3D:   Animating the 3D camera
79 3D:   Cuts, caps, and section measurements
80 3D:   Supplementary surface, section, and annotation bindings
81 3D:   Cuts, sections, and numerical volume
82 3D:   Vectors
83 3D:   Linear maps and rotations
84 3D:   Affine transforms
85 3D:   Bounds, rays, and planes
86 3D:   Spatial maps and homotopies
87 3D:   Materials and lights
88 3D:   Lighting inspection
89 3D:   Shadow descriptors and stable bounds
90 3D:   Finite-light animation
91 3D:   Software finite-light evaluation
92 3D:   Colour space and final output
93 3D:   Relations and geometric annotations
94 3D:   Projected labels
95 3D:   Textured billboards
96 3D:   Spatial curves and vector diagrams
97 3D:   Spatial anchors and label layout
98 3D:   Anchors and projected labels
99 3D:   Parametric surfaces and calculus
100 3D:   Adaptive, trimmed, and implicit surfaces
101 3D:   Constructive solids
102 3D:   Surface constructors and queries
103 3D:   Meshes
104 3D:   Triangle topology
105 3D:   Polygonal faces
106 3D:   Deterministic convex hulls
107 3D:   Polyhedral duals
108 3D:   Schlegel diagrams and polyhedral nets
109 3D:   Conservative mesh correspondence
110 3D:   Topology-safe mesh matching
111 3D:   Checking and repairing mesh orientation
112 3D:   Clipping, sections, and transparency
113 3D:   Prepared spatial ODE trajectories and vector fields
114 3D:   Seeds and streamline sets
115 3D:   Poincare sections and return maps
116 3D:   Equilibria and local linearization
117 3D:   Flow maps and volume change
118 3D:   Drawing and inspecting trajectories
119 3D:   Reading prepared trajectories
120 3D:   Drawing vector fields and particles
121 3D:   Trajectory display
122 3D:   Spatial inspection and exact picking
123 3D:   Retained renderer backends
124 3D:   Compiled geometry and instances
125 3D:   Frame requests and results
126 3D:   Software rendering and statistics
127 3D:   Optional Racket/  Open  GL backend
128 Experimental Derived Visuals
129 Source Package Hygiene
On this page:
ode-trajectory3d?
ode-trajectory3d-position
ode-trajectory3d-time-range
trajectory-segment3d?
trajectory-segment3d-bounds
ode-trajectory3d-segments
ode-trajectory3d-event-hits
ode-trajectory3d-termination
ode-trajectory3d-step-size
ode-trajectory3d-checkpoint-every
ode-trajectory3d-solver
ode-trajectory3d-derivative
ode-trajectory3d-speed
ode-trajectory3d-arc-length-at
ode-trajectory3d-time-at-arc-length
ode-trajectory3d-diagnostics
9.3

119 3D: Reading prepared trajectories🔗ℹ

procedure

(ode-trajectory3d? value) → boolean?

  value : any/c
Recognizes a prepared immutable spatial trajectory.

procedure

(ode-trajectory3d-position trajectory time) → vec3?

  trajectory : ode-trajectory3d?
  time : finite-real?
Returns the position at a supported time. Every prepared lookup reads only stored data.

procedure

(ode-trajectory3d-time-range trajectory)

 → (cons/c finite-real? finite-real?)
  trajectory : ode-trajectory3d?
Returns its supported range.

procedure

(trajectory-segment3d? value) → boolean?

  value : any/c
Recognizes one immutable dense segment retained by a prepared trajectory. Segment records are returned by ode-trajectory3d-segments; clients inspect them but do not construct them directly.

procedure

(trajectory-segment3d-bounds segment) → aabb3?

  segment : trajectory-segment3d?
Returns the conservative bounds of the segment’s cubic Hermite path. The box covers coordinate extrema in the interior as well as its endpoint positions.

procedure

(ode-trajectory3d-segments trajectory) → vector?

  trajectory : ode-trajectory3d?
Returns the immutable, increasing-time vector of dense trajectory-segment3d? values. A segment’s trajectory-segment3d-bounds is an aabb3? covering all coordinate extrema of its cubic Hermite path, not merely its two endpoints.

procedure

(ode-trajectory3d-event-hits trajectory) → vector?

  trajectory : ode-trajectory3d?
Returns an immutable vector of ode-event-hit3d? records, sorted by increasing physical time. Simultaneous hits use event declaration order as their tie-break. Each hit records its event identifier, dense root time and position, event value, physical crossing direction, segment index, iteration count, and root-finding provenance.

procedure

(ode-trajectory3d-termination trajectory) → vector?

  trajectory : ode-trajectory3d?
Returns the immutable, increasing-physical-time vector of selected trajectory-termination-hit3d? records. There is normally zero or one hit for a one-sided trajectory and up to two for a range extending on both sides of the seed.

procedure

(ode-trajectory3d-step-size trajectory)

 → (or/c positive? false/c)
  trajectory : ode-trajectory3d?
Returns a fixed path’s RK4 step, or #f for an adaptive path.
Returns a fixed path’s checkpoint preparation metadata, or #f for an adaptive path. It does not cause later reintegration.

procedure

(ode-trajectory3d-solver trajectory) → any/c

  trajectory : ode-trajectory3d?
Returns the immutable fixed-RK4 or adaptive-RK45 solver setting.

procedure

(ode-trajectory3d-derivative trajectory    
  time) → vec3?
  trajectory : ode-trajectory3d?
  time : finite-real?
Returns the stored dense-output tangent at a supported time.

procedure

(ode-trajectory3d-speed trajectory time) → nonnegative-real?

  trajectory : ode-trajectory3d?
  time : finite-real?
Returns the tangent magnitude.

procedure

(ode-trajectory3d-arc-length-at trajectory    
  time) → nonnegative-real?
  trajectory : ode-trajectory3d?
  time : finite-real?
Returns accumulated arc length from the prepared range start.

procedure

(ode-trajectory3d-time-at-arc-length trajectory    
  arc-length) → finite-real?
  trajectory : ode-trajectory3d?
  arc-length : nonnegative-real?
Inverts the prepared arc-length table deterministically.

procedure

(ode-trajectory3d-diagnostics trajectory) → any/c

  trajectory : ode-trajectory3d?
Returns immutable solver, field-evaluation, step, dense-segment, termination, and arc-length diagnostics for both fixed and adaptive trajectories.

Current limits. Arc length uses deterministic adaptive Simpson integration of each stored Hermite segment’s tangent magnitude. Each segment retains an immutable cumulative table whose intervals are measured by the same integrator; arc-length endpoints remain numerical rather than symbolic. The low-speed policy isolates ordinary interior extrema of the stored Hermite tangent magnitude and bisects the first threshold crossing; it does not yet require a configurable run of consecutive slow observations. ode-event3d detects sign-changing roots and exact/tolerance-zero endpoints, but does not search for an isolated tangency whose sampled event values retain the same sign. AABB exits are split at all dense-coordinate extrema and then bisected; numerical roots remain tolerance-limited, although an accepted face node is preserved exactly. A standalone streamline without a time limit has the documented eight-unit safety horizon. Seed sets create finite immutable points; they do not infer seeding topology from a field. Curve 'parameter spacing is the stored polyline sample index rather than a source-function parameter, surface sets require a retained parametric evaluator/range, and Poisson’s floating geometric candidates are repeatable rather than a mathematical blue-noise certificate. Streamline separation uses display-sample segments and a cell hash, so it is an explicit finite geometric policy rather than a proof about the continuous ODE. Independent sets retain canonical order but this pure layer does not concurrently call arbitrary author field procedures. Poincare extraction detects endpoint/sign-changing crossings in retained dense segments. It does not search inside a same-sign segment for an isolated tangent, and an included tangent is only an explicit endpoint contact. Return maps retain only first/second crossings, not a proof of a global map. Equilibria and local linearization are covered by their own reference chapter.