terraingenpy 0.2.0.dev90__tar.gz → 0.2.0.dev111__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- terraingenpy-0.2.0.dev111/.pre-commit-config.yaml +66 -0
- terraingenpy-0.2.0.dev111/CHANGELOG.md +356 -0
- terraingenpy-0.2.0.dev111/CMakeLists.txt +144 -0
- terraingenpy-0.2.0.dev111/CONTRIBUTING.md +47 -0
- terraingenpy-0.2.0.dev111/PKG-INFO +226 -0
- terraingenpy-0.2.0.dev111/README.md +170 -0
- terraingenpy-0.2.0.dev111/app/CMakeLists.txt +22 -0
- terraingenpy-0.2.0.dev111/app/cli.cpp +340 -0
- terraingenpy-0.2.0.dev111/app/cli.h +52 -0
- terraingenpy-0.2.0.dev111/app/main.cpp +12 -0
- terraingenpy-0.2.0.dev111/cmake/TerrainGenSlang.cmake +132 -0
- terraingenpy-0.2.0.dev111/cmake/TerrainGenTesting.cmake +21 -0
- terraingenpy-0.2.0.dev111/docs/_src/citing.md +7 -0
- terraingenpy-0.2.0.dev111/docs/_src/concepts/customization.md +1 -0
- terraingenpy-0.2.0.dev111/docs/_src/getting-started/installation.md +71 -0
- terraingenpy-0.2.0.dev111/docs/_src/getting-started/quickstart.md +161 -0
- terraingenpy-0.2.0.dev111/docs/_src/guides/index.md +12 -0
- terraingenpy-0.2.0.dev111/docs/_src/guides/tools/command-line.md +30 -0
- terraingenpy-0.2.0.dev111/docs/_src/guides/tools/index.md +6 -0
- terraingenpy-0.2.0.dev111/docs/_src/guides/workflows/customize-terraingen.md +332 -0
- terraingenpy-0.2.0.dev111/docs/_src/guides/workflows/index.md +5 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/gallery/craters/centimeter_population.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/gallery/craters/replacement_on_dem.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/gallery/craters/replacement_profiles.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/gallery/planets/itokawa.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/_quickstart/add-albedo.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/_quickstart/add-boulders.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/_quickstart/add-craters.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/_quickstart/add-noise.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/_quickstart/run-a-config.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/add-noise-to-a-synthetic-albedo.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/add-reflectance-zones-around-a-new-crater.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/brighten-a-lander-blast-zone.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/brighten-steep-slopes.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/brighten-the-albedo-with-rocks.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/evaluate-a-configured-albedo.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/fade-crater-rays-with-age.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/mix-hapke-photometry-from-materials.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/scatter-dark-and-bright-splotches.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/albedo/upscale-an-albedo-map.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/bodies/add-terrain-over-a-whole-body.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/bodies/upsample-a-shape-model.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/break-boulders-as-they-wear.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/choose-boulder-sizes.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/design-a-boulder-style.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/draw-boulders-as-relief-or-models.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/gather-boulders-in-patches-and-clusters.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/generate-a-boulder-shape.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/list-boulders-from-a-config.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/list-boulders-of-a-layer.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/place-boulders-by-hand.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/pose-boulders.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/split-a-boulder-shape-into-pieces.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/throw-blocks-around-craters.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/weather-boulders-with-fillets-and-ventifacts.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/boulders/write-boulder-models.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/add-craters-to-a-terrain.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/choose-a-crater-profile.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/degrade-craters-with-age.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/list-craters-from-a-config.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/list-craters-of-a-layer.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/place-craters-by-hand.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/raise-central-peaks.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/replace-a-blurred-crater.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/restamp-craters-from-a-coarser-run.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/roughen-and-stretch-crater-rims.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/skip-craters-a-dem-resolves.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/space-craters-apart.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/terrace-crater-walls.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/throw-secondary-craters-in-rays.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/use-published-crater-models.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/craters/vary-crater-density-with-a-map.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/stack-noise-fractals.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/use-rock-meshes-for-boulders.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-a-crater-age-model.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-a-crater-profile.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-a-degradation-model.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-a-layer.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-a-size-distribution.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-a-source.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-a-surface-field.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-an-albedo-layer.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-an-albedo-source.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/images/snippets/customization/write-an-upsampler.jpg +0 -0
- terraingenpy-0.2.0.dev111/docs/_src/index.md +47 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/blast_zones.py +46 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/crater_rays.py +61 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/oblique_impacts.py +50 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/reflectance_zones.py +50 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/rocks.py +49 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/slopes.py +41 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/splotches.py +38 -0
- terraingenpy-0.2.0.dev111/docs/gallery/albedo/synthetic_base.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/assets.py +117 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/clustering.py +43 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/crater_ejecta_aging.py +71 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/crater_ejecta_coverage.py +63 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/crater_ejecta_decay.py +66 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/crater_ejecta_floor.py +65 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/crater_ejecta_profiles.py +59 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/crater_ejecta_reach.py +64 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/crater_ejecta_regolith.py +52 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/density_map.py +73 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/fillets.py +79 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_axes.py +32 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_fractures.py +37 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_fragments.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_noise.py +38 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_rounding.py +30 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_settle.py +63 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_solids.py +38 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_styles.py +31 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_variety.py +28 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/models_weathering.py +44 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/patches.py +38 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/pose_burial.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/pose_burial_by_wear.py +52 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/pose_height_ratio.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/size_distributions.py +69 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/slope_map.py +70 -0
- terraingenpy-0.2.0.dev111/docs/gallery/boulders/slopes.py +71 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/ages.py +75 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/aristarchus.py +80 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/blend_shapes.py +60 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/catalog_completeness.py +73 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/centimeter_population.py +99 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/complex_craters.py +56 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/complex_profiles.py +78 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/copernicus.py +80 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/datum.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/datum_profiles.py +61 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/default_field.py +28 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/degradation_by_age.py +44 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/degradation_by_diffusion.py +54 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/degradation_by_freshness.py +52 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/density_map.py +77 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/density_map_areal_fraction.py +87 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/density_map_count.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/density_map_scale.py +75 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/depth_ratio.py +72 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/elongation.py +52 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/elongation_and_roughness.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/freshness_vs_diffusion.py +46 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/freshness_vs_diffusion_maps.py +65 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/interior_replacement.py +45 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/irregularity.py +48 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/irregularity_harmonics.py +80 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/irregularity_models.py +81 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/irregularity_spectral_slope.py +76 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/manual_depth.py +64 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/max_craters.py +50 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks.py +80 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks_elongation.py +85 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks_massifs.py +85 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks_roughness.py +86 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks_seeds.py +81 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks_sharpness.py +85 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks_size.py +86 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/peaks_spread.py +86 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/populations.py +105 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/profiles.py +73 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/radial_marks.py +54 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/replacement_on_dem.py +75 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/replacement_profiles.py +59 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/resolution_fade.py +43 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/rim_models.py +58 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/rim_smoothing.py +63 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/secondaries.py +83 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/secondary_shapes.py +44 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/slope_floor_offset.py +62 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/slope_hillside.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/slope_response.py +61 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/slope_upslope_rim.py +62 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/slope_wear.py +72 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/source_resolved.py +63 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/spacing_both.py +45 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/spacing_ratio.py +45 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/spacing_separation.py +39 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces.py +81 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_arcs.py +85 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_bench_slope.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_benches.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_blocks.py +85 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_freshness.py +83 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_gaps.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_onset.py +91 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_rim_variation.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_scarps.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/terraces_seeds.py +83 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/texture_ejecta.py +48 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/texture_gullies.py +47 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/texture_mantling.py +50 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/texture_noise.py +47 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/texture_rim_noise.py +47 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/theophilus.py +89 -0
- terraingenpy-0.2.0.dev111/docs/gallery/craters/tycho.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/dem/craters_added.py +83 -0
- terraingenpy-0.2.0.dev111/docs/gallery/dem/globe.py +70 -0
- terraingenpy-0.2.0.dev111/docs/gallery/dem/noise_added.py +114 -0
- terraingenpy-0.2.0.dev111/docs/gallery/dem/upsampling.py +97 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/chronology.py +52 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/combining.py +70 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/crater_densities.py +75 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/literature_boulders.py +84 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/literature_craters.py +99 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/piecewise.py +57 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/power_laws.py +68 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/sampling.py +74 -0
- terraingenpy-0.2.0.dev111/docs/gallery/distributions/value_distributions.py +49 -0
- terraingenpy-0.2.0.dev111/docs/gallery/gallery.py +406 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/bedforms_ripples.py +34 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/bedforms_tars.py +33 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/dune_shapes.py +35 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/dunes_barchan_winds.py +36 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/dunes_crest_lines.py +39 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/dunes_grainflows.py +59 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/dunes_ripples.py +89 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/exposure.py +74 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/pavement.py +33 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/sand_fill.py +45 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/sand_shadows.py +53 -0
- terraingenpy-0.2.0.dev111/docs/gallery/geology/strata.py +40 -0
- terraingenpy-0.2.0.dev111/docs/gallery/layers/masked.py +47 -0
- terraingenpy-0.2.0.dev111/docs/gallery/layers/masked_craters_boulders.py +91 -0
- terraingenpy-0.2.0.dev111/docs/gallery/layers/masked_polygon.py +54 -0
- terraingenpy-0.2.0.dev111/docs/gallery/layers/masked_polygon_craters_boulders.py +87 -0
- terraingenpy-0.2.0.dev111/docs/gallery/layers/scale_and_clamp.py +56 -0
- terraingenpy-0.2.0.dev111/docs/gallery/outputs/materials.py +67 -0
- terraingenpy-0.2.0.dev111/docs/gallery/planets/ellipsoid_craters.py +123 -0
- terraingenpy-0.2.0.dev111/docs/gallery/planets/ellipsoid_projection.py +87 -0
- terraingenpy-0.2.0.dev111/docs/gallery/planets/itokawa.py +129 -0
- terraingenpy-0.2.0.dev111/docs/gallery/planets/mars_scene.py +143 -0
- terraingenpy-0.2.0.dev111/docs/gallery/planets/moon_scene.py +107 -0
- terraingenpy-0.2.0.dev111/docs/gallery/queries/rover_traverse.py +78 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_blending.py +40 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_gain.py +30 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_lacunarity.py +30 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_octaves.py +30 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_perlin.py +42 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_simplex.py +42 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_value.py +42 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_warp.py +38 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/noise_worley.py +43 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/roughness_lunar.py +82 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/spectral_continuation.py +78 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/upsampling.py +66 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/upsampling_diamond_square.py +41 -0
- terraingenpy-0.2.0.dev111/docs/gallery/relief/upsampling_synthetic.py +52 -0
- terraingenpy-0.2.0.dev111/docs/gallery/sources/chain.py +90 -0
- terraingenpy-0.2.0.dev111/docs/overrides/css/extra.css +521 -0
- terraingenpy-0.2.0.dev111/docs/overrides/main.html +8 -0
- terraingenpy-0.2.0.dev111/docs/scripts/cli_help.py +48 -0
- terraingenpy-0.2.0.dev111/docs/scripts/cmake_options.py +49 -0
- terraingenpy-0.2.0.dev111/docs/scripts/gallery_page.py +194 -0
- terraingenpy-0.2.0.dev111/docs/scripts/generate_schema.py +381 -0
- terraingenpy-0.2.0.dev111/docs/scripts/guides.py +264 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-albedo.cpp +28 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-albedo.py +32 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-boulders.cpp +29 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-boulders.py +29 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-craters.cpp +24 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-craters.py +28 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-noise.cpp +27 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/add-noise.py +28 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/config.json +22 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/run-a-config.py +37 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/write-outputs.cpp +35 -0
- terraingenpy-0.2.0.dev111/docs/snippets/_quickstart/write-outputs.py +26 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/add-noise-to-a-synthetic-albedo.cpp +43 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/add-noise-to-a-synthetic-albedo.py +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/add-reflectance-zones-around-a-new-crater.cpp +41 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/add-reflectance-zones-around-a-new-crater.py +41 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/brighten-a-lander-blast-zone.cpp +40 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/brighten-a-lander-blast-zone.py +38 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/brighten-steep-slopes.cpp +44 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/brighten-steep-slopes.py +40 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/brighten-the-albedo-with-rocks.cpp +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/brighten-the-albedo-with-rocks.py +44 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/evaluate-a-configured-albedo.cpp +33 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/evaluate-a-configured-albedo.py +42 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/evaluate-a-synthetic-albedo.cpp +35 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/evaluate-a-synthetic-albedo.py +16 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/fade-crater-rays-with-age.cpp +39 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/fade-crater-rays-with-age.py +44 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/mix-hapke-photometry-from-materials.cpp +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/mix-hapke-photometry-from-materials.py +46 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/scatter-dark-and-bright-splotches.cpp +41 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/scatter-dark-and-bright-splotches.py +35 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/upscale-an-albedo-map.cpp +46 -0
- terraingenpy-0.2.0.dev111/docs/snippets/albedo/upscale-an-albedo-map.py +57 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/add-terrain-over-a-whole-body.cpp +56 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/add-terrain-over-a-whole-body.py +64 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/configure-a-shape-model-body.cpp +58 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/configure-a-shape-model-body.py +59 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/make-a-body-from-a-radius-function.cpp +34 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/make-a-body-from-a-radius-function.py +27 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/make-a-body-from-a-shape-model.cpp +39 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/make-a-body-from-a-shape-model.py +33 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/upsample-a-shape-model.cpp +47 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/upsample-a-shape-model.py +69 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/write-the-whole-body-as-a-mesh.cpp +42 -0
- terraingenpy-0.2.0.dev111/docs/snippets/bodies/write-the-whole-body-as-a-mesh.py +37 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/break-boulders-as-they-wear.cpp +42 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/break-boulders-as-they-wear.py +52 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/choose-boulder-sizes.cpp +46 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/choose-boulder-sizes.py +49 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/design-a-boulder-style.cpp +43 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/design-a-boulder-style.py +39 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/draw-boulders-as-relief-or-models.cpp +44 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/draw-boulders-as-relief-or-models.py +66 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/gather-boulders-in-patches-and-clusters.cpp +46 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/gather-boulders-in-patches-and-clusters.py +63 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/generate-a-boulder-shape.cpp +30 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/generate-a-boulder-shape.py +37 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/list-boulders-from-a-config.cpp +38 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/list-boulders-from-a-config.py +49 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/list-boulders-of-a-layer.cpp +31 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/list-boulders-of-a-layer.py +37 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/place-boulders-by-hand.cpp +45 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/place-boulders-by-hand.py +47 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/pose-boulders.cpp +41 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/pose-boulders.py +64 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/split-a-boulder-shape-into-pieces.cpp +40 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/split-a-boulder-shape-into-pieces.py +53 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/throw-blocks-around-craters.cpp +34 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/throw-blocks-around-craters.py +52 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/weather-boulders-with-fillets-and-ventifacts.cpp +47 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/weather-boulders-with-fillets-and-ventifacts.py +61 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/write-boulder-models.cpp +40 -0
- terraingenpy-0.2.0.dev111/docs/snippets/boulders/write-boulder-models.py +57 -0
- terraingenpy-0.2.0.dev111/docs/snippets/configuration/build-a-generator-from-a-config.cpp +30 -0
- terraingenpy-0.2.0.dev111/docs/snippets/configuration/build-a-generator-from-a-config.py +19 -0
- terraingenpy-0.2.0.dev111/docs/snippets/conftest.py +18 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/add-craters-to-a-terrain.cpp +28 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/add-craters-to-a-terrain.py +29 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/choose-a-crater-profile.cpp +46 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/choose-a-crater-profile.py +59 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/degrade-craters-with-age.cpp +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/degrade-craters-with-age.py +53 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/list-craters-from-a-config.cpp +36 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/list-craters-from-a-config.py +55 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/list-craters-of-a-layer.cpp +31 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/list-craters-of-a-layer.py +34 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/place-craters-by-hand.cpp +34 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/place-craters-by-hand.py +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/raise-central-peaks.cpp +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/raise-central-peaks.py +55 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/replace-a-blurred-crater.cpp +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/replace-a-blurred-crater.py +68 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/restamp-craters-from-a-coarser-run.cpp +59 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/restamp-craters-from-a-coarser-run.py +83 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/roughen-and-stretch-crater-rims.cpp +51 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/roughen-and-stretch-crater-rims.py +56 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/skip-craters-a-dem-resolves.cpp +37 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/skip-craters-a-dem-resolves.py +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/space-craters-apart.cpp +46 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/space-craters-apart.py +60 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/terrace-crater-walls.cpp +45 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/terrace-crater-walls.py +57 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/throw-secondary-craters-in-rays.cpp +39 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/throw-secondary-craters-in-rays.py +47 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/use-published-crater-models.cpp +38 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/use-published-crater-models.py +48 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/vary-crater-density-with-a-map.cpp +47 -0
- terraingenpy-0.2.0.dev111/docs/snippets/craters/vary-crater-density-with-a-map.py +51 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/stack-noise-fractals.cpp +34 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/stack-noise-fractals.py +32 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/use-rock-meshes-for-boulders.cpp +38 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/use-rock-meshes-for-boulders.py +42 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-crater-age-model.cpp +52 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-crater-age-model.py +58 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-crater-profile.cpp +53 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-crater-profile.py +66 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-degradation-model.cpp +43 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-degradation-model.py +64 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-layer.cpp +39 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-layer.py +36 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-size-distribution.cpp +45 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-size-distribution.py +45 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-source.cpp +50 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-source.py +39 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-surface-field.cpp +53 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-a-surface-field.py +56 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-an-albedo-layer.cpp +51 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-an-albedo-layer.py +47 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-an-albedo-source.cpp +51 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-an-albedo-source.py +51 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-an-upsampler.cpp +53 -0
- terraingenpy-0.2.0.dev111/docs/snippets/customization/write-an-upsampler.py +53 -0
- terraingenpy-0.2.0.dev111/docs/snippets/snippet_test.h +32 -0
- terraingenpy-0.2.0.dev111/include/terraingen/albedo/albedo.h +133 -0
- terraingenpy-0.2.0.dev111/include/terraingen/albedo/maturity.h +21 -0
- terraingenpy-0.2.0.dev111/include/terraingen/albedo/raster_albedo.h +109 -0
- terraingenpy-0.2.0.dev111/include/terraingen/albedo/rock_albedo.h +75 -0
- terraingenpy-0.2.0.dev111/include/terraingen/albedo/splotches.h +185 -0
- terraingenpy-0.2.0.dev111/include/terraingen/albedo/synthetic.h +89 -0
- terraingenpy-0.2.0.dev111/include/terraingen/config/build.h +53 -0
- terraingenpy-0.2.0.dev111/include/terraingen/config/config.h +65 -0
- terraingenpy-0.2.0.dev111/include/terraingen/config/generate.h +109 -0
- terraingenpy-0.2.0.dev111/include/terraingen/config/json.h +72 -0
- terraingenpy-0.2.0.dev111/include/terraingen/config/validate.h +39 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/golombek_rapp.h +41 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/log_polynomial.h +44 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/piecewise_power_law.h +50 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/piecewise_uniform.h +58 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/production_surface.h +73 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/size_frequency.h +126 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/spliced.h +54 -0
- terraingenpy-0.2.0.dev111/include/terraingen/distribution/tabulated.h +51 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/anchored_plane.h +30 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/bedforms.h +124 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/boulders/boulder.h +363 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/boulders/boulder_fragments.h +38 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/boulders/boulder_layer.h +399 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/boulders/boulder_options.h +512 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/boulders/boulder_shape.h +123 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/boulders/ejecta_index.h +55 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/ages/steady_state.h +73 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/crater.h +247 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/crater_layer.h +212 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/crater_placer.h +44 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/degradation/diffusion.h +167 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/degradation/diffusivities.h +55 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/generation/population.h +161 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/profiles/fassett_thomson.h +44 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/secondaries.h +100 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/secondary_model.h +238 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/shaping/apply.h +90 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/shaping/apply_options.h +365 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/shaping/datum.h +86 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/shaping/irregularity.h +190 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/shaping/prepared.h +58 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/craters/shaping/slope.h +75 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/density_map.h +136 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/dunes.h +267 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/evaluation_cache.h +79 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/exposure.h +112 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/kernels/craters.h +1323 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/kernels/noise_layer.h +54 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/layer.h +103 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/masked.h +150 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/noise_layer.h +74 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/pavement.h +134 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/roughness.h +90 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/roughness_estimate.h +51 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/sand_fill.h +74 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/source_resolved.h +42 -0
- terraingenpy-0.2.0.dev111/include/terraingen/layers/strata.h +106 -0
- terraingenpy-0.2.0.dev111/include/terraingen/mesh/io/icq.h +79 -0
- terraingenpy-0.2.0.dev111/include/terraingen/mesh/io/mesh_io.h +73 -0
- terraingenpy-0.2.0.dev111/include/terraingen/mesh/polyhedra.h +32 -0
- terraingenpy-0.2.0.dev111/include/terraingen/mesh/shape_model.h +21 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/fractal.h +319 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/fractals.h +272 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/lattice.h +133 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/perlin.h +145 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/simplex.h +122 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/surface_noise.h +27 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/validate.h +28 -0
- terraingenpy-0.2.0.dev111/include/terraingen/noise/worley.h +122 -0
- terraingenpy-0.2.0.dev111/include/terraingen/pipeline/feature_lists.h +66 -0
- terraingenpy-0.2.0.dev111/include/terraingen/pipeline/generator.h +204 -0
- terraingenpy-0.2.0.dev111/include/terraingen/pipeline/materials.h +60 -0
- terraingenpy-0.2.0.dev111/include/terraingen/pipeline/report.h +93 -0
- terraingenpy-0.2.0.dev111/include/terraingen/random/value_distribution.h +95 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/cell_loops.h +168 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/geotiff/geotiff.h +212 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/grid.h +96 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/raster.h +210 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/raster_stats.h +55 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/resample.h +121 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/spectrum.h +54 -0
- terraingenpy-0.2.0.dev111/include/terraingen/raster/variogram.h +77 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/diamond_square.h +185 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/flat_source.h +60 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/geotiff_source.h +126 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/raster_source.h +208 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/shape_model_source.h +96 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/source.h +115 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/source_chain.h +152 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/synthetic_source.h +113 -0
- terraingenpy-0.2.0.dev111/include/terraingen/sources/upsampling.h +340 -0
- terraingenpy-0.2.0.dev111/include/terraingen/terraingen.h +154 -0
- terraingenpy-0.2.0.dev111/include/terraingen/util/bits.h +46 -0
- terraingenpy-0.2.0.dev111/include/terraingen/util/cells.h +217 -0
- terraingenpy-0.2.0.dev111/include/terraingen/util/lru_cache.h +127 -0
- terraingenpy-0.2.0.dev111/include/terraingen/util/portable.h +52 -0
- terraingenpy-0.2.0.dev111/include/terraingen/util/span.h +130 -0
- terraingenpy-0.2.0.dev111/include/terraingen/util/surface.h +238 -0
- terraingenpy-0.2.0.dev111/mkdocs.yml +245 -0
- terraingenpy-0.2.0.dev111/pyproject.toml +99 -0
- terraingenpy-0.2.0.dev111/python/CMakeLists.txt +66 -0
- terraingenpy-0.2.0.dev111/python/src/albedo.cpp +457 -0
- terraingenpy-0.2.0.dev111/python/src/boulders.cpp +578 -0
- terraingenpy-0.2.0.dev111/python/src/craters.cpp +682 -0
- terraingenpy-0.2.0.dev111/python/src/layers.cpp +516 -0
- terraingenpy-0.2.0.dev111/python/src/materials.cpp +106 -0
- terraingenpy-0.2.0.dev111/python/src/noise.cpp +390 -0
- terraingenpy-0.2.0.dev111/python/src/options.h +281 -0
- terraingenpy-0.2.0.dev111/python/src/pipeline.cpp +613 -0
- terraingenpy-0.2.0.dev111/python/src/raster.cpp +289 -0
- terraingenpy-0.2.0.dev111/python/src/sources.cpp +586 -0
- terraingenpy-0.2.0.dev111/python/src/tables.h +83 -0
- terraingenpy-0.2.0.dev111/python/src/trampolines.h +87 -0
- terraingenpy-0.2.0.dev111/src/CMakeLists.txt +124 -0
- terraingenpy-0.2.0.dev111/src/albedo/albedo.cpp +159 -0
- terraingenpy-0.2.0.dev111/src/albedo/bands.cpp +80 -0
- terraingenpy-0.2.0.dev111/src/albedo/blast_zones.cpp +113 -0
- terraingenpy-0.2.0.dev111/src/albedo/crater_albedo.cpp +564 -0
- terraingenpy-0.2.0.dev111/src/albedo/crater_albedo_options.cpp +181 -0
- terraingenpy-0.2.0.dev111/src/albedo/maturity.cpp +22 -0
- terraingenpy-0.2.0.dev111/src/albedo/raster_albedo.cpp +157 -0
- terraingenpy-0.2.0.dev111/src/albedo/rock_albedo.cpp +113 -0
- terraingenpy-0.2.0.dev111/src/albedo/slope_albedo.cpp +157 -0
- terraingenpy-0.2.0.dev111/src/albedo/splotches.cpp +446 -0
- terraingenpy-0.2.0.dev111/src/albedo/synthetic.cpp +71 -0
- terraingenpy-0.2.0.dev111/src/albedo/zone_shadows.cpp +146 -0
- terraingenpy-0.2.0.dev111/src/config/build.cpp +1069 -0
- terraingenpy-0.2.0.dev111/src/config/build_steps.h +236 -0
- terraingenpy-0.2.0.dev111/src/config/config.cpp +119 -0
- terraingenpy-0.2.0.dev111/src/config/fields/albedo.h +561 -0
- terraingenpy-0.2.0.dev111/src/config/fields/boulders.h +602 -0
- terraingenpy-0.2.0.dev111/src/config/fields/common.h +353 -0
- terraingenpy-0.2.0.dev111/src/config/fields/crater_models.h +295 -0
- terraingenpy-0.2.0.dev111/src/config/fields/craters.h +593 -0
- terraingenpy-0.2.0.dev111/src/config/fields/enums.h +420 -0
- terraingenpy-0.2.0.dev111/src/config/fields/fields.h +47 -0
- terraingenpy-0.2.0.dev111/src/config/fields/json_io.h +395 -0
- terraingenpy-0.2.0.dev111/src/config/fields/layers.h +643 -0
- terraingenpy-0.2.0.dev111/src/config/fields/maps.h +68 -0
- terraingenpy-0.2.0.dev111/src/config/fields/materials.h +60 -0
- terraingenpy-0.2.0.dev111/src/config/fields/outputs.h +207 -0
- terraingenpy-0.2.0.dev111/src/config/fields/ranges.h +149 -0
- terraingenpy-0.2.0.dev111/src/config/fields/sources.h +226 -0
- terraingenpy-0.2.0.dev111/src/config/generate.cpp +580 -0
- terraingenpy-0.2.0.dev111/src/config/json.cpp +265 -0
- terraingenpy-0.2.0.dev111/src/config/ranges.cpp +146 -0
- terraingenpy-0.2.0.dev111/src/config/schema.cpp +290 -0
- terraingenpy-0.2.0.dev111/src/config/spec.h +877 -0
- terraingenpy-0.2.0.dev111/src/config/validate.cpp +914 -0
- terraingenpy-0.2.0.dev111/src/distribution/composition.cpp +64 -0
- terraingenpy-0.2.0.dev111/src/distribution/golombek_rapp.cpp +44 -0
- terraingenpy-0.2.0.dev111/src/distribution/log_polynomial.cpp +63 -0
- terraingenpy-0.2.0.dev111/src/distribution/minimum.cpp +46 -0
- terraingenpy-0.2.0.dev111/src/distribution/piecewise_power_law.cpp +62 -0
- terraingenpy-0.2.0.dev111/src/distribution/piecewise_uniform.cpp +107 -0
- terraingenpy-0.2.0.dev111/src/distribution/power_law.cpp +36 -0
- terraingenpy-0.2.0.dev111/src/distribution/size_frequency.cpp +140 -0
- terraingenpy-0.2.0.dev111/src/distribution/spliced.cpp +69 -0
- terraingenpy-0.2.0.dev111/src/distribution/summed.cpp +50 -0
- terraingenpy-0.2.0.dev111/src/distribution/tabulated.cpp +82 -0
- terraingenpy-0.2.0.dev111/src/gpu/backend.cpp +185 -0
- terraingenpy-0.2.0.dev111/src/gpu/cuda.cpp +316 -0
- terraingenpy-0.2.0.dev111/src/gpu/cuda.h +47 -0
- terraingenpy-0.2.0.dev111/src/gpu/kernel.cpp +155 -0
- terraingenpy-0.2.0.dev111/src/gpu/metal.cpp +181 -0
- terraingenpy-0.2.0.dev111/src/gpu/metal.h +46 -0
- terraingenpy-0.2.0.dev111/src/gpu/vulkan.cpp +555 -0
- terraingenpy-0.2.0.dev111/src/gpu/vulkan.h +67 -0
- terraingenpy-0.2.0.dev111/src/layers/CMakeLists.txt +87 -0
- terraingenpy-0.2.0.dev111/src/layers/bedforms.cpp +186 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_abundance.cpp +182 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_clusters.cpp +60 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_layer.cpp +382 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_layer_abundance.cpp +368 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_models.cpp +307 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_options.cpp +363 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_relief.cpp +461 -0
- terraingenpy-0.2.0.dev111/src/layers/boulders/boulder_shape.cpp +497 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/ages/age_model.cpp +51 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/ages/freshness_ages.cpp +41 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/ages/steady_state.cpp +71 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/crater.cpp +132 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/crater_layer.cpp +341 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/crater_placer.cpp +23 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/degradation/degradation_model.cpp +50 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/degradation/diffusion.cpp +320 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/generation/cell_cache.cpp +82 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/generation/cell_cache.h +70 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/generation/population.cpp +439 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/generation/spacing.cpp +132 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/profiles/complex.cpp +79 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/secondaries.cpp +416 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/secondary_model.cpp +260 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/apply.cpp +411 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/apply_options.cpp +208 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/attributes.cpp +32 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/crater_kernel.cpp +611 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/datum.cpp +98 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/datum_fit.cpp +756 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/datum_fit.h +45 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/irregularity.cpp +388 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/morphometry.cpp +71 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/prepared.cpp +88 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/resolved_state.cpp +152 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/resolved_state.h +43 -0
- terraingenpy-0.2.0.dev111/src/layers/craters/shaping/slope.cpp +61 -0
- terraingenpy-0.2.0.dev111/src/layers/density_map.cpp +116 -0
- terraingenpy-0.2.0.dev111/src/layers/dunes.cpp +658 -0
- terraingenpy-0.2.0.dev111/src/layers/exposure.cpp +126 -0
- terraingenpy-0.2.0.dev111/src/layers/field.cpp +122 -0
- terraingenpy-0.2.0.dev111/src/layers/kernel.h +37 -0
- terraingenpy-0.2.0.dev111/src/layers/kernels/crater_body_datums.slang +42 -0
- terraingenpy-0.2.0.dev111/src/layers/kernels/crater_datums.slang +36 -0
- terraingenpy-0.2.0.dev111/src/layers/kernels/craters.slang +60 -0
- terraingenpy-0.2.0.dev111/src/layers/kernels/noise_layer.slang +26 -0
- terraingenpy-0.2.0.dev111/src/layers/layer.cpp +62 -0
- terraingenpy-0.2.0.dev111/src/layers/masked.cpp +356 -0
- terraingenpy-0.2.0.dev111/src/layers/noise_layer.cpp +108 -0
- terraingenpy-0.2.0.dev111/src/layers/pavement.cpp +240 -0
- terraingenpy-0.2.0.dev111/src/layers/prefetched_ground.cpp +136 -0
- terraingenpy-0.2.0.dev111/src/layers/prefetched_ground.h +174 -0
- terraingenpy-0.2.0.dev111/src/layers/roughness.cpp +153 -0
- terraingenpy-0.2.0.dev111/src/layers/roughness_estimate.cpp +140 -0
- terraingenpy-0.2.0.dev111/src/layers/sand_fill.cpp +81 -0
- terraingenpy-0.2.0.dev111/src/layers/sand_shadow.cpp +134 -0
- terraingenpy-0.2.0.dev111/src/layers/source_resolved.cpp +62 -0
- terraingenpy-0.2.0.dev111/src/layers/spectral_continuation.cpp +237 -0
- terraingenpy-0.2.0.dev111/src/layers/strata.cpp +132 -0
- terraingenpy-0.2.0.dev111/src/mesh/io/formats.h +71 -0
- terraingenpy-0.2.0.dev111/src/mesh/io/gltf.cpp +335 -0
- terraingenpy-0.2.0.dev111/src/mesh/io/icq.cpp +212 -0
- terraingenpy-0.2.0.dev111/src/mesh/io/mesh_io.cpp +110 -0
- terraingenpy-0.2.0.dev111/src/mesh/io/obj.cpp +117 -0
- terraingenpy-0.2.0.dev111/src/mesh/io/stl.cpp +137 -0
- terraingenpy-0.2.0.dev111/src/mesh/mesh.cpp +246 -0
- terraingenpy-0.2.0.dev111/src/mesh/shape_model.cpp +180 -0
- terraingenpy-0.2.0.dev111/src/noise/CMakeLists.txt +13 -0
- terraingenpy-0.2.0.dev111/src/noise/fractal_rows.cpp +119 -0
- terraingenpy-0.2.0.dev111/src/noise/fractal_rows.h +26 -0
- terraingenpy-0.2.0.dev111/src/noise/surface_noise.cpp +39 -0
- terraingenpy-0.2.0.dev111/src/noise/validate.cpp +56 -0
- terraingenpy-0.2.0.dev111/src/pipeline/body_mesh.cpp +114 -0
- terraingenpy-0.2.0.dev111/src/pipeline/feature_lists.cpp +458 -0
- terraingenpy-0.2.0.dev111/src/pipeline/generator.cpp +428 -0
- terraingenpy-0.2.0.dev111/src/pipeline/materials.cpp +132 -0
- terraingenpy-0.2.0.dev111/src/pipeline/mesh_build.cpp +296 -0
- terraingenpy-0.2.0.dev111/src/pipeline/report.cpp +253 -0
- terraingenpy-0.2.0.dev111/src/random/value_distribution.cpp +142 -0
- terraingenpy-0.2.0.dev111/src/raster/cell_loops.cpp +57 -0
- terraingenpy-0.2.0.dev111/src/raster/geotiff/geotiff.cpp +123 -0
- terraingenpy-0.2.0.dev111/src/raster/geotiff/geotiff_read.cpp +792 -0
- terraingenpy-0.2.0.dev111/src/raster/geotiff/geotiff_write.cpp +302 -0
- terraingenpy-0.2.0.dev111/src/raster/geotiff/tiff_codecs.cpp +383 -0
- terraingenpy-0.2.0.dev111/src/raster/geotiff/tiff_format.cpp +135 -0
- terraingenpy-0.2.0.dev111/src/raster/geotiff/tiff_format.h +171 -0
- terraingenpy-0.2.0.dev111/src/raster/grid.cpp +127 -0
- terraingenpy-0.2.0.dev111/src/raster/kernel_weight.h +15 -0
- terraingenpy-0.2.0.dev111/src/raster/mapped_bounds.h +32 -0
- terraingenpy-0.2.0.dev111/src/raster/radial_spectrum.h +27 -0
- terraingenpy-0.2.0.dev111/src/raster/resample.cpp +158 -0
- terraingenpy-0.2.0.dev111/src/raster/spectrum.cpp +262 -0
- terraingenpy-0.2.0.dev111/src/raster/variogram.cpp +22 -0
- terraingenpy-0.2.0.dev111/src/sources/CMakeLists.txt +20 -0
- terraingenpy-0.2.0.dev111/src/sources/diamond_square.cpp +505 -0
- terraingenpy-0.2.0.dev111/src/sources/flat_source.cpp +32 -0
- terraingenpy-0.2.0.dev111/src/sources/geotiff_source.cpp +238 -0
- terraingenpy-0.2.0.dev111/src/sources/raster_source.cpp +193 -0
- terraingenpy-0.2.0.dev111/src/sources/seam_field.cpp +715 -0
- terraingenpy-0.2.0.dev111/src/sources/seam_field.h +52 -0
- terraingenpy-0.2.0.dev111/src/sources/shape_model_source.cpp +165 -0
- terraingenpy-0.2.0.dev111/src/sources/source.cpp +46 -0
- terraingenpy-0.2.0.dev111/src/sources/source_chain.cpp +209 -0
- terraingenpy-0.2.0.dev111/src/sources/synthetic_source.cpp +106 -0
- terraingenpy-0.2.0.dev111/src/sources/upsampling.cpp +457 -0
- terraingenpy-0.2.0.dev111/src/util/CMakeLists.txt +20 -0
- terraingenpy-0.2.0.dev111/src/util/checks.cpp +48 -0
- terraingenpy-0.2.0.dev111/src/util/cube_sphere_cells.cpp +423 -0
- terraingenpy-0.2.0.dev111/src/util/fft.cpp +77 -0
- terraingenpy-0.2.0.dev111/src/util/log.cpp +127 -0
- terraingenpy-0.2.0.dev111/src/util/numerics.h +145 -0
- terraingenpy-0.2.0.dev111/src/util/planar_cells.cpp +65 -0
- terraingenpy-0.2.0.dev111/src/util/radial_shape.cpp +146 -0
- terraingenpy-0.2.0.dev111/src/util/surface.cpp +336 -0
- terraingenpy-0.2.0.dev111/src/util/text.cpp +59 -0
- terraingenpy-0.2.0.dev111/src/util/text.h +34 -0
- terraingenpy-0.2.0.dev111/tests/CMakeLists.txt +54 -0
- terraingenpy-0.2.0.dev111/tests/benchmark/CMakeLists.txt +33 -0
- terraingenpy-0.2.0.dev111/tests/benchmark/bench_grids.cpp +89 -0
- terraingenpy-0.2.0.dev111/tests/benchmark/bench_python_subclasses.py +144 -0
- terraingenpy-0.2.0.dev111/tests/benchmark/bench_sources.cpp +64 -0
- terraingenpy-0.2.0.dev111/tests/benchmark/fixtures.h +44 -0
- terraingenpy-0.2.0.dev111/tests/golden/noise/kernels_test.cpp +103 -0
- terraingenpy-0.2.0.dev111/tests/integration/build_info_stable.cmake +68 -0
- terraingenpy-0.2.0.dev111/tests/integration/package/main.cpp +33 -0
- terraingenpy-0.2.0.dev111/tests/python/CMakeLists.txt +23 -0
- terraingenpy-0.2.0.dev111/tests/python/conftest.py +233 -0
- terraingenpy-0.2.0.dev111/tests/python/test_albedo.py +311 -0
- terraingenpy-0.2.0.dev111/tests/python/test_boulders.py +499 -0
- terraingenpy-0.2.0.dev111/tests/python/test_config.py +367 -0
- terraingenpy-0.2.0.dev111/tests/python/test_craters.py +707 -0
- terraingenpy-0.2.0.dev111/tests/python/test_docs_cli_help.py +46 -0
- terraingenpy-0.2.0.dev111/tests/python/test_docs_cmake_options.py +37 -0
- terraingenpy-0.2.0.dev111/tests/python/test_docs_gallery.py +157 -0
- terraingenpy-0.2.0.dev111/tests/python/test_docs_guides.py +107 -0
- terraingenpy-0.2.0.dev111/tests/python/test_layers.py +820 -0
- terraingenpy-0.2.0.dev111/tests/python/test_noise.py +297 -0
- terraingenpy-0.2.0.dev111/tests/python/test_pipeline.py +413 -0
- terraingenpy-0.2.0.dev111/tests/python/test_raster.py +246 -0
- terraingenpy-0.2.0.dev111/tests/python/test_report.py +107 -0
- terraingenpy-0.2.0.dev111/tests/python/test_sources.py +474 -0
- terraingenpy-0.2.0.dev111/tests/support/apply_crater.h +23 -0
- terraingenpy-0.2.0.dev111/tests/support/referenced_source.h +44 -0
- terraingenpy-0.2.0.dev111/tests/support/resample.h +46 -0
- terraingenpy-0.2.0.dev111/tests/support/source_agreement.h +67 -0
- terraingenpy-0.2.0.dev111/tests/unit/albedo/albedo_test.cpp +407 -0
- terraingenpy-0.2.0.dev111/tests/unit/albedo/bands_test.cpp +100 -0
- terraingenpy-0.2.0.dev111/tests/unit/app/CMakeLists.txt +3 -0
- terraingenpy-0.2.0.dev111/tests/unit/app/cli_test.cpp +274 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/angles_test.cpp +175 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/build_test.cpp +1310 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/checks_test.cpp +61 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/config_test.cpp +151 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/configs.h +311 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/feature_lists_test.cpp +264 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/generate_from_config_test.cpp +1019 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/json_io_test.cpp +1003 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/json_parse_errors_test.cpp +188 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/json_read_test.cpp +251 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/ranges_test.cpp +240 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/schema_test.cpp +640 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/validate_config_test.cpp +1162 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/validate_sources_test.cpp +408 -0
- terraingenpy-0.2.0.dev111/tests/unit/config/write_outputs_test.cpp +467 -0
- terraingenpy-0.2.0.dev111/tests/unit/distribution/composition_test.cpp +153 -0
- terraingenpy-0.2.0.dev111/tests/unit/docs/CMakeLists.txt +6 -0
- terraingenpy-0.2.0.dev111/tests/unit/gpu/backend_test.cpp +193 -0
- terraingenpy-0.2.0.dev111/tests/unit/gpu/kernels/noise_conformance.slang +63 -0
- terraingenpy-0.2.0.dev111/tests/unit/gpu/noise_test.cpp +184 -0
- terraingenpy-0.2.0.dev111/tests/unit/gpu/vulkan_test.cpp +158 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/CMakeLists.txt +66 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/boulders/boulder_fragments_test.cpp +318 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/boulders/boulder_options_test.cpp +121 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/craters/crater_layer_test.cpp +503 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/craters/crater_test.cpp +180 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/craters/generation/cell_cache_test.cpp +120 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/craters/generation/population_test.cpp +725 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/craters/shaping/apply_test.cpp +718 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/craters/shaping/replacement_test.cpp +219 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/craters/shaping/resolved_state_test.cpp +289 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/field_test.cpp +146 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/lattice_test.cpp +34 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/noise_layer_test.cpp +300 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/prefetched_ground_test.cpp +178 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/roughness_estimate_test.cpp +219 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/source_resolved_test.cpp +256 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/spectral_continuation_test.cpp +249 -0
- terraingenpy-0.2.0.dev111/tests/unit/layers/sphere_layers_test.cpp +221 -0
- terraingenpy-0.2.0.dev111/tests/unit/mesh/io/mesh_io_test.cpp +222 -0
- terraingenpy-0.2.0.dev111/tests/unit/noise/CMakeLists.txt +19 -0
- terraingenpy-0.2.0.dev111/tests/unit/noise/fractal_rows_test.cpp +125 -0
- terraingenpy-0.2.0.dev111/tests/unit/noise/fractals_test.cpp +186 -0
- terraingenpy-0.2.0.dev111/tests/unit/noise/noise3_test.cpp +293 -0
- terraingenpy-0.2.0.dev111/tests/unit/noise/perlin_test.cpp +228 -0
- terraingenpy-0.2.0.dev111/tests/unit/noise/surface_noise_test.cpp +29 -0
- terraingenpy-0.2.0.dev111/tests/unit/noise/validate_test.cpp +80 -0
- terraingenpy-0.2.0.dev111/tests/unit/pipeline/features_test.cpp +232 -0
- terraingenpy-0.2.0.dev111/tests/unit/pipeline/generator_test.cpp +699 -0
- terraingenpy-0.2.0.dev111/tests/unit/pipeline/materials_test.cpp +165 -0
- terraingenpy-0.2.0.dev111/tests/unit/pipeline/report_test.cpp +305 -0
- terraingenpy-0.2.0.dev111/tests/unit/pipeline/terrain_windows_test.cpp +281 -0
- terraingenpy-0.2.0.dev111/tests/unit/pipeline/terrains.h +61 -0
- terraingenpy-0.2.0.dev111/tests/unit/raster/cell_loops_test.cpp +155 -0
- terraingenpy-0.2.0.dev111/tests/unit/raster/geotiff_test.cpp +628 -0
- terraingenpy-0.2.0.dev111/tests/unit/raster/raster_stats_test.cpp +62 -0
- terraingenpy-0.2.0.dev111/tests/unit/raster/raster_test.cpp +110 -0
- terraingenpy-0.2.0.dev111/tests/unit/raster/resample_test.cpp +248 -0
- terraingenpy-0.2.0.dev111/tests/unit/raster/spectrum_test.cpp +178 -0
- terraingenpy-0.2.0.dev111/tests/unit/raster/tiff_format_test.cpp +144 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/CMakeLists.txt +16 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/diamond_square_test.cpp +706 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/geotiff_source_test.cpp +569 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/raster_source_test.cpp +328 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/shape_model_source_test.cpp +154 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/source_chain_test.cpp +538 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/synthetic_source_test.cpp +151 -0
- terraingenpy-0.2.0.dev111/tests/unit/sources/upsampling_test.cpp +435 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/arithmetic_test.cpp +25 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/bisection_test.cpp +76 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/cells_test.cpp +105 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/checks_test.cpp +65 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/fft_test.cpp +87 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/files_test.cpp +32 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/lru_cache_test.cpp +38 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/overloaded_test.cpp +19 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/quadrature_test.cpp +35 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/surface_test.cpp +734 -0
- terraingenpy-0.2.0.dev111/tests/unit/util/text_test.cpp +26 -0
- terraingenpy-0.2.0.dev90/.pre-commit-config.yaml +0 -66
- terraingenpy-0.2.0.dev90/CHANGELOG.md +0 -337
- terraingenpy-0.2.0.dev90/CMakeLists.txt +0 -147
- terraingenpy-0.2.0.dev90/CONTRIBUTING.md +0 -47
- terraingenpy-0.2.0.dev90/PKG-INFO +0 -250
- terraingenpy-0.2.0.dev90/README.md +0 -194
- terraingenpy-0.2.0.dev90/cmake/TerrainGenSlang.cmake +0 -131
- terraingenpy-0.2.0.dev90/cmake/TerrainGenTesting.cmake +0 -21
- terraingenpy-0.2.0.dev90/cmake/third_party/ernie.cmake +0 -37
- terraingenpy-0.2.0.dev90/docs/_src/concepts/extending.md +0 -1
- terraingenpy-0.2.0.dev90/docs/_src/getting-started/first-terrain.md +0 -1
- terraingenpy-0.2.0.dev90/docs/_src/getting-started/index.md +0 -14
- terraingenpy-0.2.0.dev90/docs/_src/getting-started/installation.md +0 -77
- terraingenpy-0.2.0.dev90/docs/_src/getting-started/quickstart.md +0 -1
- terraingenpy-0.2.0.dev90/docs/_src/guides/command-line.md +0 -1
- terraingenpy-0.2.0.dev90/docs/_src/guides/index.md +0 -1
- terraingenpy-0.2.0.dev90/docs/_src/index.md +0 -46
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/blast_zones.py +0 -44
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/crater_rays.py +0 -60
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/oblique_impacts.py +0 -49
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/reflectance_zones.py +0 -51
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/rocks.py +0 -48
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/slopes.py +0 -42
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/splotches.py +0 -37
- terraingenpy-0.2.0.dev90/docs/gallery/albedo/synthetic_base.py +0 -60
- terraingenpy-0.2.0.dev90/docs/gallery/assets.py +0 -102
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/clustering.py +0 -42
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/crater_ejecta_aging.py +0 -69
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/crater_ejecta_coverage.py +0 -62
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/crater_ejecta_decay.py +0 -65
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/crater_ejecta_floor.py +0 -64
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/crater_ejecta_profiles.py +0 -58
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/crater_ejecta_reach.py +0 -63
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/crater_ejecta_regolith.py +0 -51
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/density_map.py +0 -74
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/fillets.py +0 -77
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_axes.py +0 -31
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_fractures.py +0 -36
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_fragments.py +0 -56
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_noise.py +0 -37
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_rounding.py +0 -29
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_settle.py +0 -62
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_solids.py +0 -36
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_styles.py +0 -30
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_variety.py +0 -27
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/models_weathering.py +0 -42
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/patches.py +0 -37
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/pose_burial.py +0 -56
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/pose_burial_by_wear.py +0 -51
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/pose_height_ratio.py +0 -56
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/size_distributions.py +0 -67
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/slope_map.py +0 -68
- terraingenpy-0.2.0.dev90/docs/gallery/boulders/slopes.py +0 -72
- terraingenpy-0.2.0.dev90/docs/gallery/craters/ages.py +0 -75
- terraingenpy-0.2.0.dev90/docs/gallery/craters/aristarchus.py +0 -78
- terraingenpy-0.2.0.dev90/docs/gallery/craters/blend_shapes.py +0 -61
- terraingenpy-0.2.0.dev90/docs/gallery/craters/catalog_completeness.py +0 -73
- terraingenpy-0.2.0.dev90/docs/gallery/craters/complex_craters.py +0 -59
- terraingenpy-0.2.0.dev90/docs/gallery/craters/complex_profiles.py +0 -77
- terraingenpy-0.2.0.dev90/docs/gallery/craters/copernicus.py +0 -77
- terraingenpy-0.2.0.dev90/docs/gallery/craters/datum.py +0 -58
- terraingenpy-0.2.0.dev90/docs/gallery/craters/datum_profiles.py +0 -62
- terraingenpy-0.2.0.dev90/docs/gallery/craters/default_field.py +0 -28
- terraingenpy-0.2.0.dev90/docs/gallery/craters/degradation_by_age.py +0 -44
- terraingenpy-0.2.0.dev90/docs/gallery/craters/degradation_by_diffusion.py +0 -54
- terraingenpy-0.2.0.dev90/docs/gallery/craters/degradation_by_freshness.py +0 -52
- terraingenpy-0.2.0.dev90/docs/gallery/craters/density_map.py +0 -77
- terraingenpy-0.2.0.dev90/docs/gallery/craters/density_map_areal_fraction.py +0 -90
- terraingenpy-0.2.0.dev90/docs/gallery/craters/density_map_count.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/density_map_scale.py +0 -77
- terraingenpy-0.2.0.dev90/docs/gallery/craters/depth_ratio.py +0 -70
- terraingenpy-0.2.0.dev90/docs/gallery/craters/elongation.py +0 -52
- terraingenpy-0.2.0.dev90/docs/gallery/craters/elongation_and_roughness.py +0 -57
- terraingenpy-0.2.0.dev90/docs/gallery/craters/freshness_vs_diffusion.py +0 -44
- terraingenpy-0.2.0.dev90/docs/gallery/craters/freshness_vs_diffusion_maps.py +0 -64
- terraingenpy-0.2.0.dev90/docs/gallery/craters/interior_replacement.py +0 -46
- terraingenpy-0.2.0.dev90/docs/gallery/craters/irregularity.py +0 -48
- terraingenpy-0.2.0.dev90/docs/gallery/craters/irregularity_harmonics.py +0 -81
- terraingenpy-0.2.0.dev90/docs/gallery/craters/irregularity_models.py +0 -82
- terraingenpy-0.2.0.dev90/docs/gallery/craters/irregularity_spectral_slope.py +0 -77
- terraingenpy-0.2.0.dev90/docs/gallery/craters/manual_depth.py +0 -64
- terraingenpy-0.2.0.dev90/docs/gallery/craters/max_craters.py +0 -51
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks.py +0 -81
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks_elongation.py +0 -88
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks_massifs.py +0 -88
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks_roughness.py +0 -88
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks_seeds.py +0 -84
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks_sharpness.py +0 -88
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks_size.py +0 -88
- terraingenpy-0.2.0.dev90/docs/gallery/craters/peaks_spread.py +0 -89
- terraingenpy-0.2.0.dev90/docs/gallery/craters/populations.py +0 -106
- terraingenpy-0.2.0.dev90/docs/gallery/craters/profiles.py +0 -72
- terraingenpy-0.2.0.dev90/docs/gallery/craters/radial_marks.py +0 -55
- terraingenpy-0.2.0.dev90/docs/gallery/craters/resolution_fade.py +0 -43
- terraingenpy-0.2.0.dev90/docs/gallery/craters/rim_models.py +0 -59
- terraingenpy-0.2.0.dev90/docs/gallery/craters/rim_smoothing.py +0 -64
- terraingenpy-0.2.0.dev90/docs/gallery/craters/secondaries.py +0 -81
- terraingenpy-0.2.0.dev90/docs/gallery/craters/secondary_shapes.py +0 -45
- terraingenpy-0.2.0.dev90/docs/gallery/craters/slope_floor_offset.py +0 -61
- terraingenpy-0.2.0.dev90/docs/gallery/craters/slope_hillside.py +0 -56
- terraingenpy-0.2.0.dev90/docs/gallery/craters/slope_response.py +0 -59
- terraingenpy-0.2.0.dev90/docs/gallery/craters/slope_upslope_rim.py +0 -61
- terraingenpy-0.2.0.dev90/docs/gallery/craters/slope_wear.py +0 -70
- terraingenpy-0.2.0.dev90/docs/gallery/craters/source_resolved.py +0 -64
- terraingenpy-0.2.0.dev90/docs/gallery/craters/spacing_both.py +0 -45
- terraingenpy-0.2.0.dev90/docs/gallery/craters/spacing_ratio.py +0 -46
- terraingenpy-0.2.0.dev90/docs/gallery/craters/spacing_separation.py +0 -40
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces.py +0 -82
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_arcs.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_bench_slope.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_benches.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_blocks.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_freshness.py +0 -85
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_gaps.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_onset.py +0 -94
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_rim_variation.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_scarps.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/terraces_seeds.py +0 -86
- terraingenpy-0.2.0.dev90/docs/gallery/craters/texture_ejecta.py +0 -49
- terraingenpy-0.2.0.dev90/docs/gallery/craters/texture_gullies.py +0 -48
- terraingenpy-0.2.0.dev90/docs/gallery/craters/texture_mantling.py +0 -51
- terraingenpy-0.2.0.dev90/docs/gallery/craters/texture_noise.py +0 -48
- terraingenpy-0.2.0.dev90/docs/gallery/craters/texture_rim_noise.py +0 -48
- terraingenpy-0.2.0.dev90/docs/gallery/craters/theophilus.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/craters/tycho.py +0 -82
- terraingenpy-0.2.0.dev90/docs/gallery/dem/craters_added.py +0 -82
- terraingenpy-0.2.0.dev90/docs/gallery/dem/globe.py +0 -69
- terraingenpy-0.2.0.dev90/docs/gallery/dem/noise_added.py +0 -116
- terraingenpy-0.2.0.dev90/docs/gallery/dem/upsampling.py +0 -97
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/chronology.py +0 -51
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/combining.py +0 -69
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/crater_densities.py +0 -72
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/literature_boulders.py +0 -83
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/literature_craters.py +0 -100
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/piecewise.py +0 -55
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/power_laws.py +0 -69
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/sampling.py +0 -73
- terraingenpy-0.2.0.dev90/docs/gallery/distributions/value_distributions.py +0 -47
- terraingenpy-0.2.0.dev90/docs/gallery/gallery.py +0 -344
- terraingenpy-0.2.0.dev90/docs/gallery/geology/bedforms_ripples.py +0 -35
- terraingenpy-0.2.0.dev90/docs/gallery/geology/bedforms_tars.py +0 -34
- terraingenpy-0.2.0.dev90/docs/gallery/geology/dune_shapes.py +0 -34
- terraingenpy-0.2.0.dev90/docs/gallery/geology/dunes_barchan_winds.py +0 -35
- terraingenpy-0.2.0.dev90/docs/gallery/geology/dunes_crest_lines.py +0 -38
- terraingenpy-0.2.0.dev90/docs/gallery/geology/dunes_grainflows.py +0 -58
- terraingenpy-0.2.0.dev90/docs/gallery/geology/dunes_ripples.py +0 -87
- terraingenpy-0.2.0.dev90/docs/gallery/geology/exposure.py +0 -74
- terraingenpy-0.2.0.dev90/docs/gallery/geology/pavement.py +0 -32
- terraingenpy-0.2.0.dev90/docs/gallery/geology/sand_fill.py +0 -45
- terraingenpy-0.2.0.dev90/docs/gallery/geology/sand_shadows.py +0 -54
- terraingenpy-0.2.0.dev90/docs/gallery/geology/strata.py +0 -41
- terraingenpy-0.2.0.dev90/docs/gallery/layers/masked.py +0 -49
- terraingenpy-0.2.0.dev90/docs/gallery/layers/masked_craters_boulders.py +0 -93
- terraingenpy-0.2.0.dev90/docs/gallery/layers/masked_polygon.py +0 -56
- terraingenpy-0.2.0.dev90/docs/gallery/layers/masked_polygon_craters_boulders.py +0 -88
- terraingenpy-0.2.0.dev90/docs/gallery/layers/scale_and_clamp.py +0 -57
- terraingenpy-0.2.0.dev90/docs/gallery/outputs/materials.py +0 -68
- terraingenpy-0.2.0.dev90/docs/gallery/planets/ellipsoid_craters.py +0 -123
- terraingenpy-0.2.0.dev90/docs/gallery/planets/ellipsoid_projection.py +0 -86
- terraingenpy-0.2.0.dev90/docs/gallery/planets/mars_scene.py +0 -150
- terraingenpy-0.2.0.dev90/docs/gallery/planets/moon_scene.py +0 -112
- terraingenpy-0.2.0.dev90/docs/gallery/queries/rover_traverse.py +0 -80
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_blending.py +0 -39
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_gain.py +0 -29
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_lacunarity.py +0 -31
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_octaves.py +0 -29
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_perlin.py +0 -41
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_simplex.py +0 -41
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_value.py +0 -41
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_warp.py +0 -32
- terraingenpy-0.2.0.dev90/docs/gallery/relief/noise_worley.py +0 -44
- terraingenpy-0.2.0.dev90/docs/gallery/relief/roughness_lunar.py +0 -81
- terraingenpy-0.2.0.dev90/docs/gallery/relief/spectral_continuation.py +0 -81
- terraingenpy-0.2.0.dev90/docs/gallery/relief/upsampling.py +0 -68
- terraingenpy-0.2.0.dev90/docs/gallery/relief/upsampling_diamond_square.py +0 -42
- terraingenpy-0.2.0.dev90/docs/gallery/relief/upsampling_synthetic.py +0 -53
- terraingenpy-0.2.0.dev90/docs/gallery/sources/chain.py +0 -93
- terraingenpy-0.2.0.dev90/docs/overrides/css/extra.css +0 -465
- terraingenpy-0.2.0.dev90/docs/overrides/main.html +0 -7
- terraingenpy-0.2.0.dev90/docs/scripts/gallery_page.py +0 -119
- terraingenpy-0.2.0.dev90/docs/scripts/generate_schema.py +0 -398
- terraingenpy-0.2.0.dev90/docs/snippets/craters/crater_layer.cpp +0 -50
- terraingenpy-0.2.0.dev90/docs/snippets/craters/crater_layer.py +0 -41
- terraingenpy-0.2.0.dev90/mkdocs.yml +0 -234
- terraingenpy-0.2.0.dev90/pyproject.toml +0 -98
- terraingenpy-0.2.0.dev90/terraingen/CMakeLists.txt +0 -126
- terraingenpy-0.2.0.dev90/terraingen/albedo/albedo.cpp +0 -159
- terraingenpy-0.2.0.dev90/terraingen/albedo/albedo.h +0 -135
- terraingenpy-0.2.0.dev90/terraingen/albedo/bands.cpp +0 -80
- terraingenpy-0.2.0.dev90/terraingen/albedo/blast_zones.cpp +0 -113
- terraingenpy-0.2.0.dev90/terraingen/albedo/crater_albedo.cpp +0 -564
- terraingenpy-0.2.0.dev90/terraingen/albedo/crater_albedo_options.cpp +0 -181
- terraingenpy-0.2.0.dev90/terraingen/albedo/maturity.cpp +0 -22
- terraingenpy-0.2.0.dev90/terraingen/albedo/maturity.h +0 -23
- terraingenpy-0.2.0.dev90/terraingen/albedo/raster_albedo.cpp +0 -157
- terraingenpy-0.2.0.dev90/terraingen/albedo/raster_albedo.h +0 -112
- terraingenpy-0.2.0.dev90/terraingen/albedo/rock_albedo.cpp +0 -113
- terraingenpy-0.2.0.dev90/terraingen/albedo/rock_albedo.h +0 -75
- terraingenpy-0.2.0.dev90/terraingen/albedo/slope_albedo.cpp +0 -157
- terraingenpy-0.2.0.dev90/terraingen/albedo/splotches.cpp +0 -446
- terraingenpy-0.2.0.dev90/terraingen/albedo/splotches.h +0 -190
- terraingenpy-0.2.0.dev90/terraingen/albedo/synthetic.cpp +0 -71
- terraingenpy-0.2.0.dev90/terraingen/albedo/synthetic.h +0 -89
- terraingenpy-0.2.0.dev90/terraingen/albedo/zone_shadows.cpp +0 -146
- terraingenpy-0.2.0.dev90/terraingen/app/CMakeLists.txt +0 -33
- terraingenpy-0.2.0.dev90/terraingen/app/cli.cpp +0 -348
- terraingenpy-0.2.0.dev90/terraingen/app/cli.h +0 -66
- terraingenpy-0.2.0.dev90/terraingen/app/gui/CMakeLists.txt +0 -10
- terraingenpy-0.2.0.dev90/terraingen/app/gui/config_editor.cpp +0 -923
- terraingenpy-0.2.0.dev90/terraingen/app/gui/config_editor.h +0 -130
- terraingenpy-0.2.0.dev90/terraingen/app/gui/gui_app.cpp +0 -511
- terraingenpy-0.2.0.dev90/terraingen/app/gui/gui_app.h +0 -144
- terraingenpy-0.2.0.dev90/terraingen/app/gui/run.cpp +0 -33
- terraingenpy-0.2.0.dev90/terraingen/app/gui/run.h +0 -26
- terraingenpy-0.2.0.dev90/terraingen/app/gui/run_none.cpp +0 -19
- terraingenpy-0.2.0.dev90/terraingen/app/gui/terrain_scene.cpp +0 -96
- terraingenpy-0.2.0.dev90/terraingen/app/gui/terrain_scene.h +0 -38
- terraingenpy-0.2.0.dev90/terraingen/app/gui/widgets.h +0 -36
- terraingenpy-0.2.0.dev90/terraingen/app/main.cpp +0 -12
- terraingenpy-0.2.0.dev90/terraingen/config/build.cpp +0 -1085
- terraingenpy-0.2.0.dev90/terraingen/config/build.h +0 -205
- terraingenpy-0.2.0.dev90/terraingen/config/config.cpp +0 -106
- terraingenpy-0.2.0.dev90/terraingen/config/config.h +0 -871
- terraingenpy-0.2.0.dev90/terraingen/config/fields/albedo.h +0 -566
- terraingenpy-0.2.0.dev90/terraingen/config/fields/boulders.h +0 -609
- terraingenpy-0.2.0.dev90/terraingen/config/fields/common.h +0 -309
- terraingenpy-0.2.0.dev90/terraingen/config/fields/crater_models.h +0 -298
- terraingenpy-0.2.0.dev90/terraingen/config/fields/craters.h +0 -552
- terraingenpy-0.2.0.dev90/terraingen/config/fields/enums.h +0 -420
- terraingenpy-0.2.0.dev90/terraingen/config/fields/fields.h +0 -47
- terraingenpy-0.2.0.dev90/terraingen/config/fields/json_io.h +0 -390
- terraingenpy-0.2.0.dev90/terraingen/config/fields/layers.h +0 -647
- terraingenpy-0.2.0.dev90/terraingen/config/fields/maps.h +0 -64
- terraingenpy-0.2.0.dev90/terraingen/config/fields/materials.h +0 -62
- terraingenpy-0.2.0.dev90/terraingen/config/fields/outputs.h +0 -200
- terraingenpy-0.2.0.dev90/terraingen/config/fields/ranges.h +0 -143
- terraingenpy-0.2.0.dev90/terraingen/config/fields/sources.h +0 -208
- terraingenpy-0.2.0.dev90/terraingen/config/generate.cpp +0 -591
- terraingenpy-0.2.0.dev90/terraingen/config/generate.h +0 -105
- terraingenpy-0.2.0.dev90/terraingen/config/json.cpp +0 -261
- terraingenpy-0.2.0.dev90/terraingen/config/json.h +0 -90
- terraingenpy-0.2.0.dev90/terraingen/config/ranges.cpp +0 -85
- terraingenpy-0.2.0.dev90/terraingen/config/schema.cpp +0 -276
- terraingenpy-0.2.0.dev90/terraingen/config/validate.cpp +0 -1042
- terraingenpy-0.2.0.dev90/terraingen/config/validate.h +0 -53
- terraingenpy-0.2.0.dev90/terraingen/distribution/composition.cpp +0 -64
- terraingenpy-0.2.0.dev90/terraingen/distribution/golombek_rapp.cpp +0 -44
- terraingenpy-0.2.0.dev90/terraingen/distribution/golombek_rapp.h +0 -43
- terraingenpy-0.2.0.dev90/terraingen/distribution/log_polynomial.cpp +0 -63
- terraingenpy-0.2.0.dev90/terraingen/distribution/log_polynomial.h +0 -47
- terraingenpy-0.2.0.dev90/terraingen/distribution/minimum.cpp +0 -46
- terraingenpy-0.2.0.dev90/terraingen/distribution/piecewise_power_law.cpp +0 -62
- terraingenpy-0.2.0.dev90/terraingen/distribution/piecewise_power_law.h +0 -56
- terraingenpy-0.2.0.dev90/terraingen/distribution/piecewise_uniform.cpp +0 -107
- terraingenpy-0.2.0.dev90/terraingen/distribution/piecewise_uniform.h +0 -63
- terraingenpy-0.2.0.dev90/terraingen/distribution/power_law.cpp +0 -36
- terraingenpy-0.2.0.dev90/terraingen/distribution/production_surface.h +0 -76
- terraingenpy-0.2.0.dev90/terraingen/distribution/size_frequency.cpp +0 -168
- terraingenpy-0.2.0.dev90/terraingen/distribution/size_frequency.h +0 -128
- terraingenpy-0.2.0.dev90/terraingen/distribution/spliced.cpp +0 -69
- terraingenpy-0.2.0.dev90/terraingen/distribution/spliced.h +0 -58
- terraingenpy-0.2.0.dev90/terraingen/distribution/summed.cpp +0 -50
- terraingenpy-0.2.0.dev90/terraingen/distribution/tabulated.cpp +0 -82
- terraingenpy-0.2.0.dev90/terraingen/distribution/tabulated.h +0 -57
- terraingenpy-0.2.0.dev90/terraingen/gpu/backend.cpp +0 -185
- terraingenpy-0.2.0.dev90/terraingen/gpu/cuda.cpp +0 -316
- terraingenpy-0.2.0.dev90/terraingen/gpu/cuda.h +0 -47
- terraingenpy-0.2.0.dev90/terraingen/gpu/kernel.cpp +0 -155
- terraingenpy-0.2.0.dev90/terraingen/gpu/metal.cpp +0 -181
- terraingenpy-0.2.0.dev90/terraingen/gpu/metal.h +0 -46
- terraingenpy-0.2.0.dev90/terraingen/gpu/vulkan.cpp +0 -555
- terraingenpy-0.2.0.dev90/terraingen/gpu/vulkan.h +0 -67
- terraingenpy-0.2.0.dev90/terraingen/layers/CMakeLists.txt +0 -86
- terraingenpy-0.2.0.dev90/terraingen/layers/anchored_plane.h +0 -29
- terraingenpy-0.2.0.dev90/terraingen/layers/bedforms.cpp +0 -186
- terraingenpy-0.2.0.dev90/terraingen/layers/bedforms.h +0 -130
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder.h +0 -345
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_abundance.cpp +0 -182
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_clusters.cpp +0 -60
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_fragments.h +0 -42
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_layer.cpp +0 -381
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_layer.h +0 -409
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_layer_abundance.cpp +0 -368
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_models.cpp +0 -310
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_options.cpp +0 -363
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_options.h +0 -518
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_relief.cpp +0 -474
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_shape.cpp +0 -497
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/boulder_shape.h +0 -127
- terraingenpy-0.2.0.dev90/terraingen/layers/boulders/ejecta_index.h +0 -53
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/ages/age_model.cpp +0 -51
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/ages/freshness_ages.cpp +0 -41
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/ages/steady_state.cpp +0 -72
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/ages/steady_state.h +0 -75
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/crater.cpp +0 -118
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/crater.h +0 -228
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/crater_layer.cpp +0 -255
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/crater_layer.h +0 -178
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/crater_placer.cpp +0 -34
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/crater_placer.h +0 -50
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/degradation/degradation_model.cpp +0 -50
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/degradation/diffusion.cpp +0 -320
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/degradation/diffusion.h +0 -171
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/degradation/diffusivities.h +0 -61
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/generation/cell_cache.cpp +0 -43
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/generation/cell_cache.h +0 -69
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/generation/population.cpp +0 -411
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/generation/population.h +0 -161
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/generation/spacing.cpp +0 -132
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/profiles/complex.cpp +0 -79
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/profiles/fassett_thomson.h +0 -48
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/secondaries.cpp +0 -416
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/secondaries.h +0 -103
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/secondary_model.cpp +0 -260
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/secondary_model.h +0 -241
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/apply.cpp +0 -374
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/apply.h +0 -95
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/apply_options.cpp +0 -184
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/apply_options.h +0 -337
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/attributes.cpp +0 -32
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/crater_kernel.cpp +0 -610
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/datum.cpp +0 -60
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/datum.h +0 -73
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/datum_fit.cpp +0 -726
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/datum_fit.h +0 -36
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/irregularity.cpp +0 -388
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/irregularity.h +0 -195
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/morphometry.cpp +0 -71
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/prepared.cpp +0 -33
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/prepared.h +0 -49
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/resolved_state.cpp +0 -147
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/resolved_state.h +0 -39
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/slope.cpp +0 -61
- terraingenpy-0.2.0.dev90/terraingen/layers/craters/shaping/slope.h +0 -79
- terraingenpy-0.2.0.dev90/terraingen/layers/density_map.cpp +0 -116
- terraingenpy-0.2.0.dev90/terraingen/layers/density_map.h +0 -136
- terraingenpy-0.2.0.dev90/terraingen/layers/dunes.cpp +0 -658
- terraingenpy-0.2.0.dev90/terraingen/layers/dunes.h +0 -276
- terraingenpy-0.2.0.dev90/terraingen/layers/evaluation_cache.h +0 -70
- terraingenpy-0.2.0.dev90/terraingen/layers/exposure.cpp +0 -126
- terraingenpy-0.2.0.dev90/terraingen/layers/exposure.h +0 -115
- terraingenpy-0.2.0.dev90/terraingen/layers/kernel.h +0 -37
- terraingenpy-0.2.0.dev90/terraingen/layers/kernels/crater_body_datums.slang +0 -42
- terraingenpy-0.2.0.dev90/terraingen/layers/kernels/crater_datums.slang +0 -36
- terraingenpy-0.2.0.dev90/terraingen/layers/kernels/craters.h +0 -1331
- terraingenpy-0.2.0.dev90/terraingen/layers/kernels/craters.slang +0 -60
- terraingenpy-0.2.0.dev90/terraingen/layers/kernels/noise_relief.h +0 -54
- terraingenpy-0.2.0.dev90/terraingen/layers/kernels/noise_relief.slang +0 -26
- terraingenpy-0.2.0.dev90/terraingen/layers/layer.cpp +0 -62
- terraingenpy-0.2.0.dev90/terraingen/layers/layer.h +0 -106
- terraingenpy-0.2.0.dev90/terraingen/layers/masked.cpp +0 -356
- terraingenpy-0.2.0.dev90/terraingen/layers/masked.h +0 -153
- terraingenpy-0.2.0.dev90/terraingen/layers/noise_relief.cpp +0 -67
- terraingenpy-0.2.0.dev90/terraingen/layers/noise_relief.h +0 -77
- terraingenpy-0.2.0.dev90/terraingen/layers/pavement.cpp +0 -240
- terraingenpy-0.2.0.dev90/terraingen/layers/pavement.h +0 -131
- terraingenpy-0.2.0.dev90/terraingen/layers/prefetched_ground.cpp +0 -91
- terraingenpy-0.2.0.dev90/terraingen/layers/prefetched_ground.h +0 -133
- terraingenpy-0.2.0.dev90/terraingen/layers/roughness.cpp +0 -153
- terraingenpy-0.2.0.dev90/terraingen/layers/roughness.h +0 -94
- terraingenpy-0.2.0.dev90/terraingen/layers/roughness_estimate.cpp +0 -138
- terraingenpy-0.2.0.dev90/terraingen/layers/roughness_estimate.h +0 -57
- terraingenpy-0.2.0.dev90/terraingen/layers/sand_fill.cpp +0 -81
- terraingenpy-0.2.0.dev90/terraingen/layers/sand_fill.h +0 -78
- terraingenpy-0.2.0.dev90/terraingen/layers/sand_shadow.cpp +0 -134
- terraingenpy-0.2.0.dev90/terraingen/layers/source_resolved.cpp +0 -62
- terraingenpy-0.2.0.dev90/terraingen/layers/source_resolved.h +0 -46
- terraingenpy-0.2.0.dev90/terraingen/layers/spectral_continuation.cpp +0 -237
- terraingenpy-0.2.0.dev90/terraingen/layers/strata.cpp +0 -132
- terraingenpy-0.2.0.dev90/terraingen/layers/strata.h +0 -111
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/formats.h +0 -71
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/gltf.cpp +0 -335
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/icq.cpp +0 -213
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/icq.h +0 -81
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/mesh_io.cpp +0 -110
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/mesh_io.h +0 -79
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/obj.cpp +0 -117
- terraingenpy-0.2.0.dev90/terraingen/mesh/io/stl.cpp +0 -137
- terraingenpy-0.2.0.dev90/terraingen/mesh/mesh.cpp +0 -246
- terraingenpy-0.2.0.dev90/terraingen/mesh/polyhedra.h +0 -34
- terraingenpy-0.2.0.dev90/terraingen/mesh/shape_model.cpp +0 -180
- terraingenpy-0.2.0.dev90/terraingen/mesh/shape_model.h +0 -23
- terraingenpy-0.2.0.dev90/terraingen/noise/CMakeLists.txt +0 -12
- terraingenpy-0.2.0.dev90/terraingen/noise/fractal.h +0 -316
- terraingenpy-0.2.0.dev90/terraingen/noise/lattice.h +0 -135
- terraingenpy-0.2.0.dev90/terraingen/noise/noise_layers.h +0 -244
- terraingenpy-0.2.0.dev90/terraingen/noise/perlin.h +0 -156
- terraingenpy-0.2.0.dev90/terraingen/noise/simplex.h +0 -124
- terraingenpy-0.2.0.dev90/terraingen/noise/surface_noise.cpp +0 -20
- terraingenpy-0.2.0.dev90/terraingen/noise/surface_noise.h +0 -21
- terraingenpy-0.2.0.dev90/terraingen/noise/validate.cpp +0 -55
- terraingenpy-0.2.0.dev90/terraingen/noise/validate.h +0 -28
- terraingenpy-0.2.0.dev90/terraingen/noise/worley.h +0 -124
- terraingenpy-0.2.0.dev90/terraingen/pipeline/body_mesh.cpp +0 -114
- terraingenpy-0.2.0.dev90/terraingen/pipeline/feature_lists.cpp +0 -276
- terraingenpy-0.2.0.dev90/terraingen/pipeline/feature_lists.h +0 -53
- terraingenpy-0.2.0.dev90/terraingen/pipeline/generator.cpp +0 -355
- terraingenpy-0.2.0.dev90/terraingen/pipeline/generator.h +0 -194
- terraingenpy-0.2.0.dev90/terraingen/pipeline/materials.cpp +0 -125
- terraingenpy-0.2.0.dev90/terraingen/pipeline/materials.h +0 -58
- terraingenpy-0.2.0.dev90/terraingen/pipeline/mesh_build.cpp +0 -256
- terraingenpy-0.2.0.dev90/terraingen/pipeline/report.cpp +0 -282
- terraingenpy-0.2.0.dev90/terraingen/pipeline/report.h +0 -112
- terraingenpy-0.2.0.dev90/terraingen/python/CMakeLists.txt +0 -62
- terraingenpy-0.2.0.dev90/terraingen/python/src/albedo.cpp +0 -456
- terraingenpy-0.2.0.dev90/terraingen/python/src/boulders.cpp +0 -578
- terraingenpy-0.2.0.dev90/terraingen/python/src/craters.cpp +0 -641
- terraingenpy-0.2.0.dev90/terraingen/python/src/layers.cpp +0 -495
- terraingenpy-0.2.0.dev90/terraingen/python/src/materials.cpp +0 -107
- terraingenpy-0.2.0.dev90/terraingen/python/src/noise.cpp +0 -374
- terraingenpy-0.2.0.dev90/terraingen/python/src/options.h +0 -335
- terraingenpy-0.2.0.dev90/terraingen/python/src/pipeline.cpp +0 -623
- terraingenpy-0.2.0.dev90/terraingen/python/src/raster.cpp +0 -288
- terraingenpy-0.2.0.dev90/terraingen/python/src/sources.cpp +0 -499
- terraingenpy-0.2.0.dev90/terraingen/python/src/tables.h +0 -82
- terraingenpy-0.2.0.dev90/terraingen/python/src/trampolines.h +0 -87
- terraingenpy-0.2.0.dev90/terraingen/python/terraingen/render.py +0 -242
- terraingenpy-0.2.0.dev90/terraingen/random/value_distribution.cpp +0 -142
- terraingenpy-0.2.0.dev90/terraingen/random/value_distribution.h +0 -98
- terraingenpy-0.2.0.dev90/terraingen/raster/cell_loops.cpp +0 -70
- terraingenpy-0.2.0.dev90/terraingen/raster/cell_loops.h +0 -172
- terraingenpy-0.2.0.dev90/terraingen/raster/geotiff/geotiff.cpp +0 -123
- terraingenpy-0.2.0.dev90/terraingen/raster/geotiff/geotiff.h +0 -181
- terraingenpy-0.2.0.dev90/terraingen/raster/geotiff/geotiff_read.cpp +0 -699
- terraingenpy-0.2.0.dev90/terraingen/raster/geotiff/geotiff_write.cpp +0 -302
- terraingenpy-0.2.0.dev90/terraingen/raster/geotiff/tiff_codecs.cpp +0 -383
- terraingenpy-0.2.0.dev90/terraingen/raster/geotiff/tiff_format.cpp +0 -135
- terraingenpy-0.2.0.dev90/terraingen/raster/geotiff/tiff_format.h +0 -171
- terraingenpy-0.2.0.dev90/terraingen/raster/grid.cpp +0 -142
- terraingenpy-0.2.0.dev90/terraingen/raster/grid.h +0 -104
- terraingenpy-0.2.0.dev90/terraingen/raster/raster.h +0 -166
- terraingenpy-0.2.0.dev90/terraingen/raster/raster_stats.h +0 -50
- terraingenpy-0.2.0.dev90/terraingen/raster/resample.cpp +0 -159
- terraingenpy-0.2.0.dev90/terraingen/raster/resample.h +0 -116
- terraingenpy-0.2.0.dev90/terraingen/raster/spectrum.cpp +0 -268
- terraingenpy-0.2.0.dev90/terraingen/raster/spectrum.h +0 -77
- terraingenpy-0.2.0.dev90/terraingen/raster/variogram.cpp +0 -81
- terraingenpy-0.2.0.dev90/terraingen/raster/variogram.h +0 -29
- terraingenpy-0.2.0.dev90/terraingen/sources/CMakeLists.txt +0 -19
- terraingenpy-0.2.0.dev90/terraingen/sources/diamond_square.cpp +0 -590
- terraingenpy-0.2.0.dev90/terraingen/sources/diamond_square.h +0 -216
- terraingenpy-0.2.0.dev90/terraingen/sources/field.cpp +0 -123
- terraingenpy-0.2.0.dev90/terraingen/sources/flat_source.cpp +0 -32
- terraingenpy-0.2.0.dev90/terraingen/sources/flat_source.h +0 -60
- terraingenpy-0.2.0.dev90/terraingen/sources/geotiff_source.cpp +0 -106
- terraingenpy-0.2.0.dev90/terraingen/sources/geotiff_source.h +0 -110
- terraingenpy-0.2.0.dev90/terraingen/sources/raster_source.cpp +0 -230
- terraingenpy-0.2.0.dev90/terraingen/sources/raster_source.h +0 -210
- terraingenpy-0.2.0.dev90/terraingen/sources/seam_field.cpp +0 -703
- terraingenpy-0.2.0.dev90/terraingen/sources/seam_field.h +0 -57
- terraingenpy-0.2.0.dev90/terraingen/sources/source.h +0 -79
- terraingenpy-0.2.0.dev90/terraingen/sources/source_chain.cpp +0 -190
- terraingenpy-0.2.0.dev90/terraingen/sources/source_chain.h +0 -144
- terraingenpy-0.2.0.dev90/terraingen/sources/synthetic_source.cpp +0 -94
- terraingenpy-0.2.0.dev90/terraingen/sources/synthetic_source.h +0 -122
- terraingenpy-0.2.0.dev90/terraingen/sources/upsampling.cpp +0 -334
- terraingenpy-0.2.0.dev90/terraingen/sources/upsampling.h +0 -247
- terraingenpy-0.2.0.dev90/terraingen/terraingen.h +0 -157
- terraingenpy-0.2.0.dev90/terraingen/util/CMakeLists.txt +0 -21
- terraingenpy-0.2.0.dev90/terraingen/util/arithmetic.h +0 -26
- terraingenpy-0.2.0.dev90/terraingen/util/bisection.h +0 -38
- terraingenpy-0.2.0.dev90/terraingen/util/bits.h +0 -31
- terraingenpy-0.2.0.dev90/terraingen/util/cells.h +0 -212
- terraingenpy-0.2.0.dev90/terraingen/util/checks.cpp +0 -48
- terraingenpy-0.2.0.dev90/terraingen/util/cube_sphere_cells.cpp +0 -394
- terraingenpy-0.2.0.dev90/terraingen/util/fft.cpp +0 -77
- terraingenpy-0.2.0.dev90/terraingen/util/files.cpp +0 -35
- terraingenpy-0.2.0.dev90/terraingen/util/files.h +0 -21
- terraingenpy-0.2.0.dev90/terraingen/util/log.cpp +0 -127
- terraingenpy-0.2.0.dev90/terraingen/util/lru_cache.h +0 -134
- terraingenpy-0.2.0.dev90/terraingen/util/planar_cells.cpp +0 -65
- terraingenpy-0.2.0.dev90/terraingen/util/portable.h +0 -57
- terraingenpy-0.2.0.dev90/terraingen/util/quadrature.h +0 -27
- terraingenpy-0.2.0.dev90/terraingen/util/radial_shape.cpp +0 -146
- terraingenpy-0.2.0.dev90/terraingen/util/span.h +0 -129
- terraingenpy-0.2.0.dev90/terraingen/util/surface.cpp +0 -336
- terraingenpy-0.2.0.dev90/terraingen/util/surface.h +0 -233
- terraingenpy-0.2.0.dev90/terraingen/util/text.cpp +0 -32
- terraingenpy-0.2.0.dev90/terraingen/util/text.h +0 -25
- terraingenpy-0.2.0.dev90/tests/CMakeLists.txt +0 -53
- terraingenpy-0.2.0.dev90/tests/benchmark/CMakeLists.txt +0 -32
- terraingenpy-0.2.0.dev90/tests/benchmark/bench_grids.cpp +0 -89
- terraingenpy-0.2.0.dev90/tests/benchmark/bench_python_subclasses.py +0 -146
- terraingenpy-0.2.0.dev90/tests/benchmark/fixtures.h +0 -44
- terraingenpy-0.2.0.dev90/tests/golden/noise/kernels_test.cpp +0 -103
- terraingenpy-0.2.0.dev90/tests/integration/build_info_stable.cmake +0 -68
- terraingenpy-0.2.0.dev90/tests/integration/package/main.cpp +0 -33
- terraingenpy-0.2.0.dev90/tests/python/CMakeLists.txt +0 -15
- terraingenpy-0.2.0.dev90/tests/python/conftest.py +0 -230
- terraingenpy-0.2.0.dev90/tests/python/test_albedo.py +0 -317
- terraingenpy-0.2.0.dev90/tests/python/test_boulders.py +0 -499
- terraingenpy-0.2.0.dev90/tests/python/test_config.py +0 -367
- terraingenpy-0.2.0.dev90/tests/python/test_craters.py +0 -635
- terraingenpy-0.2.0.dev90/tests/python/test_docs_gallery.py +0 -103
- terraingenpy-0.2.0.dev90/tests/python/test_docs_snippets.py +0 -16
- terraingenpy-0.2.0.dev90/tests/python/test_layers.py +0 -801
- terraingenpy-0.2.0.dev90/tests/python/test_noise.py +0 -265
- terraingenpy-0.2.0.dev90/tests/python/test_pipeline.py +0 -396
- terraingenpy-0.2.0.dev90/tests/python/test_raster.py +0 -256
- terraingenpy-0.2.0.dev90/tests/python/test_render.py +0 -152
- terraingenpy-0.2.0.dev90/tests/python/test_report.py +0 -107
- terraingenpy-0.2.0.dev90/tests/python/test_sources.py +0 -378
- terraingenpy-0.2.0.dev90/tests/support/apply_crater.h +0 -23
- terraingenpy-0.2.0.dev90/tests/support/referenced_source.h +0 -44
- terraingenpy-0.2.0.dev90/tests/support/resample.h +0 -46
- terraingenpy-0.2.0.dev90/tests/support/source_agreement.h +0 -48
- terraingenpy-0.2.0.dev90/tests/unit/albedo/albedo_test.cpp +0 -407
- terraingenpy-0.2.0.dev90/tests/unit/albedo/bands_test.cpp +0 -100
- terraingenpy-0.2.0.dev90/tests/unit/app/CMakeLists.txt +0 -6
- terraingenpy-0.2.0.dev90/tests/unit/app/cli_test.cpp +0 -290
- terraingenpy-0.2.0.dev90/tests/unit/app/gui/CMakeLists.txt +0 -12
- terraingenpy-0.2.0.dev90/tests/unit/app/gui/config_editor_test.cpp +0 -188
- terraingenpy-0.2.0.dev90/tests/unit/app/gui/gui_app_test.cpp +0 -174
- terraingenpy-0.2.0.dev90/tests/unit/app/gui/terrain_scene_test.cpp +0 -92
- terraingenpy-0.2.0.dev90/tests/unit/config/angles_test.cpp +0 -174
- terraingenpy-0.2.0.dev90/tests/unit/config/build_test.cpp +0 -1220
- terraingenpy-0.2.0.dev90/tests/unit/config/checks_test.cpp +0 -61
- terraingenpy-0.2.0.dev90/tests/unit/config/config_test.cpp +0 -152
- terraingenpy-0.2.0.dev90/tests/unit/config/configs.h +0 -310
- terraingenpy-0.2.0.dev90/tests/unit/config/feature_lists_test.cpp +0 -165
- terraingenpy-0.2.0.dev90/tests/unit/config/generate_from_config_test.cpp +0 -1015
- terraingenpy-0.2.0.dev90/tests/unit/config/json_io_test.cpp +0 -992
- terraingenpy-0.2.0.dev90/tests/unit/config/json_parse_errors_test.cpp +0 -173
- terraingenpy-0.2.0.dev90/tests/unit/config/json_read_test.cpp +0 -251
- terraingenpy-0.2.0.dev90/tests/unit/config/ranges_test.cpp +0 -184
- terraingenpy-0.2.0.dev90/tests/unit/config/schema_test.cpp +0 -613
- terraingenpy-0.2.0.dev90/tests/unit/config/validate_config_test.cpp +0 -1176
- terraingenpy-0.2.0.dev90/tests/unit/config/validate_sources_test.cpp +0 -399
- terraingenpy-0.2.0.dev90/tests/unit/config/write_outputs_test.cpp +0 -464
- terraingenpy-0.2.0.dev90/tests/unit/distribution/composition_test.cpp +0 -153
- terraingenpy-0.2.0.dev90/tests/unit/docs/CMakeLists.txt +0 -6
- terraingenpy-0.2.0.dev90/tests/unit/gpu/backend_test.cpp +0 -193
- terraingenpy-0.2.0.dev90/tests/unit/gpu/kernels/noise_conformance.slang +0 -63
- terraingenpy-0.2.0.dev90/tests/unit/gpu/noise_test.cpp +0 -176
- terraingenpy-0.2.0.dev90/tests/unit/gpu/vulkan_test.cpp +0 -158
- terraingenpy-0.2.0.dev90/tests/unit/layers/CMakeLists.txt +0 -64
- terraingenpy-0.2.0.dev90/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -318
- terraingenpy-0.2.0.dev90/tests/unit/layers/boulders/boulder_options_test.cpp +0 -121
- terraingenpy-0.2.0.dev90/tests/unit/layers/craters/crater_layer_test.cpp +0 -370
- terraingenpy-0.2.0.dev90/tests/unit/layers/craters/crater_test.cpp +0 -154
- terraingenpy-0.2.0.dev90/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -98
- terraingenpy-0.2.0.dev90/tests/unit/layers/craters/generation/population_test.cpp +0 -704
- terraingenpy-0.2.0.dev90/tests/unit/layers/craters/shaping/apply_test.cpp +0 -669
- terraingenpy-0.2.0.dev90/tests/unit/layers/craters/shaping/resolved_state_test.cpp +0 -276
- terraingenpy-0.2.0.dev90/tests/unit/layers/lattice_test.cpp +0 -34
- terraingenpy-0.2.0.dev90/tests/unit/layers/noise_relief_test.cpp +0 -305
- terraingenpy-0.2.0.dev90/tests/unit/layers/prefetched_ground_test.cpp +0 -151
- terraingenpy-0.2.0.dev90/tests/unit/layers/roughness_estimate_test.cpp +0 -219
- terraingenpy-0.2.0.dev90/tests/unit/layers/source_resolved_test.cpp +0 -257
- terraingenpy-0.2.0.dev90/tests/unit/layers/spectral_continuation_test.cpp +0 -248
- terraingenpy-0.2.0.dev90/tests/unit/layers/sphere_layers_test.cpp +0 -221
- terraingenpy-0.2.0.dev90/tests/unit/mesh/io/mesh_io_test.cpp +0 -222
- terraingenpy-0.2.0.dev90/tests/unit/noise/CMakeLists.txt +0 -18
- terraingenpy-0.2.0.dev90/tests/unit/noise/noise3_test.cpp +0 -293
- terraingenpy-0.2.0.dev90/tests/unit/noise/noise_layers_test.cpp +0 -129
- terraingenpy-0.2.0.dev90/tests/unit/noise/perlin_test.cpp +0 -186
- terraingenpy-0.2.0.dev90/tests/unit/noise/surface_noise_test.cpp +0 -29
- terraingenpy-0.2.0.dev90/tests/unit/noise/validate_test.cpp +0 -80
- terraingenpy-0.2.0.dev90/tests/unit/pipeline/features_test.cpp +0 -234
- terraingenpy-0.2.0.dev90/tests/unit/pipeline/generator_test.cpp +0 -596
- terraingenpy-0.2.0.dev90/tests/unit/pipeline/materials_test.cpp +0 -165
- terraingenpy-0.2.0.dev90/tests/unit/pipeline/report_test.cpp +0 -320
- terraingenpy-0.2.0.dev90/tests/unit/pipeline/terrain_windows_test.cpp +0 -281
- terraingenpy-0.2.0.dev90/tests/unit/pipeline/terrains.h +0 -61
- terraingenpy-0.2.0.dev90/tests/unit/raster/cell_loops_test.cpp +0 -152
- terraingenpy-0.2.0.dev90/tests/unit/raster/geotiff_test.cpp +0 -516
- terraingenpy-0.2.0.dev90/tests/unit/raster/raster_stats_test.cpp +0 -61
- terraingenpy-0.2.0.dev90/tests/unit/raster/raster_test.cpp +0 -88
- terraingenpy-0.2.0.dev90/tests/unit/raster/resample_test.cpp +0 -252
- terraingenpy-0.2.0.dev90/tests/unit/raster/spectrum_test.cpp +0 -178
- terraingenpy-0.2.0.dev90/tests/unit/raster/tiff_format_test.cpp +0 -144
- terraingenpy-0.2.0.dev90/tests/unit/sources/CMakeLists.txt +0 -16
- terraingenpy-0.2.0.dev90/tests/unit/sources/diamond_square_test.cpp +0 -623
- terraingenpy-0.2.0.dev90/tests/unit/sources/field_test.cpp +0 -146
- terraingenpy-0.2.0.dev90/tests/unit/sources/geotiff_source_test.cpp +0 -458
- terraingenpy-0.2.0.dev90/tests/unit/sources/raster_source_test.cpp +0 -305
- terraingenpy-0.2.0.dev90/tests/unit/sources/source_chain_test.cpp +0 -502
- terraingenpy-0.2.0.dev90/tests/unit/sources/synthetic_source_test.cpp +0 -171
- terraingenpy-0.2.0.dev90/tests/unit/sources/upsampling_test.cpp +0 -290
- terraingenpy-0.2.0.dev90/tests/unit/util/arithmetic_test.cpp +0 -25
- terraingenpy-0.2.0.dev90/tests/unit/util/bisection_test.cpp +0 -31
- terraingenpy-0.2.0.dev90/tests/unit/util/cells_test.cpp +0 -89
- terraingenpy-0.2.0.dev90/tests/unit/util/checks_test.cpp +0 -65
- terraingenpy-0.2.0.dev90/tests/unit/util/fft_test.cpp +0 -87
- terraingenpy-0.2.0.dev90/tests/unit/util/files_test.cpp +0 -32
- terraingenpy-0.2.0.dev90/tests/unit/util/lru_cache_test.cpp +0 -38
- terraingenpy-0.2.0.dev90/tests/unit/util/overloaded_test.cpp +0 -19
- terraingenpy-0.2.0.dev90/tests/unit/util/quadrature_test.cpp +0 -35
- terraingenpy-0.2.0.dev90/tests/unit/util/surface_test.cpp +0 -725
- terraingenpy-0.2.0.dev90/tests/unit/util/text_test.cpp +0 -26
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.clang-format +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.clang-tidy +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.cmake-format.yaml +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.dockerignore +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.gitattributes +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.github/pull_request_template.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.github/workflows/ci.yml +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/.gitignore +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/CITATION.cff +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/Dockerfile +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/LICENSE +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/BuildInfo.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/CoverageBadge.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/EmbedFile.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/Kernel.cpp.in +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/TerrainGenPackaging.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/terraingenConfig.cmake.in +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/benchmark.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/googletest.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/mesh_formats.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/miniz.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/nanobind.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/nvrtc.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/slang.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/volk.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/cmake/third_party/vulkan_headers.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/Makefile +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/README.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/api/cpp.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/api/python.md +0 -0
- {terraingenpy-0.2.0.dev90/docs/_src/reference → terraingenpy-0.2.0.dev111/docs/_src}/changelog.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/concepts/configuration.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/concepts/evaluation.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/concepts/gpu.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/concepts/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/concepts/layers.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/concepts/sources.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/concepts/surfaces.md +0 -0
- {terraingenpy-0.2.0.dev90/docs/_src/guides → terraingenpy-0.2.0.dev111/docs/_src}/contributing.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/base-maps.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/blast-zones.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/crater-rays.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/photometry.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/reflectance-zones.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/rocks.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/slopes.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/albedo/splotches.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/boulders/burial-and-exposure.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/boulders/fragmentation.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/boulders/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/boulders/lists-and-meshes.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/boulders/placement.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/boulders/shapes.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/boulders/size-distributions.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/ages.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/crater-lists.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/degradation.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/irregularity.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/placement-and-blending.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/populations.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/profiles.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/secondaries-and-rays.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/craters/texture-and-slopes.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/chronology.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/combining.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/equilibrium.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/production.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/sampling.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/size-frequency.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/distributions/value-distributions.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/geology/bedforms.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/geology/dunes.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/geology/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/geology/pavement.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/geology/sand.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/geology/strata.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/outputs.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/relief/index.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/relief/noise.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/relief/roughness.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/relief/spectral-continuation.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/features/relief/upsampling.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/gallery/index.md +0 -0
- {terraingenpy-0.2.0.dev90/docs/_src/guides → terraingenpy-0.2.0.dev111/docs/_src/guides/tools}/gui.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/blast_zones.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/crater_rays.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/oblique_impacts.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/reflectance_zones.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/rocks.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/slopes.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/splotches.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/albedo/synthetic_base.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/clustering.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/crater_ejecta_aging.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/crater_ejecta_coverage.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/crater_ejecta_decay.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/crater_ejecta_floor.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/crater_ejecta_profiles.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/crater_ejecta_reach.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/crater_ejecta_regolith.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/density_map.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/fillets.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_axes.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_fractures.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_fragments.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_noise.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_rounding.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_settle.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_solids.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_styles.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_variety.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/models_weathering.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/patches.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/pose_burial.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/pose_burial_by_wear.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/pose_height_ratio.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/size_distributions.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/slope_map.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/boulders/slopes.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/ages.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/aristarchus.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/blend_shapes.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/catalog_completeness.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/complex_craters.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/complex_profiles.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/copernicus.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/datum.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/datum_profiles.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/default_field.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/degradation_by_age.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/degradation_by_diffusion.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/degradation_by_freshness.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/density_map.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/density_map_areal_fraction.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/density_map_count.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/density_map_scale.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/depth_ratio.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/elongation.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/elongation_and_roughness.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/freshness_vs_diffusion.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/freshness_vs_diffusion_maps.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/interior_replacement.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/irregularity.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/irregularity_harmonics.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/irregularity_models.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/irregularity_spectral_slope.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/manual_depth.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/max_craters.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks_elongation.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks_massifs.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks_roughness.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks_seeds.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks_sharpness.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks_size.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/peaks_spread.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/populations.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/profiles.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/radial_marks.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/resolution_fade.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/rim_models.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/rim_smoothing.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/secondaries.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/secondary_shapes.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/slope_floor_offset.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/slope_hillside.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/slope_response.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/slope_upslope_rim.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/slope_wear.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/source_resolved.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/spacing_both.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/spacing_ratio.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/spacing_separation.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_arcs.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_bench_slope.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_benches.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_blocks.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_freshness.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_gaps.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_onset.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_rim_variation.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_scarps.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/terraces_seeds.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/texture_ejecta.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/texture_gullies.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/texture_mantling.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/texture_noise.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/texture_rim_noise.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/theophilus.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/craters/tycho.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/dem/craters_added.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/dem/globe.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/dem/noise_added.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/dem/upsampling.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/chronology.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/combining.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/crater_densities.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/literature_boulders.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/literature_craters.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/piecewise.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/power_laws.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/sampling.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/distributions/value_distributions.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/bedforms_ripples.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/bedforms_tars.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/dune_shapes.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/dunes_barchan_winds.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/dunes_crest_lines.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/dunes_grainflows.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/dunes_ripples.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/exposure.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/pavement.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/sand_fill.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/sand_shadows.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/geology/strata.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/layers/masked.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/layers/masked_craters_boulders.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/layers/masked_polygon.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/layers/masked_polygon_craters_boulders.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/layers/scale_and_clamp.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/outputs/materials.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/planets/ellipsoid_craters.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/planets/ellipsoid_projection.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/planets/mars_scene.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/planets/moon_scene.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/queries/rover_traverse.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_blending.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_gain.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_lacunarity.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_octaves.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_perlin.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_simplex.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_value.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_warp.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/noise_worley.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/roughness_lunar.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/spectral_continuation.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/upsampling.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/upsampling_diamond_square.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/relief/upsampling_synthetic.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gallery/sources/chain.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/gdomes_viper_rover.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/hero_mk1_sn101_connecting_ridge.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/hero_mk1_sn101_connecting_ridge_split.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/render_connecting_ridge_crater.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/images/render_connecting_ridge_ground.jpg +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/_src/reference/bibliography.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/overrides/js/katex.js +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/overrides/partials/header.html +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/overrides/partials/languages/custom.html +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/docs/requirements.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/albedo/blast_zones.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/albedo/crater_albedo.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/albedo/crater_albedo_options.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/albedo/photometry.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/albedo/slope_albedo.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/equilibrium.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/ivanov.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/minimum.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/moore.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/neukum.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/power_law.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/sp8023.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/summed.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/synthterrain.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/distribution/viper.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/gpu/backend.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/gpu/program.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/boulders/boulder_abundance.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/boulders/boulder_models.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/boulders/boulder_placer.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/ages/age_model.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/ages/freshness_ages.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/band_buckets.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/degradation/degradation_model.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/degradation/freshness_degradation.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/degradation/state.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/generation/spacing.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/profiles/complex.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/profiles/profile.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/rays.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/shaping/attributes.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/craters/shaping/morphometry.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/fade.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen/sources → terraingenpy-0.2.0.dev111/include/terraingen/layers}/field.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/ground.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/kernels/cell.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/material.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/sample_block.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/sand_shadow.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/spectral_continuation.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/layers/transforms.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/mesh/mesh.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/noise/hash.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/noise/structure_function.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/noise/value.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/pipeline/body_mesh.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/pipeline/mesh_build.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/random/philox.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/random/samplers.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/random/stream.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/random/streams.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/raster/geo_transform.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/sources/terrain_base.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/util/build_info.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/util/geometry.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/util/log.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/util/parallel.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/util/plane_fit.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/util/radial_shape.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111/include}/terraingen/util/special_functions.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/arrays.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/bindings.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/casters.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/chain_seams.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/common.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/crater_models.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/distribution.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/gpu.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/mesh.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/module.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/objects.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/random.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/report.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/src/util.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111}/python/terraingen/__init__.py +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/albedo/bands.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/albedo/photometry.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/albedo/zone_shadows.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/config/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/config/fields/checks.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/composition.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/equilibrium.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/ivanov.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/moore.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/neukum.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/production_surface.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/sp8023.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/synthterrain.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/distribution/viper.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/gpu/device.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/gpu/kernel.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/gpu/kernel.slang +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/anchored_plane.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/boulders/boulder.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/boulders/boulder_clusters.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/boulders/boulder_fragments.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/boulders/boulder_pose.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/boulders/ejecta_index.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/craters/degradation/diffusivities.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/craters/degradation/freshness_degradation.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/craters/profiles/fassett_thomson.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/craters/rays.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/craters/shaping/crater_kernel.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/fade.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/ground.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/lattice.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/material.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/sample_block.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/layers/transforms.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/mesh/polyhedra.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/noise/structure_function.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/random/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/random/samplers.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/random/stream.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/raster/geotiff/tiff_codecs.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/build_info.cpp.in +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/checks.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/cube_faces.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/fft.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/overloaded.h +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/parallel.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/plane_fit.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/special_functions.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/version.cpp +0 -0
- {terraingenpy-0.2.0.dev90/terraingen → terraingenpy-0.2.0.dev111/src}/util/version.h.in +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/benchmark/bench_boulders.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/benchmark/bench_craters.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/benchmark/bench_ground_reads.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/benchmark/bench_point_queries.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/golden/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/integration/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/integration/package/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/integration/package/test_debian_packages.cmake +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/python/test_crater_models.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/python/test_distributions.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/python/test_gpu.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/python/test_meshes.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/python/test_random.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/python/test_stubs.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/python/test_util.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/distribution/crater_references_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/layers/craters/population_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/statistical/random/random_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/boulder_records.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/gdal_fixtures.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/generate_geotiff_fixtures.py +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/geotiff_fixtures.inc +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/golombek_rapp.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/log_capture.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/lunar_craters.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/mesh_checks.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/mesh_measures.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/raster_equality.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/sfd_sampling.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/statistics.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/support/temp_path.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/albedo/blast_zones_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/albedo/photometry_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/albedo/rock_albedo_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/albedo/slope_albedo_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/albedo/splotches_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/config/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/equilibrium_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/ivanov_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/minimum_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/moore_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/neukum_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/piecewise_uniform_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/power_law_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/production_surface_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/sp8023_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/spliced_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/summed_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/synthterrain_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/tabulated_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/distribution/viper_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/anchored_plane_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/bedforms_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/boulders/boulder_list_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/boulders/ejecta_index_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/boulders/manual_boulder_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/ages/freshness_ages_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/band_buckets_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/degradation/freshness_degradation_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/generation/spacing_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/shaping/slope_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/craters/sphere_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/density_map_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/dunes_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/exposure_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/fade_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/ground_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/layer_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/masked_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/pavement_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/sample_block_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/sand_fill_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/sand_shadow_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/strata_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/layers/transforms_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/mesh/io/icq_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/mesh/mesh_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/mesh/polyhedra_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/mesh/shape_model_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/noise/fractal_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/noise/hash_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/noise/simplex_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/noise/structure_function_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/noise/value_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/noise/worley_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/pipeline/ground_reads_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/pipeline/mesh_build_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/random/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/random/philox_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/random/samplers_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/random/stream_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/random/value_distribution_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/raster/geo_transform_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/raster/grid_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/raster/variogram_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/sources/flat_source_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/sources/terrain_base_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/CMakeLists.txt +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/bits_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/geometry_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/log_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/parallel_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/plane_fit_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/radial_shape_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/span_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/special_functions_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/tests/unit/util/version_test.cpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/README.md +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/cgltf/LICENSE +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/cgltf/cgltf.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/cgltf/cgltf_write.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/miniz/LICENSE +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/miniz/miniz.c +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/miniz/miniz.h +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/nlohmann/LICENSE.MIT +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/nlohmann/json.hpp +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/tinyobjloader/LICENSE +0 -0
- {terraingenpy-0.2.0.dev90 → terraingenpy-0.2.0.dev111}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Vendored code in third_party/ directories stays byte-identical to upstream.
|
|
2
|
+
exclude: (^|/)third_party/
|
|
3
|
+
|
|
4
|
+
repos:
|
|
5
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
6
|
+
rev: v6.0.0
|
|
7
|
+
hooks:
|
|
8
|
+
- id: trailing-whitespace
|
|
9
|
+
- id: end-of-file-fixer
|
|
10
|
+
- id: check-added-large-files
|
|
11
|
+
- id: check-merge-conflict
|
|
12
|
+
- id: check-case-conflict
|
|
13
|
+
- id: mixed-line-ending
|
|
14
|
+
args: ["--fix=lf"]
|
|
15
|
+
|
|
16
|
+
- repo: https://github.com/pre-commit/mirrors-clang-format
|
|
17
|
+
rev: v22.1.8
|
|
18
|
+
hooks:
|
|
19
|
+
- id: clang-format
|
|
20
|
+
types_or: [c++, c]
|
|
21
|
+
exclude: (^|/)third_party/
|
|
22
|
+
|
|
23
|
+
- repo: https://github.com/pocc/pre-commit-hooks
|
|
24
|
+
rev: v1.3.5
|
|
25
|
+
hooks:
|
|
26
|
+
- id: cppcheck
|
|
27
|
+
exclude: (^|/)third_party/
|
|
28
|
+
additional_dependencies: ["cppcheck==1.5.1"]
|
|
29
|
+
args:
|
|
30
|
+
- "--language=c++"
|
|
31
|
+
- "--std=c++17"
|
|
32
|
+
- "--enable=warning,performance,portability"
|
|
33
|
+
- "--suppress=missingInclude"
|
|
34
|
+
- "--include=include/terraingen/util/portable.h"
|
|
35
|
+
- "-U__SLANG__"
|
|
36
|
+
- "--suppress=passedByValue:include/terraingen/noise/*"
|
|
37
|
+
- "--suppress=normalCheckLevelMaxBranches"
|
|
38
|
+
- "--suppress=floatConversionOverflow:python/src/noise.cpp"
|
|
39
|
+
- "--suppress=floatConversionOverflow:python/src/mesh.cpp"
|
|
40
|
+
- "--suppress=assignBoolToPointer:python/src/*"
|
|
41
|
+
- "--suppress=syntaxError:src/gpu/metal.cpp"
|
|
42
|
+
- "--suppress=returnByReference:include/terraingen/raster/raster.h"
|
|
43
|
+
- "--error-exitcode=1"
|
|
44
|
+
|
|
45
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
+
rev: v0.17.1
|
|
47
|
+
hooks:
|
|
48
|
+
- id: ruff-check
|
|
49
|
+
args: ["--fix"]
|
|
50
|
+
- id: ruff-format
|
|
51
|
+
|
|
52
|
+
- repo: local
|
|
53
|
+
hooks:
|
|
54
|
+
- id: license-header
|
|
55
|
+
name: license header
|
|
56
|
+
description: Source files start with the SPDX license identifier.
|
|
57
|
+
language: pygrep
|
|
58
|
+
entry: '\A(#!.*\n)?(//|#) SPDX-License-Identifier: BSD-3-Clause\n'
|
|
59
|
+
args: [--multiline, --negate]
|
|
60
|
+
files: (\.(h|cpp|slang|inc|in|py|cmake|sh)|(^|/)CMakeLists\.txt)$
|
|
61
|
+
|
|
62
|
+
- repo: https://github.com/cheshirekow/cmake-format-precommit
|
|
63
|
+
rev: v0.6.13
|
|
64
|
+
hooks:
|
|
65
|
+
- id: cmake-format
|
|
66
|
+
additional_dependencies: ["pyyaml>=5.1"]
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Batched source queries: `Source::HeightsAt(points, heights, spacing)` (Python `Source.heights_at`) gives every point's height in one call, to the bits of `HeightAt`, and point queries of a generator use it; `Source::Fill(grid, heights, spacing, threads)` (Python `Source.fill(grid, array)`) fills a caller's buffer in place.
|
|
13
|
+
- `Source::PostSpacingAt` (Python `post_spacing_at`): the spacing of the posts behind a height, measured or generated; `ResolutionAt` now gives only what measured data resolves.
|
|
14
|
+
- `ApplyLayers(generator, first, heights, options)` (Python `apply_layers`): applies a generator's layers from `first` on to heights a caller kept, so a simulation that replaces one layer re-runs only that layer and those after it.
|
|
15
|
+
- `Raster` can borrow a caller's buffer (`Raster(width, height, cells)`, `Borrows`); `FillHeights` and `Source::Fill` into a buffer now write into it with no copy.
|
|
16
|
+
- `SourceGrid(generator)`, `RasterStats::stddev`, `LocalFrame::Components`, `ForEachCell`, `GeneratedOutputs::outputGrids`, and required keys and list lengths in the configuration schema (`required`, `min_length`, `max_length`, `lengths`).
|
|
17
|
+
- `ShapeModelSource` (Python `ShapeModelSource(body, upsampler=None)`, config source `{"type": "shape_model", "upsampling": ...}`): a shape-model body's own labels refined by any upsampler, as a DEM's cells are, cubic by default. Each ICQ face is a lattice of posts in degrees, 90 / Q apart, read across its edges from the neighboring faces and blended with them within half a label of the edges, so kernel upsamplers and diamond-square leave no seams; diamond-square displaces each face differently and fits its roughness per face. Its heights are the refined radius less the body's bilinear one, 0 on every label, and layers read it as measured data (`source_resolves_px`). It needs a shape-model body.
|
|
18
|
+
- Crater replacement (`Crater::replace`, `Crater::Replace()`, `CraterList::Replace` and `AnyReplace`, config `"replace": true` on a manual crater, Python `Crater(..., replace=True)` and `CraterList.replace`): a replacing crater swaps whatever the terrain holds there, such as a crater a DEM holds blurred, for a sharp crater of its diameter and depth. It is cut into its own plane datum, fitted on a ring from where the replacement ends out `fit_width_radii` (1) radii further, so neither the old bowl nor its rim pulls it down, whatever datum and `interior_replacement` the other craters have; it replaces in full to `start_radii` (1) and blends out by `end_radii`, the profile's reach unless set (`CraterReplacement`, `CraterApplyOptions::replacement`, config `"replacement"` under `apply`, `FitReplacementDatum`, `ReplacementMargin`, `ValidateCraterReplacement`). Point queries of a replacing crater need the ground, as datums do. A replacing crater stands in for a crater the terrain held, so crater selections (`CraterSelection::Includes`) take it as generated: it gets the irregular outline, secondaries and crater albedo generated craters get, even where `manual` is off.
|
|
19
|
+
- Inherited craters (`InheritedCraters`, `CraterLayerOptions::inherited`, config `"replace_inherited_craters": {"path", "min_source_px", "max_source_px"}`, Python `InheritedCraters`): craters of a coarser level, such as a coarser run's crater list over the heights it wrote that the layer's source now upsamples, or a catalog of a DEM's craters, stamped again sharp as replacing craters with their IDs, ages and realized depths where the source resolves them (from `min_source_px`, by default the layer's `source_resolves_px`, up to `max_source_px`). Generated craters fill the gaps beneath and stop where the inherited ones stand in, so none is drawn twice. Listed rim heights are kept where the profile takes one (`TakesRimHeight`: not under a diffused or Fassett-Thomson simple profile, which tie the rim to the depth).
|
|
20
|
+
- `ReadCraterList` (`read_crater_list`): reads a crater list as `WriteCraterList` writes it, or a catalog in the same form, CSV or JSON; with attributes, its `depth_ratio` and `rim_height` become each crater's depth and rim, so a coarse run's craters read back as realized. Crater lists gain a `replace` column.
|
|
21
|
+
- Slump terraces on the walls of large craters (`CraterTerraces`, `CraterApplyOptions::terraces`, config `"terraces"` under a crater layer's `apply`, Python `CraterTerraces`): between the floor edge and the rim crest the wall steps into benches under 5 degrees and scarps near `scarp_slope_deg` (35), from 1 bench at `onset_diameter_m` (20 km, where half of fresh lunar mare craters are terraced) to `max_benches` from `full_diameter_m` (65 km). Steps split the wall's height, and each bench stands where its step keeps its mean height, so slumped blocks rise above the unterraced wall at their toes and drop below it under their headscarps, keeping the wall's volume; walls too steep for a bench keep their slope. Each scarp scallops around the rim between inward cusps and wobbles, each bench covers its own arcs of the wall, its slump blocks step in or out (`block_offset`) and some go missing (`block_gaps`), and the rim crest of a terraced crater scallops into a polygon. Terraces soften as a crater wears and are gone below `min_freshness`; the floor edge is the complex profile's floor diameter, else Pike's 0.187 D^1.249 km. Crater layers turn them on (`DefaultCraterApply`); `CraterApplyOptions{}` leaves them off.
|
|
22
|
+
- Central peaks built from massifs (`CraterPeaks`, `CraterApplyOptions::peaks`, config `"peaks"` under a crater layer's `apply`, Python `CraterPeaks`): in place of the complex profile's round dome, `min_massifs` to `max_massifs` mountains strung across the floor `spread_radii` peak radii from the center, each up to `elongation` long and strung along a chain or scattered around the center (`chain_spread_deg`), `sharpness` sharp (0 domes, 1 spires), `lopsidedness` lopsided and up to `height_variation` lower than the main one, their outlines warped (`warp`) and their slopes carved into spurs and gullies by ridged noise (`roughness`, `roughness_wavelength`). The profile's peak height and base set their size, scaled by `height_scale` and `width_scale` for peaks off the fitted laws; they lower with it as the crater wears and worn peaks lose their roughness; tabulated and diffused profiles keep the dome. Crater layers turn them on (`DefaultCraterApply`); `CraterApplyOptions{}` leaves them off. The gallery's `craters/copernicus` figure recreates Copernicus with terraces and peaks.
|
|
23
|
+
- Python `ValueDistribution.sample(u1, u2)`, `draw(stream, count=None)` (a NumPy array of `count` draws when given), `lowest()` and `highest()`, as in C++.
|
|
24
|
+
- Python bindings for `FitDeviogram` (`fit_deviogram`, `DeviogramFit`), `ValidateConfig` (`validate_config`, `ConfigSummary`; `TerrainGenConfig.validate` returns the summary), `WriteCraterList`, `WriteBoulderList` and `WriteBoulderModels` (`write_crater_list`, `write_boulder_list`, `write_boulder_models`, `ListFormat`), `FragmentBoulderShape` (`fragment_boulder_shape`, `BoulderFragment`, `BoulderCracks`), `SecondaryDensity` and `SecondaryRayField`, `DescribeCraters` (`describe_craters`, `CraterShapeModels`, `CraterModels.shape`, `CraterFeatures.attributes`) and `BlastZoneMeanShare` (`blast_zone_mean_share`).
|
|
25
|
+
- `RasterGrid::Centered(center, size, pixelSize)` and `RasterGrid::Covering(box, pixelSize)`: the north-up grid covering a box, snapped outward to whole cells as configuration outputs snap their extents (`SnappedCells`, `kGridSnapTolerance`).
|
|
26
|
+
- Seam matching for source chains (`ChainSeams`, `ChainSeamMode`, `SourceChain(sources, seams)`, `SourceChain::Seams`, `ValidateChainSeams`, `SeamReach`, `SeamLattice`, `kSeamReachDecays`; config `"seams"` on a chain source with `"mode"`, `"width_m"` and `"decay_length_m"`; Python `ChainSeams`, `ChainSeamMode`, `SourceChain(sources, seams=...)`, `validate_chain_seams`, `seam_reach`, `seam_lattice`, `SEAM_REACH_DECAYS`): where a source fills the gaps of those before it, `none` (the default) switches outright as before, `feather` adds the height difference at the nearest edge post and fades it to 0 across `width`, `height` spreads the edge's height difference into the gap by solving (Laplacian - 1/L^2) d = 0, so the later source keeps its relief and heights meet (C0), and `slope` solves (Laplacian - 1/L^2)^2 d = 0 so slopes meet as well (C1). A hole takes the whole shift; beyond a source's edge it fades out over the decay length L and is 0 from 3 L on. The correction is solved once per connected gap region, on first use, on the posts of the source before the gap, by conjugate gradients with multigrid V-cycles, and read between posts by Catmull-Rom interpolation, so points, tiles and grids agree to the bit. Chains of more sources are matched at each handover, and on a body the configuration's meters become degrees along a meridian.
|
|
27
|
+
- `ManualCrater(x, y, diameter, depth, rimHeight)` (`manual_crater`) and a `CraterList` built from a list of craters, `CraterList{a, b, c}`.
|
|
28
|
+
- `BoulderList` (Python `BoulderList`): boulders stored one column per field, as `CraterList` stores craters, built from `Boulder` records (`Append`, `BoulderList{a, b, c}`) and read back with `At`.
|
|
29
|
+
- `BuildGenerator(config, source)` (`build_generator(config, source=...)`): a configuration's layers built on a source the caller gives, such as an embedder's DEM, which they read as measured data (`source_resolves_px`, crater datums); the configuration gives no source of its own.
|
|
30
|
+
- Point queries keep fitted crater datums between calls, so craters with a datum are fitted once and later queries near them run as fast as craters without one (`BM_HeightAtDatum` about 1k to 340k point queries per second). `HeightsAt` and `HeightAt` share a cache kept per generator, matched by its surface, source and layers and dropped once one of them is freed; pass an `EvaluationCache` (`cache=` in Python) to manage one yourself.
|
|
31
|
+
- Polygon regions for masked layers (`RegionShape::Polygon(points, holes)`, Python `RegionShape.polygon(points, holes=[])`, config `"shape": {"type": "polygon", "points": [[x, y], ...], "holes": [[[x, y], ...], ...]}`): a simple polygon in surface coordinates (x east, y north; longitude and latitude on a body), concave or with holes, closed from its last point back to its first. The feather fades out from the nearest edge, holes counting as outside, and `ValidateRegionShape` rejects outlines or holes with fewer than 3 points, points that are not finite, zero-length edges (including a repeated first point) or no area. Python `RegionShape.points` and `RegionShape.holes` read them back.
|
|
32
|
+
- DEMs in longitude and latitude on a body: `GeoTiffSource` reads a GeoTIFF in a geographic CRS (crops and cell sizes in degrees), and a `RasterSource` or `GeoTiffSource` whose geographic columns span 360 degrees wraps in longitude, so a file from 0 to 360 E also serves 180 W to 0 with no seam (Python `RasterSource(..., keys=...)`). `ValidateGenerator` rejects a source in longitude and latitude on a plane and a projected source on a body.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- `TerrainGenConfig` is an opaque, immutable value: the spec structs are private, so configurations are made by `ParseConfig` and `LoadConfig` and changed in their JSON. `BuildSurface` takes a configuration, and `LayerType` and `BuildCraterModels` are no longer public.
|
|
37
|
+
- `ValidateConfig` and `BuildGenerator` are one pass that checks each part as it builds it: `ValidateConfig` builds the terrain, so it also reads what building reads, and some errors come in another order or at a finer path, such as a list of the wrong length at the list's key or a missing key reported as required.
|
|
38
|
+
- The configuration key `estimate_from_base` is `estimate_from_source`.
|
|
39
|
+
- `ResampleMethod::CatmullRom` is gone, as it was the same kernel as `Cubic`; configurations still take `"catmull_rom"`, read as `"cubic"`, and Python's `ResampleMethod.CATMULL_ROM` is gone.
|
|
40
|
+
- `EvaluateMaterials` takes a spacing and threads in place of `EvaluationOptions`, whose backend it ignored; Python's `GeneratedOutputs.placed_craters` and `placed_boulders` are gone in favor of `placed_craters` and `placed_boulders`.
|
|
41
|
+
- `Raster::IsMissing` counts infinities as missing too, and `HasData` is gone.
|
|
42
|
+
- `field.h` (`SurfaceField`, `RasterField`) moved from `sources` to `layers`; `util/arithmetic.h` merged into `util/bits.h`, and `util/fft.h` is private.
|
|
43
|
+
- Removed: `RasterSource`'s shared-raster constructor and `Options`, the thread-less `Upsampler::Fill`, `detail::MidpointRefiner`, `LayerTimer`, the `Raster` overloads of `ResolvedSpacing` and `PixelWindowsIn`, the span overload of `PlacedCraters` and `LruCache::Evictions`.
|
|
44
|
+
- A configuration with a `shape_model` body and no source starts from the shape model upsampled by cubic interpolation (`ShapeModelSource`, `EffectiveSource`), rather than from the default synthetic noise over the bilinear shape; give a source to replace it.
|
|
45
|
+
- Noise has two types instead of three: the one-fractal `NoiseLayer` struct is now the flat `Fractal`, which holds the `FractalParams` fields itself with `enabled`, `blend`, `warpAmplitude` and `warpWavelength`, and the terrain layer `NoiseRelief` (`NoiseReliefOptions`) is now `NoiseLayer` (`NoiseLayerOptions`, with `fractals`), taking a list of fractals or one. `SyntheticTerrainParams` and `ValidateSyntheticTerrain` are gone, and `SyntheticSource` takes the fractals directly (`fractals`). The stack helpers follow: `NoiseLayers` is `FractalStack`, `kMaxNoiseLayers` is `kMaxFractals`, `LayerBlend` is `FractalBlend`, and `NoiseLayersAt`, `ValidateNoiseLayer(s)` and `EvaluateNoiseLayer(s)` are `FractalStackAt`, `ValidateFractal(s)` and `EvaluateFractal(s)`. In Python, `NoiseLayer(FractalParams(...))` becomes `Fractal(...)`, `NoiseRelief([...])` becomes `NoiseLayer([...])`, and `NoiseLayer(seed=..., wavelength=..., amplitude=...)` makes a layer of one fractal. The JSON configuration is unchanged.
|
|
46
|
+
- `RegionShape::DistanceOutside` (`distance_outside`) is a signed distance: negative inside a rectangle, circle or polygon, by the distance to its nearest edge, where it was 0; outside it is unchanged. Masked layer weights and the features a region holds are unchanged.
|
|
47
|
+
- A configuration without a source starts from rolling ground rather than flat: a synthetic source of one fBm noise layer, 400 m in wavelength and 12 m in amplitude, seed 2 (`DefaultBaseNoise`), on which default craters and boulders look natural at a meter per pixel. A synthetic source without a `stack` takes the same layer; `"stack": []` gives flat ground at its elevation.
|
|
48
|
+
- `CraterApplyOptions::interiorReplacement` (`interior_replacement`) defaults to 0 rather than 1: craters cut into a datum keep the older relief on their floor and walls, and a clean cut takes `interior_replacement` 1. The default datum stays `none`, so default terrain is unchanged; the example configs that set a datum now ask for a clean cut.
|
|
49
|
+
- Every configuration key in meters ends in `_m`, as keys in degrees, pixels and Gyr already end in `_deg`, `_px` and `_gyr`: 61 keys gained it, among them `baseline_m`, `bed_thickness_m`, `core_radius_m`, `cover_thickness_m`, `crack_depth_m`, `crack_width_m`, `depth_m`, `diameter_m`, `dust_patch_m`, `edge_rounding_m`, `exposure_spacing_m`, `field_size_m`, `floor_patch_m`, `height_m`, `large_diameter_m`, `mature_depth_m`, `max_crater_diameter_m`, `max_diameter_m`, `max_lobe_length_m`, `max_lobe_width_m`, `max_range_m`, `max_scarp_length_m`, `max_scarp_width_m`, `max_step_m`, `max_thickness_m`, `max_wavelength_m`, `mid_diameter_m`, `min_crater_diameter_m`, `min_diameter_m`, `min_lobe_length_m`, `min_lobe_width_m`, `min_range_m`, `min_scarp_length_m`, `min_scarp_width_m`, `min_wavelength_m`, `min_width_m`, `octave_rms_m`, `pixel_size_m`, `plate_size_m`, `radii_m`, `radius_m`, `reference_diameter_m`, `rim_height_m`, `small_diameter_m`, `start_m`, `thickness_m`, `warp_amplitude_m`, `warp_wavelength_m`, `wavelength_m`, `width_m`, and the terrain noise `amplitude_m`, `spacing_m`, `feather_m`, `reach_m`, `offset_m` and `scale_m` where those are meters; heightmap `tile_size` is `tile_size_px`. Albedo noise layers keep `amplitude`, which is a relative contrast or degrees there, and conversion factors keep `diameter_unit` and `meters_per_unit` (unit m/unit). Python names are unchanged, as they drop `_m`.
|
|
50
|
+
- Every layer gives its resolution fade as craters and boulders do, `"fade_px": [start, end]` in output pixels and `"fade_shape"`: roughness, dune, ripple, grainflow, pavement, sand shadow, bedform and spectral continuation layers and albedo detail, crater albedo and splotches took a `"fade"` object of `start_samples`, `end_samples` and `shape`. In Python every fade is one `ResolutionFade`, `options.fade`, as in C++; `fade_px` and `fade_shape` on `CraterApplyOptions` and `BoulderLayerOptions` are gone.
|
|
51
|
+
- Layers that read the ground beneath them at many points per sample (sand fill, pavement and bedforms on an exposure field, any `FormulaLayer`) read it up front, once per block of samples, in one batched pass through the layers beneath (`MapReadingGround`, `PrefetchedGround`), rather than evaluating the whole stack beneath once per point read; stacked ground-reading layers no longer multiply each other's cost. Heights are unchanged to the bit, on grids and at points (`BM_EvaluateGroundReaders`).
|
|
52
|
+
- `SandFillLayer::ThicknessAt(x, y, spacing, ground)` takes the ground last, as `SandShadowLayer::ThicknessAt` and the other point queries do (it took it first).
|
|
53
|
+
- Worn craters round out and lower their ejecta as they wear: a crater keeps its rough rim wobble in proportion to its current over its fresh rim height, each harmonic of order k by that share to the power k / 2, so worn rims lose their short wiggles first rather than showing them as lumps along a rounded rim (`KernelWornOutlineShare`; as diffusion already blurred them); and Martin, Parkes and Dunstan ejecta thickness scales with the rim height, so worn craters no longer dip below the ground in a moat outside the rim.
|
|
54
|
+
- `FassettThomsonProfile` exteriors are tapered as Martin, Parkes and Dunstan's are, by 1 - u^2 from where the exterior starts to 1.5 radii, so their slope also falls to 0 at the reach rather than the crater being cut off while still sloping (`FassettThomsonExterior`); every Fassett and Thomson crater's exterior changes, its rim join does not.
|
|
55
|
+
- `MartinParkesDunstanProfile` craters join the ground without slope breaks: the ejecta outside the rim is tapered by 1 - x^2 (x the distance beyond the rim in radii), so its slope falls to 0 at the 2 R reach rather than the profile being cut off while still sloping, and a worn crater's rounded rim is a cubic matching the ejecta's height and slope where they meet, which kinked before (`MartinParkesDunstanExterior`). In hillshades the rings at the rim join and at 2 R are gone. Every Martin, Parkes and Dunstan crater's exterior changes; its crest, rim height and interior do not.
|
|
56
|
+
- Every height and albedo layer takes a `TerrainBase{surface, source}` (Python `TerrainBase`, `base=`) as its last argument in place of separate surface and source arguments, so one base built for a terrain is passed to each of its layers; a `Surface` or a source alone converts to one. `CraterLayerOptions::surface` is gone (the crater layer takes its surface from the base), `NoiseRelief` and `SyntheticAlbedo` measure noise from the base source's reference point in place of an `origin` argument, and `NoiseRelief` takes `NoiseReliefOptions{layers, sourceResolvesPixels}` (`Options()` replaces `Layers()` and `SourceResolvesPixels()`). `SecondaryCraterLayer` rejects a base on another surface than its primaries'.
|
|
57
|
+
- Layers on `FormulaLayer` (roughness, bedforms, dunes, strata, pavement, sand fill, function layers) report their surface (`Layer::LayerSurface`, Python `layer_surface`), so `ValidateGenerator` rejects them on another surface than the terrain's; scale and clamp layers work on any.
|
|
58
|
+
- Python `BoulderLayerOptions` nests its parts as the C++ struct does: `sizes` (`BoulderSizes`: `coverage`, `q_constant`, `q_coverage_coefficient`, `distribution`, `min_diameter`, `max_diameter`), `bedrock` (`BoulderBedrock`: `exposure`, `abundance`, `mean_size`), `pose` (`BoulderPose`) and `rendering` (`BoulderRendering`: `relief`, `model_threshold`, `relief_range`, `shapes`, `shape_prototypes`), which were flat properties named for the configuration keys (`coverage`, `qa`, `qb`, `bedrock_abundance`, `min_burial`, `relief`, ...); `cache_boulders` is bound. Configurations keep their flat keys.
|
|
59
|
+
- `BoulderModelThreshold::minSamples` and `maxSamples` are `minPixels` and `maxPixels`; Python and configurations name them `min_px` and `max_px`.
|
|
60
|
+
- `DuneOptions::ripples` and `grainflows` are optional, unset for none (Python `None`); they were on with a 0 `wavelength` or `cover` meaning none. `DuneRipples` defaults to the 2.1 m, 0.2 m large ripples of Mars's Bagnold dunes and requires a positive wavelength, and `DuneGrainflows` defaults to a `cover` of 1. Configurations give ripples and grainflows as before.
|
|
61
|
+
- `Crater::depth` and `rimHeight` are `std::optional<double>`, unset where the models give them (they were NaN); Python `Crater.depth` and `rim_height` are `None` when unset. `CraterList` columns keep NaN for unset values.
|
|
62
|
+
- A crater layer's `ages` (`CraterLayerSpec::ages`) is optional: unset gives steady-state ages on the production surface and equilibrium its density is the minimum of (`config::LayerAges`, `config::MatchingAges`), so a density capped by Trask no longer needs its ages repeated. The default ages were always Hartmann, which made any Trask-capped density without ages fail validation.
|
|
63
|
+
- Size-frequency constructors take the data, then the kind, then the range: `LogPolynomialSfd(coefficients, kind, range, ...)` (was range before kind; Python `LogPolynomialSfd(coefficients, kind, min_diameter, max_diameter)`). `SplicedSfd(pieces, maxDiameter, tolerance)` and `PiecewisePowerLawSfd(segments, kind, maxDiameter, joins)` are valid from their first piece's start, so they take only the largest diameter (they took a `DiameterRange` whose minimum had to repeat it); `SfdJoins{allowDiscontinuities, tolerance}` (Python `SfdJoins`, `joins=`) replaces the bare `bool` and tolerance.
|
|
64
|
+
- `SyntheticAlbedoOptions::hue` and `hueNoise` are `hueDegrees` and `hueNoiseDegrees`, as `SyntheticAlbedoSpec`'s are; Python and configuration keys keep `hue_deg` and `hue_noise_deg`, as does `hsv_to_rgb(hue_deg, ...)`.
|
|
65
|
+
- Rough crater rims fade toward a round floor: the profile follows an outline's rough wobble less the nearer it is read to the center, none there and all of it at the rim, each harmonic of order k by the share to the power k / 2 so short wiggles stay near the rim (`KernelOutlineScaleAt`, `KernelOutlineShare`). At high roughness, rim kinks no longer run as straight radial seams through the wall to the center; every irregular crater's inner wall changes, its rim and outline do not.
|
|
66
|
+
- A crater layer given no profile, under a degradation that requires none, shapes its craters with Martin, Parkes and Dunstan's profile (`MatchedProfile`), as `DefaultCraterModels` and configurations do; it threw before.
|
|
67
|
+
- Python option fields are named for their C++ members with a `_m` unit suffix dropped (`min_diameter`, `ground_spacing`). Angles and sample counts keep the configuration's `_deg` and `_px` (`yaw_deg`, `max_slope_deg`, `source_resolves_px`), as placed boulders, outlines and other records do, where C++ spells them `Degrees` and `Pixels`.
|
|
68
|
+
- Public angles are in degrees, named for it, matching the configuration's `*_deg` keys: `CraterIrregularity::headingDegrees` and `headingSpreadDegrees`, `CraterSlopeResponse::fullSlopeDegrees`, `ObliqueImpacts::headingDegrees`, `BoulderPose::maxLeanDegrees`, `maxTiltDegrees` and `maxSlopeDegrees`, `BoulderVentifacts::windAzimuthDegrees`, `minAngleDegrees`, `maxAngleDegrees` and `secondWindAzimuthDegrees`, `DuneOptions::windAzimuthDegrees`, `azimuthSpreadDegrees`, `slipFaceAngleDegrees`, `stossSlopeDegrees` and `flankSlopeDegrees`, `PavementOptions::maxTiltDegrees`, `StrataOptions::dipDegrees` and `dipAzimuthDegrees`, `SandShadowOptions::windAzimuthDegrees` and `flankAngleDegrees`, and `BedformOptions::windAzimuthDegrees` and `azimuthSpreadDegrees` (all were radians). Placed boulders and other outputs keep radians.
|
|
69
|
+
- Names that clashed with others: `BoulderClusters::spacing` is `centerSpacing` (key `center_spacing_m`), `DuneOptions::spacing` is `latticeSpacing` (key `lattice_spacing_m`, was `spacing`), `BoulderRendering::models` is `modelThreshold` (key `model_threshold`) and `BoulderReliefRange::models` is `includeModels` (key `include_models`).
|
|
70
|
+
- `SyntheticSource` takes its `pixelSize` in meters on a body too, as `FlatSource` does (it took the surface's units, degrees on a body).
|
|
71
|
+
- `ValidateGenerator`, and so every evaluation, rejects a layer built for another surface than the terrain's (`Layer::LayerSurface`) and a layer whose inputs, such as a boulder layer's crater layers or a sand shadow layer's boulder layer, are missing from the terrain's layers or come after it (`Layer::Dependencies`).
|
|
72
|
+
- `LoadConfig` remembers the configuration's folder in `TerrainGenConfig::directory`, which `ValidateConfig`, `BuildGenerator`, `BuildAlbedo` and `GenerateFromConfig` resolve relative paths against when given no folder (`ConfigDirectory`).
|
|
73
|
+
- `WriteGeoTiff(path, raster, generator)` writes in the terrain's projection (`TerrainGeoKeys`), and `WriteMesh(path, mesh)` writes a `TriangleMesh` alone.
|
|
74
|
+
- `ManualBoulder` is built by name: `ManualBoulder(x, y, diameter)` with chainable setters (`.Height(1.1).Burial(0.2).YawDegrees(30.0).Rest(BoulderRest::Side)`), every field it leaves to be drawn a `std::optional` instead of NaN (and `id` instead of 0), its angles in degrees (`yawDegrees`, `leanDegrees`, `tiltDegrees`, `tiltAzimuthDegrees`, as the configuration's `*_deg` keys), and a new `model` that makes it a 3D model, or keeps it relief, whatever the layer's size threshold.
|
|
75
|
+
- `ManualCrater(x, y, diameter)` takes no depth or rim height, whose position clashed with `Crater{x, y, diameter, ageGyr}`; set them, and the age, by name with `Crater`'s chainable `.AgeGyr()`, `.Depth()` and `.RimHeight()` (Python `manual_crater(x, y, diameter)`, then its attributes).
|
|
76
|
+
- Named construction: `ValueDistribution::Constant`, `Uniform`, `Normal`, `LogNormal`, `Piecewise` and `.Clamped(min, max)` (Python `ValueDistribution.normal(...)` and so on), `EvaluationOptions{}.Spacing(s).Threads(n).On(backend)`, `NoiseLayer::Fbm(seed, wavelength, amplitude)`, and `NoiseRelief(NoiseLayer)` for one layer.
|
|
77
|
+
- Off and unset are `std::optional` where a sentinel stood for them: `BoulderLayerOptions::fragmentation` is optional (none break unset; was off until `splitWear` dropped below 1, `BoulderFragmentation::Enabled` is gone, and `splitWear` defaults to 0.5); `BoulderEjecta::minCraterDiameter` is optional (was 0 for none) and `MinCraterDiameter()` is `ThrowingDiameter()`, unset when no crater throws blocks; `CraterGenerationOptions::maxCraters` and the configuration's `max_craters` are optional (was 0 for no cap); `ComplexCraterShape::peakFitMaxDiameter` is optional (was 0 for every size).
|
|
78
|
+
- Crater shaping seeds (`irregularity`, `noise`, `texture` and `slope`) are optional and, unset, follow the crater layer's `seed` (`SeededCraterApply`), so a new layer seed reshapes the outlines, noise, texture and floor offsets too; they were 0 whatever the layer's seed. Craters with these features on change unless their seeds are set.
|
|
79
|
+
- `CraterSlopeResponse::enabled` is `asymmetric` (configuration key `asymmetric`, Python `asymmetric`), as it turns on only the asymmetry: the wear `criticalGradient` gives applies either way.
|
|
80
|
+
- Settings that would be lost are rejected instead: `BoulderLayer::Manual` (Python `BoulderLayer.manual`) throws for options whose `manual` is not empty, which it replaced; `BuildBoulderOptions` throws for a `BoulderLayerSpec` whose `boulders.sizes.distribution` or `boulders.ejecta.distribution` is not the default, which `sizes` and `ejecta_sizes` replaced; and a raster source spec's `read.upsampler`, which `upsampling` replaced, must stay unset.
|
|
81
|
+
- Crater ages and surfaces are given once: a crater layer whose `CraterModels::ages` is null draws the ages its degradation wears by (`DegradationModel::AgeModel`, `FreshnessDegradation`'s), `EquilibriumSurface{production, equilibrium, ageGyr, chronology}` (Python `EquilibriumSurface`) gives a surface's `Density()` and steady-state `Ages()` from one set of models, `EquilibriumDiffusionAges(profile, fresh, steadyAges)` and `MatchedDiffusionDegradation` match diffusion to steady-state ages in one call, and a configuration whose steady-state ages name another production function, chronology, age or equilibrium than its density's production surface and equilibrium is rejected at `ages`.
|
|
82
|
+
- `SecondaryCraterLayer(primaries, options)` (Python `SecondaryCraterLayer(primaries, options)`) shapes secondaries as the primaries are, and a secondary layer on primaries following a density map throws unless its options are among the primaries' `CraterLayerOptions::secondaries`, which the map counts.
|
|
83
|
+
- Crater layers built in code default as a configuration's do: `DefaultCraterModels()` (`default_crater_models`) gives the configuration's default density, ages, profile and degradation, `CraterLayerOptions` generates from 2.5 m (was 4 m) and shapes with `DefaultCraterApply()` (irregular outlines on, as configurations always had; it moves from `config.h` to `shaping/apply_options.h`), and `CraterLayer`'s models default to `DefaultCraterModels()`. The density and ages may be null for a layer that generates no craters.
|
|
84
|
+
- Roughness, bedform, dune and boulder options built in code default as a configuration's do: roughness octaves up to 16 m (was 4 m), bedforms 4 m apart, 0.4 m high over 90% of the ground (were 1 m, 0.1 m and none), barchans 50 m wide from 15 m in 129 m cells (were 400 m, 200 m and 800 m), and boulder sizes between craters and around them from the nominal SP-8023 intercrater blocks up to their largest, about 5.86 m (`DefaultBoulderSizes`; were Golombek-Rapp sizes up to 4 m). `DefaultBoulders`, `DefaultRoughness`, `DefaultBedforms` and `DefaultDunes` are gone; `PlaceBoulderModel` settles by default, as the layer does.
|
|
85
|
+
- The Golombek-Rapp terms `BoulderSizes::coverage`, `qConstant`, `qCoverageCoefficient` and `BoulderEjecta::coverage` are optional (`Coverage()`, `QConstant()`, `QCoverageCoefficient()` give them or their defaults), and `ValidateBoulderLayerOptions` rejects one set beside the size distribution that leaves it unused; Golombek-Rapp sizes need `sizes.distribution` (Python `distribution`) set to null, which Python now accepts.
|
|
86
|
+
- `CraterLayer::Manual(craters, models, apply, surface)` (Python `CraterLayer.manual(craters, models=None, apply=None)`) takes its craters first, with the models defaulting to `DefaultCraterModels()` and the shaping to `DefaultCraterApply()`.
|
|
87
|
+
- Crater layers take their profile from a degradation model that requires one (`DegradationModel::RequiredProfile`, `MatchedProfile`): `DiffusionDegradation` gives its `DiffusedProfile`, so `CraterModels::profile` (Python `profile=`) may be left null, and a different profile is rejected. The diffusion terrains of the `craters_degradation` and `ages_models` examples were shaped with the plain Fassett-Thomson profile and now are diffused.
|
|
88
|
+
- `BuildAlbedo` throws a `ConfigError` naming the layer when the generator's layers are not the ones the configuration builds, as after changing a built generator, instead of reading past them.
|
|
89
|
+
- Albedo noise layers in a configuration must give their `amplitude`; unset it was 100, which saturated the albedo.
|
|
90
|
+
- `BoulderFeatures::boulders`, `BoulderLayer::Boulders` and `WriteBoulderList` hold or take a `BoulderList` instead of `std::vector<Boulder>`; Python `BoulderLayer.boulders(region)` returns a `BoulderList` like C++ (its `.table` gives the NumPy columns it returned before).
|
|
91
|
+
- `NoiseRelief` takes its noise layers as `std::vector<NoiseLayer>` and returns them from `Layers()`, as the Python binding always did (it took `SyntheticTerrainParams` and had `Params()`).
|
|
92
|
+
- Python `RasterGrid.centered(center, size, pixel_size)` takes the C++ arguments, a center and a size in world units, instead of cell counts (`centered(width, height, pixel_size, center)`).
|
|
93
|
+
- `config::SnappedGrid`, `config::SnappedCells` and `config::kExtentSnapTolerance` give way to `RasterGrid::Covering`, `SnappedCells` and `kGridSnapTolerance` in `raster/grid.h`.
|
|
94
|
+
|
|
95
|
+
- Point queries on a body find the cells around them directly from the neighbors of the cell holding the point, instead of sampling the region: about 1.8x faster on a sphere, within 1.2x of a plane.
|
|
96
|
+
- Generated cells keep their craters indexed by y, so a point query visits only the craters in its rows instead of copying every crater of the cells around it: point queries about 2x faster on a plane and 1.5x on a sphere.
|
|
97
|
+
|
|
98
|
+
- `terraingen schema` prints the configuration schema (`ConfigSchema`); the catalog of types with their defaults stays available as Python `config_catalog()`.
|
|
99
|
+
- Every number in a configuration must be finite, and such errors name the number itself, such as `layers[1].manual[0].x`.
|
|
100
|
+
- `terraingen/config/report.h` is now `terraingen/pipeline/report.h`; `WriteCraterList`, `WriteBoulderList`, `WriteBoulderModels` and `ListFormat` move to `terraingen/pipeline/feature_lists.h`, and `PlacedCraters` and `PlacedBoulders` to `terraingen/pipeline/generator.h` (`pipeline/features.h` is gone).
|
|
101
|
+
- C++ renames: `NoiseLayerConfig` to `NoiseStackLayerSpec`, `SyntheticAlbedoSpec::Params` to `Options`, `estimateFromBase` to `estimateFromSource` and the config key `estimate_from_base` to `estimate_from_source`; `CheckConfigRanges` and `ValidateAlbedo` move into `terraingen::config`.
|
|
102
|
+
- `TerrainGenConfig` compares equal when its JSON does; the nested specs no longer have `operator==`.
|
|
103
|
+
- Headers moved: `sources/synthetic_terrain.h` into `sources/synthetic_source.h`; `layers/bisection.h` to `util/bisection.h`; `Plane` and `PlaneFit` to `util/plane_fit.h`; the power spectrum fit (`EstimatePowerLawSpectrum`, `PowerLawSpectrum`) to `raster/spectrum.h`; the Perlin structure functions to `noise/structure_function.h`; `NoiseLayersAt` to `noise/surface_noise.h`; the crater albedo options to `albedo/crater_albedo_options.h`; `CutAtPlane` (was boulder-internal) to `mesh/mesh.h`; crater `ages/freshness.h` to `ages/freshness_ages.h`, `degradation/freshness.h` to `degradation/freshness_degradation.h` and `shaping/explicit_state.h` to `shaping/resolved_state.h`.
|
|
104
|
+
- Crater profiles (Fassett and Thomson, Martin-Parkes-Dunstan, complex, diffused) evaluate the same float formulas on the CPU as on the GPU, so their heights match the kernel; `FassettThomsonProfile::Rim` and `DiffusedProfile::Cells` give way to `Kernel()`.
|
|
105
|
+
- Crater outlines (`CraterOutline::Scale`, `MarkShift`, `CraterProfileDistance`), diffused morphometry and the kilometer power laws (`KilometerPowerLaw::At`) evaluate the crater kernel's float formulas on the CPU too, so no double twin remains; `KernelOutline` holds an outline in the kernel's form for many points. Outline distances, fresh complex and Martian morphometry and diffusion depths change at float rounding.
|
|
106
|
+
- Crater datums without a ground sampler read the raster with `SampleRaster`; bedforms place their fields on the surface cells (`MakeCells`) on planes and bodies alike; spectral continuation impulses draw from lattice streams. These change generated heights slightly.
|
|
107
|
+
- `ValidateNoiseLayers` (`validate_noise_layers`) checks a noise stack for synthetic sources, noise relief and synthetic albedo alike.
|
|
108
|
+
- A default `SyntheticTerrainParams` holds no layers and is flat, matching an empty `stack` in a configuration (it held one Perlin fBm layer); `ValidateSyntheticTerrain` accepts an empty stack, and only `NoiseRelief` still needs a layer.
|
|
109
|
+
- Raster albedo measures the map's roughness and Hurst exponent with the raster variogram fit, and crater zones and splotches share one overlay of changes; albedo detail, zone and splotch values change slightly, and swarm splotches, crater zones and the crater albedo grid split into shorter steps.
|
|
110
|
+
- Crater and boulder list outputs ending in `.json` in any case (`.JSON`) are written as JSON.
|
|
111
|
+
- `EstimatePowerLawSpectrum` (`estimate_power_law_spectrum`) reports when it clamps the fitted slope to [2, 4] (`PowerLawSpectrum::clipped`, Python `PowerLawSpectrum.clipped`). The range stays [2, 4], Hurst exponents 0 to 1 by beta = 2 H + 2: the window is already detrended by its plane and Hann-tapered, and steeper fits come from windows a few large craters dominate or from smoothed gridded DEMs, not from relief a continuation should carry on.
|
|
112
|
+
|
|
113
|
+
### Removed
|
|
114
|
+
|
|
115
|
+
- `examples/` (the JSON configurations, C++ programs and Python scripts), the `TERRAINGEN_BUILD_EXAMPLES` option, the example tests and the example configurations installed with the Python wheel; the documentation's gallery and tested snippets show the library instead.
|
|
116
|
+
- APIs the library itself never used, in C++ and Python alike: `GaussianBlur` (`gaussian_blur`), `Resample` and `ResampleTo` (`resample`, `resample_to`), `SampleTruncatedPowerLaw`, `SampleExponential`, `SampleNormal` and `TabulatedDistribution`, `RandomStream::NextFloat` and `NextDoubleOpenBelow`, the mesh `Volume`, `SurfaceArea` and `Transformed` (`volume`, `surface_area`, `transformed`), `Icosphere` (`icosphere`; subdivide the icosahedron base solid onto the unit sphere instead), and the `WriteGeoTiff` overload taking band pointers.
|
|
117
|
+
- C++ declarations only tests used: `ResampleWindow`, `SampleRasterWindow`, `SampleAtCenters`, `RequireIncreasing`, `ResolveThreads`, `StandardErrorLogSink`, `Variogram`, `LruCache::Capacity`, the `PixelWindowIn` overload taking a raster, `kSqrt2`, `kEulerGamma` and `TERRAINGEN_VERSION_STRING`; `KernelWeight`, `ParseGdalBandScaling`, `RotationQuaternion` and `GeoKeys::ShortKey` (now `ShortGeoKey`) moved to `detail`.
|
|
118
|
+
- `DescribeSource` and Python `TerrainGenConfig.source_grid` (use `ValidateConfig(...).source`), `LayerAt` and `LayerTimer::Callback`.
|
|
119
|
+
- `OpticalMaturityOrigin` (Python `OpticalMaturityOrigin`): its reflectance is now `kOpticalMaturityOriginReflectance` (`OPTICAL_MATURITY_ORIGIN_REFLECTANCE`, 0.08) and its ratio had no use left.
|
|
120
|
+
- `FillSyntheticTerrain` and `GenerateSyntheticTerrain` (`fill_synthetic_terrain`, `generate_synthetic_terrain`; use `SyntheticSource(params).Fill`), `OpticalMaturity`, `SyntheticSource::Elevation`, `KernelUpsampler::Method`, `GolombekRappSfd::Coverage` and `Q`, `BlastZoneAlbedo::Zones`, `DiamondSquareUpsampler::Levels`, `RasterPosts::Window` and `Placement`, `GeoTiffSource::Scaling`.
|
|
121
|
+
- `UnresolvedCraterLimit` (`unresolved_crater_limit`; use `SourceResolvedLimit`), `CraterBlend::Weight`, `RimSmoothing::Weight`, `EjectaThicknessShare`, `CraterLayer::Attributes` and `SecondaryCraterLayer::Attributes`, `ApplyCraterTo`, `CraterCellCache::Size` and `Evictions`, `SecondaryDensity::Diameter`.
|
|
122
|
+
- `AddBoulder`, `BoulderLayer::DensityAt`, `BoulderMesh`, `BandFrequencies`, `EdgeDistanceAt`, `ReliefAt`, `BedPositionAt`; `DomeHeight`, `NormalizedBoulderShape`, `TargetPsd`, `TerracedAt`, `EstimateBaseRoughness`, `RadialPowerSpectrum` and the five boulder sub-validators are internal.
|
|
123
|
+
|
|
124
|
+
### Fixed
|
|
125
|
+
|
|
126
|
+
- Boulder fillets no longer leave a level bench where they meet the boulder: the fillet stood at its full height all the way in to the boulder's radius, so between there and where the rock rose above it the heights were flat. It now meets the rock where the rock stands as high as the fillet (`FilletContact`; on an uncut dome `DomeFilletContact`, `sqrt(1 - height_share^2)` radii out), in every direction around shapes and models, and along each direction on domes cut by ventifact facets, and gives way to the rock inside. `FilletHeight` (Python `fillet_height`) is 0 within the contact and takes the contact as an optional fourth argument; Python adds `FilletContact` and `dome_fillet_contact`.
|
|
127
|
+
- Boulder layers measure unresolved cover, and rock albedo shades, at spacings where the fade reaches the largest boulder: `ForEachLogSimpsonNode` ends exactly at its bounds, so a size distribution is no longer evaluated just past its largest diameter (default boulders threw at 2 m spacing).
|
|
128
|
+
- `DiamondSquareUpsampler` no longer roughens a DEM's plains with the relief of its craters and massifs. Its roughness was the RMS of each post minus the mean of its neighbors over one 512 x 512 sample from the middle of the posts, so a few large features set it, and for a global DEM the sample was far from the area refined: on LOLA LDEM_8 around Copernicus it fitted a 166 m scale from far-side highlands and added 10 to 15 degree slopes across the mare at 500 m. An unset scale is now fitted window by window (`DiamondSquareOptions::fitWindow`, config `"fit_window_px"`, Python `fit_window`; 32 posts, centered every 16, each node's scale bilinear between the windows around it), so each region's detail follows its own roughness (about 6 to 15 m on the mare there, 90 m on the crater), as Rosenburg et al. (2011) map lunar roughness in overlapping windows; `fitWindow` 0 fits one scale as before. Scales and fractal dimensions are estimated by medians rather than RMS (`EstimateMidpointRoughness`, new `EstimateMidpointScale`, Python `estimate_midpoint_scale`): 1.4826 times the median absolute residual, which is the RMS for Gaussian relief, and the slope of the median absolute height differences at lags of 1 to 8 posts. A fitted upsampler with a windowed scale leaves `Options().scale` unset, and one given a fractal dimension needs no `FitTo`; points, tiles and grids still agree to the bit.
|
|
129
|
+
|
|
130
|
+
## [0.2.0] - 2026-10-23
|
|
131
|
+
|
|
132
|
+
Sources replace the base: DEMs are upsampled rather than resampled, synthetic sources generate heights from noise, and layers leave out what the source already resolves. Outputs set their own pixel size and extent, `GenerateFromConfig` returns everything it computes, and the core types are renamed. Configurations and code written for 0.1.0 need the changes under [Migrating from 0.1.0](#migrating-from-010).
|
|
133
|
+
|
|
134
|
+
### Added
|
|
135
|
+
|
|
136
|
+
- Sources in configurations (`source`) of type `raster`, `chain` or `synthetic`; without one the terrain starts from a flat synthetic source at 0 m.
|
|
137
|
+
- `SyntheticSource` (source `synthetic`): heights from a noise stack plus `elevation_m` over an unbounded plane or the whole body, evaluated at every point, or sampled at posts `pixel_size_m` apart and upsampled like a DEM; an empty stack is flat.
|
|
138
|
+
- `RasterSource`, heights from a raster in memory, shared rather than copied and upsampled as a GeoTIFF source is; `GeoTiffSource` is a `RasterSource` of its band.
|
|
139
|
+
- Upsampling on sources (`Upsampler`, config `upsampling`): how a source's posts become heights between them and at any finer sample spacing, deterministically, so points and grids at one spacing agree; kernels `nearest`, `bilinear`, `cubic` (the default), `catmull_rom`, `lanczos3` and `cubic_bspline`.
|
|
140
|
+
- Diamond-square upsampling (`DiamondSquareUpsampler`, `"upsampling": {"type": "diamond_square"}`): random midpoint displacement of a source's posts to finer spacings, as PANGU expands DEMs (Martin et al. 2014), keeping every coarser node, with bilinear or Catmull-Rom (`interp`) refinement and the scale and fractal dimension estimated from the posts when not given.
|
|
141
|
+
- `RegisterUpsampler` (Python `register_upsampler`) names upsampler types of your own, C++ or Python subclasses of `Upsampler`, for configurations to use with their settings.
|
|
142
|
+
- Windowed GeoTIFF reads that decode only the strips or tiles a window meets, and `crop` (`min_x`, `min_y`, `max_x`, `max_y` in CRS units) on raster sources to read only the window needed while giving the same heights there as the whole file.
|
|
143
|
+
- `effective_pixel_size_m` on raster sources (`effectivePixelSize`), the cell size a DEM upsampled or smoothed before it was saved truly resolves.
|
|
144
|
+
- `Source::ResolutionAt`, the cell size of the data behind each height, and `UnresolvedCraterLimit`, a completeness limit that leaves the craters a DEM already resolves to it; `MinimumField` combines it with a catalog's limit.
|
|
145
|
+
- `source_resolves_px` on craters, secondaries, boulders, noise, dunes and bedforms: features at least that many source cells across, by diameter, wavelength or dune width, are already in the source, so only smaller ones are added at each point, each raster of a chain giving its own limit; ignored on synthetic sources, `null` adds them all. In C++ `sourceResolvesPixels` on the layer options, applied when the layer is given its `source`, with `SourceResolvedLimit` and `LayerResolvedLimit` (Python `source_resolved_limit`).
|
|
146
|
+
- Spectral continuation layer (`spectral_continuation`, `SpectralContinuationLayer`): detail finer than a DEM that continues its fitted power-law spectrum to shorter wavelengths as sparse Gabor noise, tapered in at the DEM's Nyquist wavelength so resolved scales gain nothing, with grids and points in agreement.
|
|
147
|
+
- Roughness and noise layers that estimate their settings from the source with `estimate_from_source`: the Hurst exponent and RMS height difference of its variogram, extrapolated to the roughness baseline or matched at each noise layer's wavelength; explicit values override the estimates. The estimators are public: `EstimateSourceRoughness`, `EstimateBaseRoughness`, `EstimatePowerLawSpectrum`, `RadialPowerSpectrum`, `EstimateMidpointRoughness` and `raster/variogram.h` (Python `estimate_source_roughness` and the rest).
|
|
148
|
+
- Lanczos (three lobes), Catmull-Rom and cubic B-spline kernels for `Resample`, `SampleRaster` and `ResampleMethod`.
|
|
149
|
+
- Output areas: `pixel_size_m` and `extent_m` (`extent_deg` on a body) as `{"center": [x, y], "size": [w, h]}` or `{"min": [x, y], "max": [x, y]}`, defaulting to a raster or chain source's extent and cell size; the grid starts at the extent's min corner, is snapped outward to whole cells and sampled at cell centers (`OutputAreaSpec`, `ExtentSpec`, `config::SnappedGrid`).
|
|
150
|
+
- Optional output paths: without a `path` the result is returned and nothing is written. `GenerateFromConfig` returns everything the outputs ask for, each computed once: `GeneratedGrid` holds the grid, heights, albedo, materials, photometry, placed craters and boulders and terrain mesh, `GeneratedOutputs` the body mesh or ICQ model, the report, `Grid()` and `Find()`; Python `GeneratedGrid` values are views without a copy.
|
|
151
|
+
- `terrain_mesh` outputs take `cutouts` (`{"min": [x, y], "max": [x, y]}` boxes), a `skirt_m` and a frame `site_deg` as [lon, lat].
|
|
152
|
+
- Terrain reports: output type `report` (`ReportOutput`) with an optional `path`, returned as `GeneratedOutputs::report` and written as JSON by `WriteOutputs`; per grid (`GridReport`) height and slope statistics, craters per power-of-2 diameter bin against the first crater layer's density and boulder counts and cover, with per-layer timings, backend, threads, layer seeds and version (`ReportGrid`, `ReportToJson`, `TerrainReport`, `LayerTimer`; Python `report_grid`, `report_to_json`, `TerrainReport.to_dict`).
|
|
153
|
+
- `GetMeshSize` and `FillMesh` (Python `get_mesh_size`, `fill_mesh`) size and write a height mesh into caller buffers laid out as Chrono's ChVector3d and ChVector3i arrays or NumPy (N, 3) float64 and (M, 3) int32 arrays, with no copy; `FillHeights` (Python `fill_heights`) evaluates into a caller buffer; `TriangleMesh.positions` and `TriangleMesh.triangles` are NumPy views without a copy.
|
|
154
|
+
- Piecewise uniform size-frequency distributions (`piecewise_uniform`): counts per diameter band, given absolutely or as shares of a total.
|
|
155
|
+
- Piecewise value distributions, uniform within bins drawn by weight, and `freshness` crater ages that draw each crater's freshness from a value distribution.
|
|
156
|
+
- Radial wall marks on craters, ridges and grooves down the wall that are strongest where it is steepest.
|
|
157
|
+
- Craters on slopes: floors offset downslope and rims and ejecta lowered upslope (Plescia et al. 2019), and faster wear toward a critical gradient (Roering et al. 1999).
|
|
158
|
+
- Manual craters with an explicit rim-to-floor depth and rim height in place of what the degradation model and age give; diffusion profiles solve for the age that reaches the depth.
|
|
159
|
+
- Thomas cluster process for boulder clusters, with Poisson-scattered centers whose clusters add where they overlap.
|
|
160
|
+
- Boulders limited to a maximum slope, optionally rolling down steeper ground to gather at its foot.
|
|
161
|
+
- Manual boulders that fix any of their height, burial, yaw, lean, tilt, rest, wear and shape seed; unset fields are drawn as for generated boulders, and fixed ones are neither re-settled nor broken.
|
|
162
|
+
- Manual-only layers: boulder layers with `generate_random` off place only their `manual` boulders, and `CraterLayer::Manual` and `BoulderLayer::Manual` (Python `CraterLayer.manual`, `BoulderLayer.manual`) make layers of only the given craters or boulders.
|
|
163
|
+
- Density maps from GeoTIFFs or constants: a scale, a count in a diameter range, or an areal fraction such as rock abundance, which set crater and boulder densities point by point.
|
|
164
|
+
- Size slope maps that bend boulder sizes into a local power law, from an exponent or a mean diameter map.
|
|
165
|
+
- Crater and boulder catalogs with a completeness limit, above which they stand in for generated features.
|
|
166
|
+
- Rock albedo (`rocks`): boulders brighter than the regolith (Holt 1981; Marshal et al. 2023), and a speckle of the share of each sample covered by boulders too small to resolve.
|
|
167
|
+
- Slope albedo (`slopes`): steep ground kept immature by mass wasting, its optical maturity rising with slope beyond 20 degrees (Ikeda et al. 2022; Lucey et al. 2014).
|
|
168
|
+
- Crater shaping and datum fitting on the GPU on spheres, ellipsoids and shape models, not only on planes.
|
|
169
|
+
- `fade_px` and `fade_shape` on crater `apply` and boulder layers: the resolution fade as its start and end output samples and its curve.
|
|
170
|
+
- Configurations are checked against every field's documented range, and errors name the exact field, such as `layers[2].reach`.
|
|
171
|
+
- Configuration reference in the documentation, generated from the schema at build time, and machine-readable value ranges in the schema.
|
|
172
|
+
- Python options classes document every field with its description and unit, and gain `validate()` and a readable `repr`.
|
|
173
|
+
|
|
174
|
+
### Changed
|
|
175
|
+
|
|
176
|
+
- Breaking: the configuration's `base` is now `source`, and the region layer is now `masked`; old keys and types are rejected.
|
|
177
|
+
- Breaking: raster sources upsample instead of resampling: a raster source's grid is always its file's, and evaluating it over a finer grid gives finer cells; `RasterSourceOptions` and `GeoTiffSourceOptions` take an `upsampler` and an `effectivePixelSize`.
|
|
178
|
+
- Breaking: outputs give their area as `pixel_size_m` and `extent_m` in place of `region` (`width`, `height`, `pixel_size`, `centre_x`, `centre_y`) and of `spacing` on crater lists, boulder lists and boulder models; both are required without a raster or chain source.
|
|
179
|
+
- Breaking: on a raster or chain source, craters, secondaries, dunes and bedforms leave out by default what is at least 4 source cells across (`source_resolves_px`); set it to `null` for the 0.1.0 output.
|
|
180
|
+
- Breaking: every angle key in configurations and the Python options classes is in degrees and ends in `_deg`, azimuths counter-clockwise from +x (local east), and the rest of the Python API follows with `_deg` names and arguments; the C++ library keeps radians.
|
|
181
|
+
- Breaking: crater and boulder size keys carry their units (`_m`, `_px`), in configurations and the Python options classes alike, and crater layers' `generate` is now `generate_random`; the old keys are rejected.
|
|
182
|
+
- Breaking: core types and functions are renamed with no aliases, `Terrain` to `TerrainGenerator`, `GenerateTerrain` to `GenerateFromConfig`, `TerrainConfig` to `TerrainGenConfig`, `HeightMesh` to `BuildMesh`, `RegionLayer` to `MaskedLayer` and the rest in the table below, and Python names follow C++ names one to one.
|
|
183
|
+
- Breaking: sources take the sample spacing: `Source::Fill(heights, spacing)` and `Source::HeightAt(x, y, spacing)`, and Python `Source` subclasses define `height_at(x, y, spacing)` and `fill(heights, spacing)`; a source without bounds gives a grid without cells (`BoundedGrid`), and `Evaluate(generator)` needs a grid for it.
|
|
184
|
+
- The library, Python bindings, tests and examples are C++17 (0.1.0 needed C++20); public headers take `Span` in place of `std::span`.
|
|
185
|
+
- Defaults give a plausible lunar terrain at 1 m per pixel in which every height layer shows: craters from a production surface capped below the Trask equilibrium with steady-state ages, diffusion and irregular outlines, Martin, Parkes and Dunstan profiles, nominal NASA SP-8023 intercrater boulders (0.4% cover by rocks of 1 m and more), noise relief scaled to its wavelength, and visible roughness, bedforms and dunes.
|
|
186
|
+
- A boulder `coverage`, `qa`, `qb` or `ejecta.coverage` that no Golombek-Rapp sizes use is an error that names `"sizes": {"type": "golombek_rapp"}`.
|
|
187
|
+
- Boulder lists and models hold every boulder of the layer's diameter range; only the heightmap leaves out boulders too small to resolve.
|
|
188
|
+
- Boulder ejecta come from every crater layer before the boulder layer, not only the last one.
|
|
189
|
+
- Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
|
|
190
|
+
- Density maps that count every feature take out the secondaries and blocks thrown from a layer's craters, and boulder patches and bedrock keep a map's mean, so nothing is counted twice.
|
|
191
|
+
- The `matched` diffusivity wears each crater to Fassett et al.'s visibility cutoff at the end of its equilibrium lifetime, for the layer's own profile.
|
|
192
|
+
- Crater shaping has one implementation, the kernel, on every surface; craters on bodies and custom profiles may differ from 0.1.0 in the last digits.
|
|
193
|
+
- Random streams and hashes are unified, so boulder, albedo, dune, bedform and pavement outputs for a given seed differ from 0.1.0; their statistics are unchanged.
|
|
194
|
+
- Every evaluation defaults to all threads, including `HeightAt` and `HeightsAt`.
|
|
195
|
+
- The `materials` module is folded into `pipeline` (material maps, `terraingen/pipeline/materials.h`) and `albedo` (Hapke photometry, `terraingen/albedo/photometry.h`), and `NoiseLayersAt` moves to `terraingen/sources/synthetic_terrain.h`.
|
|
196
|
+
- Python: `ExposureField.exposure` takes `(x, y, spacing=0.0, generator=None, layers=0)` like the other ground queries, unbounded options read as `None` instead of infinity, `write_outputs` returns paths and a subclass missing a required method raises `TypeError`.
|
|
197
|
+
- Written configurations leave out lists that are empty by default.
|
|
198
|
+
- Faster craters and boulders: ground reads for crater slopes and datums and beneath boulders are batched and spatially ordered, outputs over one area share the boulders placed for the first, boulder models are placed in parallel and ejecta craters found through a spatial index; the hero demo went from 433 s to about 10 s.
|
|
199
|
+
- Logs: generation logs each grid as it is evaluated with the time of every layer, the albedo and the materials and ends with each step's total and share; crater and boulder summaries log at debug level, boulders under boulders rather than craters, and `terraingen` ends with one line counting the files written.
|
|
200
|
+
|
|
201
|
+
### Removed
|
|
202
|
+
|
|
203
|
+
- Tile schemes, tiles and the tile cache (`TileScheme`, `TileKey`, `EvaluateTile`, `EvaluateTiles`, `TileCache`, in C++ and Python): level of detail belongs to the renderer, and any grid evaluated alone already equals the same cells of a larger one; the point query examples move to a `queries` category.
|
|
204
|
+
- Resampling and low-passing raster sources: `pixelSize`, `resampling` and `lowPass` on `GeoTiffSourceOptions` and the config keys `pixel_size`, `resampling` and `low_pass` on raster sources; upsampling over a finer grid replaces them.
|
|
205
|
+
- `DetailLayer` and the `dem_detail` layer, which only restored the detail a low-passed source removed.
|
|
206
|
+
- `GridRegionSpec`, `config::RegionGrid` and `config::FeatureOutput`; an output's area is an `OutputAreaSpec`.
|
|
207
|
+
- Python `crater_blend_weight` (use `CraterBlend.weight`), `CraterAgeModel.lifetime_gyr` (use `lifetime_at`) and the flat selection aliases on crater irregularity, crater albedo and secondary options (use `selection`).
|
|
208
|
+
|
|
209
|
+
### Fixed
|
|
210
|
+
|
|
211
|
+
- Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
|
|
212
|
+
- Small craters inside larger ones on sloping ground no longer stand as raised mounds: datums are fitted to the slope-shaped relief that is applied.
|
|
213
|
+
- Secondary craters run on the GPU backend the terrain asks for instead of always on the CPU.
|
|
214
|
+
- A crater layer after a boulder layer no longer refits crater datums for every batch of ground reads.
|
|
215
|
+
- Tilted boulders are no longer cut off at grid edges and in point queries.
|
|
216
|
+
- Zero-area output areas and crater sizes below the models' range are rejected with a clear error instead of failing during generation.
|
|
217
|
+
- The library builds without warnings under Clang and MSVC.
|
|
218
|
+
|
|
219
|
+
### Migrating from 0.1.0
|
|
220
|
+
|
|
221
|
+
Old keys and names are rejected rather than aliased. Angle keys are in degrees; sizes in meters unless they end in `_px`.
|
|
222
|
+
|
|
223
|
+
**Configuration, top level and sources**
|
|
224
|
+
|
|
225
|
+
| 0.1.0 | 0.2.0 |
|
|
226
|
+
| --- | --- |
|
|
227
|
+
| `base` | `source` (types `raster`, `chain`, `synthetic`) |
|
|
228
|
+
| `base.pixel_size`, `base.resampling` | `source.upsampling`; set the output's `pixel_size_m` for finer cells |
|
|
229
|
+
| `base.low_pass` | removed; `effective_pixel_size_m` for a DEM smoothed before it was saved |
|
|
230
|
+
| layer `dem_detail` | removed; use `source.upsampling` or a `spectral_continuation` layer |
|
|
231
|
+
| `body.metres_per_unit` (`shape_model`) | `body.meters_per_unit` |
|
|
232
|
+
|
|
233
|
+
**Configuration, outputs**
|
|
234
|
+
|
|
235
|
+
| 0.1.0 | 0.2.0 |
|
|
236
|
+
| --- | --- |
|
|
237
|
+
| `region.pixel_size` | `pixel_size_m` |
|
|
238
|
+
| `region.width`, `height`, `centre_x`, `centre_y` | `extent_m: {"center": [x, y], "size": [width * pixel_size, height * pixel_size]}` (`extent_deg` on a body) |
|
|
239
|
+
| `spacing` on `crater_list`, `boulder_list`, `boulder_models` | `pixel_size_m` |
|
|
240
|
+
| `path` required | `path` optional |
|
|
241
|
+
| `crease_angle` (`boulder_models`) | `crease_angle_deg` |
|
|
242
|
+
|
|
243
|
+
**Configuration, layers**
|
|
244
|
+
|
|
245
|
+
| 0.1.0 | 0.2.0 |
|
|
246
|
+
| --- | --- |
|
|
247
|
+
| layer `region` | layer `masked` |
|
|
248
|
+
| craters `generate` | `generate_random` |
|
|
249
|
+
| craters `min_diameter`, `max_diameter` | `min_diameter_m`, `max_diameter_m` |
|
|
250
|
+
| craters `apply.fade` {`start_samples`, `end_samples`, `shape`} | `apply.fade_px` [start, end], `apply.fade_shape` |
|
|
251
|
+
| crater `irregularity.heading`, `heading_spread` | `heading_deg`, `heading_spread_deg` |
|
|
252
|
+
| craters `apply.datum` `"centre_height"` | `"center_height"` |
|
|
253
|
+
| secondaries `min_diameter`, `max_diameter`, `min_primary_diameter`, `max_primary_diameter` | the same with `_m` |
|
|
254
|
+
| secondaries `width_degrees`, `min_half_angle_degrees` | `width_deg`, `min_half_angle_deg` |
|
|
255
|
+
| boulders `min_diameter`, `max_diameter` | `min_diameter_m`, `max_diameter_m` |
|
|
256
|
+
| boulders `fade` {`start_samples`, `end_samples`, `shape`} | `fade_px` [start, end], `fade_shape` |
|
|
257
|
+
| boulders `exposure_spacing` | `ground_spacing_m` |
|
|
258
|
+
| boulders `max_lean`, `max_tilt` | `max_lean_deg`, `max_tilt_deg` |
|
|
259
|
+
| boulders `patches.size`, `clusters.spacing`, `clusters.radius` | `patches.size_m`, `clusters.spacing_m`, `clusters.radius_m` |
|
|
260
|
+
| boulders `ejecta.min_crater_diameter`, `ejecta.regolith_thickness` | `ejecta.min_crater_diameter_m`, `ejecta.regolith_thickness_m` |
|
|
261
|
+
| boulders `fragmentation.min_diameter`, `relief_range.min_diameter`, `relief_range.max_diameter` | the same with `_m` |
|
|
262
|
+
| boulders `models.min_diameter`, `models.max_diameter`, `models.min_samples`, `models.max_samples` | `models.min_diameter_m`, `models.max_diameter_m`, `models.min_px`, `models.max_px` |
|
|
263
|
+
| manual boulders `yaw`, `lean`, `tilt`, `tilt_azimuth` | `yaw_deg`, `lean_deg`, `tilt_deg`, `tilt_azimuth_deg` |
|
|
264
|
+
| ventifacts `wind_azimuth`, `second_wind_azimuth`, `min_angle`, `max_angle` | the same with `_deg` |
|
|
265
|
+
| dunes `wind_azimuth`, `azimuth_spread`, `slip_face_angle`, `stoss_slope`, `flank_slope` | the same with `_deg` |
|
|
266
|
+
| bedforms `wind_azimuth`, `azimuth_spread` | `wind_azimuth_deg`, `azimuth_spread_deg` |
|
|
267
|
+
| strata `dip`, `dip_azimuth` | `dip_deg`, `dip_azimuth_deg` |
|
|
268
|
+
| pavement `max_tilt` | `max_tilt_deg` |
|
|
269
|
+
| sand shadow `wind_azimuth`, `flank_angle` | `wind_azimuth_deg`, `flank_angle_deg` |
|
|
270
|
+
| albedo `hue`, `hue_noise`, `heading` | `hue_deg`, `hue_noise_deg`, `heading_deg` |
|
|
271
|
+
| albedo `*_degrees` (`width_degrees`, `streak_width_degrees`, `jet_angle_degrees`, `steep_slope_degrees` and the rest) | `*_deg` |
|
|
272
|
+
| materials `roughness` | `roughness_deg` |
|
|
273
|
+
|
|
274
|
+
**C++ API**
|
|
275
|
+
|
|
276
|
+
| 0.1.0 | 0.2.0 |
|
|
277
|
+
| --- | --- |
|
|
278
|
+
| `Terrain` (`pipeline/terrain.h`) | `TerrainGenerator` (`pipeline/generator.h`) |
|
|
279
|
+
| `EvaluateAt`, `EvaluatePoints` | `HeightAt`, `HeightsAt` |
|
|
280
|
+
| `ValidateTerrain`, `BuildTerrain` | `ValidateGenerator`, `BuildGenerator` |
|
|
281
|
+
| `GenerateTerrain`, `GeneratedTerrain` (`.terrain`) | `GenerateFromConfig`, `GeneratedOutputs` (`.generator`) |
|
|
282
|
+
| `TerrainConfig` | `TerrainGenConfig` |
|
|
283
|
+
| `ConfigSummary::base` | `ConfigSummary::source` |
|
|
284
|
+
| `HeightMesh`, `HeightMeshOptions` (`pipeline/height_mesh.h`) | `BuildMesh`, `BuildMeshOptions` (`pipeline/mesh_build.h`) |
|
|
285
|
+
| `RegionLayer` (`layers/region.h`), `RegionShape::centre` | `MaskedLayer` (`layers/masked.h`), `RegionShape::center` |
|
|
286
|
+
| `Source::Fill(heights)`, `Source::HeightAt(x, y)` | `Source::Fill(heights, spacing)`, `Source::HeightAt(x, y, spacing)` |
|
|
287
|
+
| `GeoTiffSourceOptions::pixelSize`, `resampling`, `lowPass` | `upsampler`, `effectivePixelSize`; evaluate over a finer grid |
|
|
288
|
+
| `CraterLayerOptions::generate` | `CraterLayerOptions::generateRandom` |
|
|
289
|
+
| `BoulderLayerOptions::exposureSpacing` | `BoulderLayerOptions::groundSpacing` |
|
|
290
|
+
| `DetailLayer`, `TileScheme`, `TileKey`, `TileCache`, `EvaluateTile`, `EvaluateTiles` | removed |
|
|
291
|
+
| `GridRegionSpec`, `config::RegionGrid`, `config::FeatureOutput` | `OutputAreaSpec`, `ExtentSpec`, `config::SnappedGrid` |
|
|
292
|
+
| `terraingen/materials/` | `terraingen/pipeline/materials.h`, `terraingen/albedo/photometry.h` |
|
|
293
|
+
| `NoiseLayersAt` in `layers/noise_relief.h` | `sources/synthetic_terrain.h` |
|
|
294
|
+
| `KilometrePowerLaw`, `PowerLawCoefficientFromKilometres` | `KilometerPowerLaw`, `PowerLawCoefficientFromKilometers` |
|
|
295
|
+
| `CraterDatum::CentreHeight` | `CraterDatum::CenterHeight` |
|
|
296
|
+
| `CubeSphereCells::Neighbours`, `SampleAtCentres` | `CubeSphereCells::Neighbors`, `SampleAtCenters` |
|
|
297
|
+
| `MeshMaterial::colour`, `FeatureCell::centre`, `BoulderFragment::centre` | `MeshMaterial::color`, `FeatureCell::center`, `BoulderFragment::center` |
|
|
298
|
+
| `ShapeModelSurfaceSpec::metresPerUnit` | `ShapeModelSurfaceSpec::metersPerUnit` |
|
|
299
|
+
| `TERRAINGEN_API_VERSION` 1 | 2 |
|
|
300
|
+
|
|
301
|
+
**Python API**
|
|
302
|
+
|
|
303
|
+
| 0.1.0 | 0.2.0 |
|
|
304
|
+
| --- | --- |
|
|
305
|
+
| `Terrain` | `TerrainGenerator` |
|
|
306
|
+
| `evaluate_at`, `evaluate_points` | `height_at`, `heights_at` |
|
|
307
|
+
| `build_terrain`, `generate_terrain`, `GeneratedTerrain` | `build_generator`, `generate_from_config`, `GeneratedOutputs` |
|
|
308
|
+
| `Config`, `Config.from_json`, `Config.load`, `Config.to_json` | `TerrainGenConfig`, `parse_config`, `load_config`, `config_to_json` |
|
|
309
|
+
| `Config.base_grid` | `TerrainGenConfig.source_grid` |
|
|
310
|
+
| `height_mesh` | `build_mesh` |
|
|
311
|
+
| `RegionLayer` | `MaskedLayer` |
|
|
312
|
+
| keyword `terrain=` | `generator=` (and `generated=` for `write_outputs`) |
|
|
313
|
+
| `Source.height_at(x, y)`, `Source.fill(heights)` | `height_at(x, y, spacing)`, `fill(heights, spacing)` |
|
|
314
|
+
| `GeoTiffSource(pixel_size=, resampling=, low_pass=)` | `GeoTiffSource(upsampler=, effective_pixel_size=, crop=)` |
|
|
315
|
+
| `version`, `api_version`, `build_info` | `get_version`, `get_api_version`, `get_build_info` |
|
|
316
|
+
| `boulder_fillet_height`, `perlin_noise3` | `fillet_height`, `perlin_noise3_precise` |
|
|
317
|
+
| `TriangleMesh.subdivided` | `TriangleMesh.subdivide` |
|
|
318
|
+
| `Raster.nodata`, `GeoTiffInfo.nodata` | `Raster.no_data`, `GeoTiffInfo.no_data` |
|
|
319
|
+
| `ValueDistributionKind` | `ValueDistribution.Kind` |
|
|
320
|
+
| `CraterGenerationOptions.min_diameter`, `max_diameter` | `d_min`, `d_max` |
|
|
321
|
+
| `CraterFeatures.write` | `CraterFeatures.write_list` |
|
|
322
|
+
| `cell_of`, `point_of`, `level_for`, `outline_of` | `cell_at`, `coordinates`, `resolving_level`, `irregular_outline` |
|
|
323
|
+
| `min_diameter_for_count`, `singer_range_for_size` | `count_limit_diameter`, `singer_max_range` |
|
|
324
|
+
| `SplotchOptions`, `SlopeMaturityOptions` | `SplotchAlbedoOptions`, `SlopeAlbedoOptions` |
|
|
325
|
+
| angles in radians (`SyntheticAlbedo(hue=)`, `hsv_to_rgb(hue)`, `RigidTransform.rotation_x(angle)`, `Boulder.yaw`, ...) | degrees with `_deg` names (`hue_deg=`, `angle_deg`, `Boulder.yaw_deg`, ...) |
|
|
326
|
+
| `crater_blend_weight`, `CraterAgeModel.lifetime_gyr` | `CraterBlend.weight`, `lifetime_at` |
|
|
327
|
+
| `KilometrePowerLaw`, `power_law_coefficient_from_kilometres` | `KilometerPowerLaw`, `power_law_coefficient_from_kilometers` |
|
|
328
|
+
| `CraterDatum.CENTRE_HEIGHT` | `CraterDatum.CENTER_HEIGHT` |
|
|
329
|
+
| `CubeSphereCells.neighbours` | `CubeSphereCells.neighbors` |
|
|
330
|
+
| `RasterGrid.centred(centre=)` | `RasterGrid.centered(center=)` |
|
|
331
|
+
| keyword `centre=` (`FlatSource`, `Surface.offset`, `Surface.locate`), `metres=` (`Surface.expand`) | `center=`, `meters=` |
|
|
332
|
+
| `MeshMaterial(colour=)`, `MeshMaterial.colour` | `MeshMaterial(color=)`, `MeshMaterial.color` |
|
|
333
|
+
| `read_icq(metres_per_unit=)`, `write_icq(metres_per_unit=)` | `meters_per_unit=` |
|
|
334
|
+
| `TileScheme`, `TileKey`, `TileCache`, `evaluate_tile`, `evaluate_tiles` | removed |
|
|
335
|
+
|
|
336
|
+
## [0.1.0] - 2026-10-18
|
|
337
|
+
|
|
338
|
+
Initial release.
|
|
339
|
+
|
|
340
|
+
### Added
|
|
341
|
+
|
|
342
|
+
- C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
|
|
343
|
+
- Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
|
|
344
|
+
- Procedural 3D boulder models, and small boulders baked into the heightmap.
|
|
345
|
+
- Synthetic albedo with crater ejecta and rays that fade with age.
|
|
346
|
+
- Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
|
|
347
|
+
- Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
|
|
348
|
+
- Deterministic output for a seed on any grid, tile or thread count.
|
|
349
|
+
- GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
|
|
350
|
+
- `terraingen` command-line interface driven by JSON configurations.
|
|
351
|
+
- Examples in C++, Python and JSON.
|
|
352
|
+
- Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
|
|
353
|
+
|
|
354
|
+
[Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.2.0...HEAD
|
|
355
|
+
[0.2.0]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...v0.2.0
|
|
356
|
+
[0.1.0]: https://github.com/alexmaietta/terraingen/releases/tag/v0.1.0
|