1 reporting.trajectory_statistics
reporting.trajectory_statistics
Position coverage and discrete continuity of acquired camera paths.
Inputs are target-centred physical-camera coordinates in one fixed initial root-target, world-Z-up frame. No timestamps are assumed: spatial bends and rotation increments cannot establish physical jerk or human-motion realism.
1.1 Classes
| Name | Description |
|---|---|
| CameraPath | One factual chain, with its root followed by selected acquisitions. |
1.1.1 CameraPath
reporting.trajectory_statistics.CameraPath(
identity,
scene,
centres_m,
rotation_deg,
)One factual chain, with its root followed by selected acquisitions.
Coordinates are metres relative to the target centre. rotation_deg contains canonical physical-camera SO(3) increments, including root to first acquisition. IDs must remain unique across the supplied population.
1.2 Functions
| Name | Description |
|---|---|
| export_camera_path_statistics | Render frozen path summaries; scene-average chains before population means. |
| render_camera_path_detail | Render acquisition-specific and full-chain views of a captured H16 census. |
| render_camera_path_statistics | Render captured reductions without rereading stores or re-estimating them. |
| summarize_camera_path | Reduce a physical path without inventing time or interpolated motion. |
1.2.1 export_camera_path_statistics
reporting.trajectory_statistics.export_camera_path_statistics(
paths,
output,
*,
include_png=True,
)Render frozen path summaries; scene-average chains before population means.
SVG is always emitted; include_png=False omits PNG companions without changing the captured statistics or deleting existing files.
No store is acquired here. Each occupancy histogram is normalized within its chain, then chains within physical scene, then scenes equally. Continuity panels plot scene means of each chain’s median increment; they are descriptive, without confidence bars.
1.2.2 render_camera_path_detail
reporting.trajectory_statistics.render_camera_path_detail(
result,
output,
*,
include_png=True,
)Render acquisition-specific and full-chain views of a captured H16 census.
SVG and display data are always emitted; include_png=False omits PNG companions and leaves existing files untouched.
Requires one complete chain per physical scene. The input contains the named reductions from export_camera_path_statistics; it is never reacquired here. Scene IQR is descriptive spread, not a confidence interval. Angular totals sum shortest sampled endpoint changes, not continuous winding.
1.2.3 render_camera_path_statistics
reporting.trajectory_statistics.render_camera_path_statistics(
result,
output,
*,
include_png=True,
)Render captured reductions without rereading stores or re-estimating them.
The input is the named result from export_camera_path_statistics; its normalized equal-scene occupancy and scene summaries are fixed. SVG is always emitted; include_png=False omits PNG companions and leaves existing files untouched.
1.2.4 summarize_camera_path
reporting.trajectory_statistics.summarize_camera_path(path)Reduce a physical path without inventing time or interpolated motion.
Position azimuth is measured relative to the target-to-root horizontal ray. Positive wrapped increments are CCW when viewed from world +Z. sin(elevation) = z / norm(position) permits equal-solid-angle bins: dOmega = d(azimuth) d(sin(elevation)). The root anchors angles but is excluded from occupancy. Horizontal radii at most 1e-4 m are undefined; exact half-turns have ambiguous direction and remain unavailable.
Adjacent endpoints specify the shorter signed angular difference, not the continuous route, winding count or direction of camera gaze. Missing direction samples never create a new adjacency across the missing step. Bends compare adjacent nondegenerate horizontal translations, using the same 1e-4 m geometric threshold as the existing selector diagnostics.