""" Plot adaptive voxel size vs median_size. """ import numpy as np import matplotlib matplotlib.use("Agg") # non-interactive backend for headless import matplotlib.pyplot as plt def _voxel_size(median_size: float, min_voxel: float = 0.0001, max_voxel: float = 0.5) -> float: """Same logic as compute_adaptive_voxel_size, without print.""" log_size = np.log(np.maximum(median_size, 1e-6)) xp = np.log([1e-6, 5.0, 150.0, 1000.0]) fp = [200.0, 300.0, 600.0, 2000.0] divide_factor = float(np.interp(log_size, xp, fp, left=200.0, right=2000.0)) adaptive = median_size / divide_factor return max(min_voxel, min(max_voxel, adaptive)) def main(): median_sizes = np.linspace(0, 1000, 2000) voxel_sizes = [_voxel_size(m) for m in median_sizes] fig, ax = plt.subplots(figsize=(8, 5)) ax.plot(median_sizes, voxel_sizes, "b-", linewidth=2) ax.set_xlabel("median_size (m)") ax.set_ylabel("voxel size (m)") ax.set_title("Adaptive voxel size vs median bounding box size") ax.grid(True, which="both", alpha=0.3) plt.tight_layout() out_path = "voxel_size_vs_median_size.png" plt.savefig(out_path, dpi=150) print(f"Saved: {out_path}") if __name__ == "__main__": main()