sar3d: fixed default scene window X [-2,2], Y [-0.5,2], Z [0,8] m
The grid bounds are now explicit config (sar3d_x/y/z_min/max_m) instead of being derived from the antenna span and the depth gate. The depth mask still zeroes voxels outside [min_depth, max_depth], so the wider Z window just shows the masked wedge. The bound fields are double: the parity tool recomputes the notebook-derived bounds (notebook_grid_bounds) and passes them through the live config, and a float roundtrip shifted the axes by ~1e-7 m, flipping depth-mask knife-edge voxels against the reference npz. Parity on frames 0034-0036 unchanged (1.3e-6, axes bit-match). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -685,12 +685,29 @@ def build_processing_group(owner) -> QGroupBox:
|
||||
"Height of the lower antenna row above the ground (m); scene Y=0 is the ground."
|
||||
)
|
||||
|
||||
owner._sar3d_x_margin_m = QDoubleSpinBox()
|
||||
owner._sar3d_x_margin_m.setDecimals(2)
|
||||
owner._sar3d_x_margin_m.setRange(0.0, 20.0)
|
||||
owner._sar3d_x_margin_m.setSingleStep(0.1)
|
||||
owner._sar3d_x_margin_m.setValue(float(sar3d_defaults.x_margin_m))
|
||||
owner._sar3d_x_margin_m.setToolTip("Grid X margin beyond the antenna span (m).")
|
||||
owner._sar3d_x_min_m = QDoubleSpinBox()
|
||||
owner._sar3d_x_min_m.setDecimals(2)
|
||||
owner._sar3d_x_min_m.setRange(-50.0, 50.0)
|
||||
owner._sar3d_x_min_m.setSingleStep(0.1)
|
||||
owner._sar3d_x_min_m.setValue(float(sar3d_defaults.x_min_m))
|
||||
|
||||
owner._sar3d_x_max_m = QDoubleSpinBox()
|
||||
owner._sar3d_x_max_m.setDecimals(2)
|
||||
owner._sar3d_x_max_m.setRange(-50.0, 50.0)
|
||||
owner._sar3d_x_max_m.setSingleStep(0.1)
|
||||
owner._sar3d_x_max_m.setValue(float(sar3d_defaults.x_max_m))
|
||||
|
||||
owner._sar3d_z_min_m = QDoubleSpinBox()
|
||||
owner._sar3d_z_min_m.setDecimals(2)
|
||||
owner._sar3d_z_min_m.setRange(-50.0, 50.0)
|
||||
owner._sar3d_z_min_m.setSingleStep(0.1)
|
||||
owner._sar3d_z_min_m.setValue(float(sar3d_defaults.z_min_m))
|
||||
|
||||
owner._sar3d_z_max_m = QDoubleSpinBox()
|
||||
owner._sar3d_z_max_m.setDecimals(2)
|
||||
owner._sar3d_z_max_m.setRange(-50.0, 50.0)
|
||||
owner._sar3d_z_max_m.setSingleStep(0.1)
|
||||
owner._sar3d_z_max_m.setValue(float(sar3d_defaults.z_max_m))
|
||||
|
||||
owner._sar3d_y_min_m = QDoubleSpinBox()
|
||||
owner._sar3d_y_min_m.setDecimals(2)
|
||||
@@ -789,9 +806,12 @@ def build_processing_group(owner) -> QGroupBox:
|
||||
owner._sar3d_pitch_override_enabled,
|
||||
("Pitch deg", owner._sar3d_pitch_deg),
|
||||
("Ground depth m", owner._sar3d_ground_depth_m),
|
||||
("X margin m", owner._sar3d_x_margin_m),
|
||||
("X min m", owner._sar3d_x_min_m),
|
||||
("X max m", owner._sar3d_x_max_m),
|
||||
("Y min m", owner._sar3d_y_min_m),
|
||||
("Y max m", owner._sar3d_y_max_m),
|
||||
("Z min m", owner._sar3d_z_min_m),
|
||||
("Z max m", owner._sar3d_z_max_m),
|
||||
("Voxel X m", owner._sar3d_voxel_x_m),
|
||||
("Voxel Y m", owner._sar3d_voxel_y_m),
|
||||
("Voxel Z m", owner._sar3d_voxel_z_m),
|
||||
@@ -895,7 +915,10 @@ def build_processing_group(owner) -> QGroupBox:
|
||||
owner._sar3d_pitch_override_enabled.toggled.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_pitch_deg.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_ground_depth_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_x_margin_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_x_min_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_x_max_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_z_min_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_z_max_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_y_min_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_y_max_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
owner._sar3d_voxel_x_m.valueChanged.connect(owner._on_processing_live_settings_changed)
|
||||
|
||||
Reference in New Issue
Block a user