terraingenpy 0.1.1.dev13__tar.gz → 0.1.1.dev17__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.1.1.dev17/CHANGELOG.md +53 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/CMakeLists.txt +1 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/PKG-INFO +2 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/README.md +1 -2
- terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_rolling.json +45 -0
- terraingenpy-0.1.1.dev17/examples/config/boulders/example_boulders_slope_map.json +56 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/build.cpp +8 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/config.h +14 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/boulders.h +9 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/craters.h +9 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/enums.h +10 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/maps.h +16 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/abundance.cpp +15 -4
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.cpp +43 -10
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.h +6 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.cpp +23 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.h +12 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_layer.cpp +1 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_layer.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/degradation_model.cpp +6 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/degradation_model.h +7 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusion.cpp +5 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusion.h +4 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/freshness.cpp +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/freshness.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/population.h +4 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/spacing.cpp +5 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/spacing.h +5 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply.cpp +38 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply_options.cpp +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply_options.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/crater_kernel.cpp +4 -6
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/datum.cpp +12 -4
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/datum.h +2 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/prepared.h +2 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/slope.cpp +15 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/slope.h +24 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/density_map.cpp +24 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/density_map.h +35 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/craters.h +9 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/boulders.cpp +2 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/crater_models.cpp +3 -1
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/craters.cpp +10 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/layers.cpp +23 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_boulders.py +13 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_craters.py +11 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/build_test.cpp +14 -3
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/generate_terrain_test.cpp +8 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_io_test.cpp +11 -2
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_layer_test.cpp +115 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/freshness_test.cpp +3 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/spacing_test.cpp +44 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +2 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/slope_test.cpp +113 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/density_map_test.cpp +30 -0
- terraingenpy-0.1.1.dev13/CHANGELOG.md +0 -29
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.clang-format +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.clang-tidy +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.cmake-format.yaml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.dockerignore +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.gitattributes +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.github/pull_request_template.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.github/workflows/ci.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.gitignore +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/.pre-commit-config.yaml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/CITATION.cff +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/CONTRIBUTING.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/Dockerfile +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/assets/textures/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_diff_4k.jpg +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_disp_4k.png +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/assets/textures/moon_01_rough_4k.exr +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/BuildInfo.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/CoverageBadge.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/EmbedFile.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/Kernel.cpp.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenPackaging.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenSlang.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/TerrainGenTesting.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/terraingenConfig.cmake.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/benchmark.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/ernie.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/googletest.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/mesh_formats.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/miniz.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/nanobind.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/nvrtc.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/slang.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/volk.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/cmake/third_party/vulkan_headers.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/.gitignore +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/Makefile +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/api/cpp.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/api/python.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/concepts/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/css/extra.css +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/getting-started/command-line.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/getting-started/gui.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/getting-started/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/getting-started/installation.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/getting-started/quickstart.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/guides/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/overrides/home.html +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/overrides/partials/header.html +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/requirements.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/scripts/generate_schema.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/docs/validation/index.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_fresh.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_steady_state.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/ages/example_ages_uniform.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_new_crater.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_rgb.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/albedo/example_albedo_synthetic.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_buried.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_ejecta.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_exposure.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_fragments.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_layer.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_max_slope.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_models.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_patches.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_rock_abundance.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_scene.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_shapes.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_sp8023.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/boulders/example_boulders_thomas_clusters.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_catalog_and_map.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_datum.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_degradation_none.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_interior_replacement.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_irregular.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_manual.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_max_craters.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_profile_complex.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_secondaries.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_secondary_rays.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_simple.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_slopes.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_spacing.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_texture.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/craters/example_craters_wall_marks.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_piecewise_uniform.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_power_law.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_tabulated.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/distributions/example_distributions_viper.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_regions.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_roughness.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_craters.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_dunes.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_exposure.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_pavement.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_sand_shadows.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_strata.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mars_ventifacts.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_mercury_site.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/planets/example_planets_moon_site.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_billow.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_cellular.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_fbm.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_layered.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_ridged.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_roughness.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/config/terrain/example_terrain_voronoi.json +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/ages/example_ages_models.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/common/browser.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/common/browser.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/common/example.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/common/example.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/common/main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/common/standalone_main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/config/example_config_load.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_manual.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/craters/example_craters_simple.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/layers/example_layers_custom.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/layers/example_layers_regions.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/planets/example_planets_moon.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/__main__.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/_browser.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/_common.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/_harness.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/_images.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/ages/example_ages_models.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/albedo/example_albedo_options.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_exposure.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_layer.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_positioning.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_shapes.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/boulders/example_boulders_size_models.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/config/example_config_load.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_age_sweep.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_apply_options.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_degradation.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_irregularity.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_manual.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_positioning.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_profiles.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_secondaries.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/craters/example_craters_simple.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/distributions/example_distributions_csfd.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/distributions/example_distributions_custom.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/layers/example_layers_custom.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/layers/example_layers_regions.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_body_mesh.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars_dunes.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mars_exposure.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_mercury.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/planets/example_planets_moon_site.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/sources/example_sources_chain.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/sources/example_sources_raster_detail.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_fbm.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_layered.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_point_queries.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_quadtree.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/mkdocs.yml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/pyproject.toml +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/albedo.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/blast_zones.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/blast_zones.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/crater_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/crater_albedo.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/maturity.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/maturity.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/raster_albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/raster_albedo.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/splotches.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/splotches.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/synthetic.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/albedo/synthetic.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/cli.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/cli.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/config_editor.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/config_editor.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/gui_app.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/gui_app.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/run_none.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/terrain_scene.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/gui/terrain_scene.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/app/main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/build.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/config.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/feature_lists.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/albedo.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/checks.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/common.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/crater_models.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/fields.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/json_io.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/layers.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/materials.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/outputs.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/fields/sources.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/generate.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/generate.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/json.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/json.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/schema.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/validate.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/config/validate.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/combined.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/combined.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/equilibrium.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/equilibrium.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/golombek_rapp.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/golombek_rapp.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/ivanov.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/ivanov.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/log_polynomial.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/log_polynomial.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/minimum.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/minimum.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/moore.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/moore.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/neukum.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/neukum.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_power_law.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_uniform.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/piecewise_uniform.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/power_law.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/power_law.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/production_surface.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/production_surface.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/size_frequency.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/size_frequency.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/sp8023.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/sp8023.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/spliced.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/spliced.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/summed.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/summed.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/synthterrain.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/synthterrain.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/tabulated.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/tabulated.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/viper.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/distribution/viper.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/backend.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/backend.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/cuda.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/cuda.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/kernel.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/metal.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/metal.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/program.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/vulkan.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/gpu/vulkan.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/bedforms.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/bedforms.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_fragments.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_models.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_models.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_placer.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_shape.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/age_model.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/age_model.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/ages/steady_state.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_placer.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_placer.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/degradation/state.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/cell_cache.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/generation/population.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/complex.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/complex.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/profiles/profile.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/rays.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/rays.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/secondaries.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/secondaries.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/secondary_model.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/secondary_model.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/apply.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/attributes.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/irregularity.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/morphometry.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/shaping/prepared.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/detail.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/detail.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/dunes.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/dunes.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/evaluation_cache.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/exposure.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/exposure.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/fade.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/fade.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/ground.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/cell.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/crater_datums.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/craters.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/kernels/noise_relief.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/layer.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/layer.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/material.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/material.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/noise_relief.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/noise_relief.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/pavement.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/pavement.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/region.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/region.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/roughness.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/roughness.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/sample_block.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/sample_block.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_fill.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_fill.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_shadow.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/sand_shadow.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/strata.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/strata.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/transforms.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/transforms.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/materials/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/materials/materials.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/formats.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/gltf.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/icq.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/icq.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/mesh_io.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/mesh_io.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/obj.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/io/stl.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/mesh.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/polyhedra.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/polyhedra.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/shape_model.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/mesh/shape_model.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/fractal.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/hash.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/lattice.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/noise_layers.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/perlin.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/simplex.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/validate.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/validate.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/value.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/noise/worley.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/body_mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/body_mesh.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/features.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/features.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/height_mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/height_mesh.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/terrain.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/terrain.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/tiles.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/pipeline/tiles.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/albedo.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/bindings.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/casters.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/common.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/distribution.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/gpu.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/materials.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/mesh.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/module.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/noise.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/objects.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/pipeline.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/random.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/raster.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/sources.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/tables.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/trampolines.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/src/util.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/terraingen/__init__.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/python/terraingen/render.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/philox.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/samplers.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/samplers.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/stream.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/stream.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/value_distribution.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/random/value_distribution.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/cell_loops.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/cell_loops.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/gaussian_blur.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/gaussian_blur.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geo_transform.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff_read.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/geotiff/tiff_format.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/grid.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/grid.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/raster.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/raster_stats.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/resample.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/raster/resample.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/field.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/field.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/flat_source.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/flat_source.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/geotiff_source.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/geotiff_source.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/source.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/source_chain.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/source_chain.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/synthetic_terrain.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/sources/synthetic_terrain.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/terraingen.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/build_info.cpp.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/build_info.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/cells.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/checks.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/checks.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/cube_faces.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/cube_sphere_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/fft.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/fft.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/geometry.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/log.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/log.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/lru_cache.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/overloaded.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/parallel.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/parallel.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/planar_cells.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/portable.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/radial_shape.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/radial_shape.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/special_functions.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/special_functions.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/surface.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/surface.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/version.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/util/version.h.in +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/benchmark/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_craters.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_grids.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_point_queries.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/benchmark/bench_python_subclasses.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/benchmark/fixtures.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/golden/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/golden/noise/kernels_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/integration/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/integration/build_info_stable.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/integration/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/integration/package/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/integration/package/main.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/integration/package/test_debian_packages.cmake +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/conftest.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_albedo.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_config.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_crater_models.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_distributions.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_examples_harness.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_gpu.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_layers.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_meshes.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_noise.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_pipeline.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_random.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_raster.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_render.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_sources.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_stubs.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_tiles.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/python/test_util.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/distribution/crater_references_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/craters/population_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/statistical/random/random_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/support/log_capture.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/support/lunar_craters.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/support/raster_equality.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/support/statistics.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/support/temp_path.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/blast_zones_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/albedo/splotches_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/app/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/app/cli_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/config_editor_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/gui_app_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/config_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/configs.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/feature_lists_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_parse_errors_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/json_read_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/schema_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/validate_config_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/validate_sources_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/config/write_outputs_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/combined_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/equilibrium_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/ivanov_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/minimum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/moore_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/neukum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/piecewise_uniform_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/power_law_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/production_surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/size_frequency_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/sp8023_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/spliced_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/summed_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/synthterrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/tabulated_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/distribution/viper_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/examples/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/examples/example_browser_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/examples/example_harness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/backend_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/noise_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/gpu/vulkan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/bedforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/crater_layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/crater_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/generation/population_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/apply_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/craters/sphere_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/detail_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/dunes_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/exposure_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/fade_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/layer_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/noise_relief_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/pavement_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/region_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/roughness_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sample_block_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sand_fill_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sand_shadow_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/sphere_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/strata_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/layers/transforms_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/materials/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/materials/materials_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/io/icq_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/mesh_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/polyhedra_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/shape_model_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/mesh/support.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/fractal_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/hash_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/noise3_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/noise_layers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/perlin_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/simplex_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/validate_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/value_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/noise/worley_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/features_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/terrains.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/pipeline/tiling_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/random/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/random/philox_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/random/samplers_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/random/stream_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/random/value_distribution_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/cell_loops_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/gdal_fixtures.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geo_transform_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geotiff_fixtures.inc +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/geotiff_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/grid_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/raster_stats_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/raster_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/resample_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/raster/tiff_format_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/sources/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/sources/field_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/sources/flat_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/sources/geotiff_source_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/sources/source_chain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/CMakeLists.txt +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/cells_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/checks_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/fft_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/geometry_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/log_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/lru_cache_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/overloaded_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/parallel_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/radial_shape_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/special_functions_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/surface_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/tests/unit/util/version_test.cpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/README.md +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/cgltf/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/cgltf/cgltf.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/cgltf/cgltf_write.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/miniz/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/miniz/miniz.c +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/miniz/miniz.h +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/nlohmann/LICENSE.MIT +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/nlohmann/json.hpp +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/tinyobjloader/LICENSE +0 -0
- {terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
- Piecewise uniform size-frequency distributions: counts per diameter band, given absolutely or as shares of a total.
|
|
13
|
+
- Radial wall marks on craters, ridges and grooves down the wall that are strongest where it is steepest.
|
|
14
|
+
- Thomas cluster process for boulder clusters, with Poisson-scattered centres whose clusters add where they overlap.
|
|
15
|
+
- 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).
|
|
16
|
+
- Boulders limited to a maximum slope, optionally rolling down steeper ground to gather at its foot.
|
|
17
|
+
- 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.
|
|
18
|
+
- Size slope maps that bend boulder sizes into a local power law, from an exponent or a mean diameter map.
|
|
19
|
+
- Crater and boulder catalogs with a completeness limit, above which they stand in for generated features.
|
|
20
|
+
- Configuration reference in the documentation, generated from the schema at build time, and machine-readable value ranges in the schema.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Density maps that count every feature take out the secondaries thrown from a layer's craters and the blocks thrown out around craters, and boulder patches and bedrock keep a map's mean, so nothing is counted twice.
|
|
25
|
+
- Boulder models settle onto a stable face by default instead of balancing on an edge or corner.
|
|
26
|
+
- Boulder generation logs under boulders rather than craters.
|
|
27
|
+
- Martin, Parkes and Dunstan is the default crater profile.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Freshness degradation never makes a crater deeper than fresh: basins shallower than the cutoff keep their fresh shape.
|
|
32
|
+
- 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.
|
|
33
|
+
|
|
34
|
+
## [0.1.0] - 2026-10-18
|
|
35
|
+
|
|
36
|
+
Initial release.
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- C++20 library with Python bindings (`terraingenpy` on PyPI) for generating terrain from scratch or adding detail to existing DEMs.
|
|
41
|
+
- Craters and boulders from published size-frequency distributions, with crater ages, profiles, degradation, irregularity, secondaries and ejecta.
|
|
42
|
+
- Procedural 3D boulder models, and small boulders baked into the heightmap.
|
|
43
|
+
- Synthetic albedo with crater ejecta and rays that fade with age.
|
|
44
|
+
- Geologic features: dunes and ripples, layered strata, fractured bedrock, ventifacts and sand pooled in lows or behind boulders.
|
|
45
|
+
- Planes, spheres and ellipsoids, whole-body meshes, tiles and point queries.
|
|
46
|
+
- Deterministic output for a seed on any grid, tile or thread count.
|
|
47
|
+
- GPU acceleration on Vulkan, CUDA and Metal, detected at run time.
|
|
48
|
+
- `terraingen` command-line interface driven by JSON configurations.
|
|
49
|
+
- Examples in C++, Python and JSON.
|
|
50
|
+
- Release archives for Linux, macOS and Windows, Debian packages, and a Docker image.
|
|
51
|
+
|
|
52
|
+
[Unreleased]: https://github.com/alexmaietta/terraingen/compare/v0.1.0...HEAD
|
|
53
|
+
[0.1.0]: https://github.com/alexmaietta/terraingen/releases/tag/v0.1.0
|
|
@@ -8,7 +8,7 @@ endif()
|
|
|
8
8
|
|
|
9
9
|
# The release being worked towards, such as 0.1.0, or for a development build a PEP 440 pre-release of
|
|
10
10
|
# it, such as 0.1.0.dev42, which only the Python package carries.
|
|
11
|
-
set(TERRAINGEN_FULL_VERSION "0.1.1.
|
|
11
|
+
set(TERRAINGEN_FULL_VERSION "0.1.1.dev17")
|
|
12
12
|
string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" TERRAINGEN_VERSION "${TERRAINGEN_FULL_VERSION}")
|
|
13
13
|
|
|
14
14
|
project(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: terraingenpy
|
|
3
|
-
Version: 0.1.1.
|
|
3
|
+
Version: 0.1.1.dev17
|
|
4
4
|
Summary: Scientific terrain generation for planetary surfaces
|
|
5
5
|
Keywords: terrain,moon,mars,craters,planetary science,simulation
|
|
6
6
|
Author: Alex Maietta
|
|
@@ -60,7 +60,6 @@ Description-Content-Type: text/markdown
|
|
|
60
60
|
[](https://alexmaietta.github.io/terraingen/coverage/)
|
|
61
61
|
[](https://github.com/alexmaietta/terraingen/releases)
|
|
62
62
|
[](https://pypi.org/project/terraingenpy/)
|
|
63
|
-
[](https://alexmaietta.github.io/terraingen/)
|
|
64
63
|
[](LICENSE)
|
|
65
64
|
|
|
66
65
|
# TerrainGen
|
|
@@ -78,7 +77,7 @@ TerrainGen can:
|
|
|
78
77
|
- Produce synthetic albedo maps with crater ejecta and rays that fade with crater age.
|
|
79
78
|
- Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
|
|
80
79
|
- Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
|
|
81
|
-
- GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
80
|
+
- Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
82
81
|
- Generate deterministic results for the same seed on any grid, tile or thread count.
|
|
83
82
|
- Integrate into simulations and other external workflows.
|
|
84
83
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
[](https://alexmaietta.github.io/terraingen/coverage/)
|
|
5
5
|
[](https://github.com/alexmaietta/terraingen/releases)
|
|
6
6
|
[](https://pypi.org/project/terraingenpy/)
|
|
7
|
-
[](https://alexmaietta.github.io/terraingen/)
|
|
8
7
|
[](LICENSE)
|
|
9
8
|
|
|
10
9
|
# TerrainGen
|
|
@@ -22,7 +21,7 @@ TerrainGen can:
|
|
|
22
21
|
- Produce synthetic albedo maps with crater ejecta and rays that fade with crater age.
|
|
23
22
|
- Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
|
|
24
23
|
- Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
|
|
25
|
-
- GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
24
|
+
- Perform GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
|
|
26
25
|
- Generate deterministic results for the same seed on any grid, tile or thread count.
|
|
27
26
|
- Integrate into simulations and other external workflows.
|
|
28
27
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"layers": [
|
|
4
|
+
{
|
|
5
|
+
"type": "noise",
|
|
6
|
+
"stack": [
|
|
7
|
+
{
|
|
8
|
+
"seed": 1,
|
|
9
|
+
"wavelength": 30,
|
|
10
|
+
"amplitude": 6,
|
|
11
|
+
"octaves": 4
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "boulders",
|
|
17
|
+
"seed": 1,
|
|
18
|
+
"coverage": 0.06,
|
|
19
|
+
"min_diameter": 0.2,
|
|
20
|
+
"max_diameter": 3,
|
|
21
|
+
"max_slope": 0.35,
|
|
22
|
+
"roll_distance": 15
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"outputs": [
|
|
26
|
+
{
|
|
27
|
+
"type": "heightmap",
|
|
28
|
+
"path": "example_boulders_rolling.tif",
|
|
29
|
+
"region": {
|
|
30
|
+
"width": 401,
|
|
31
|
+
"height": 401,
|
|
32
|
+
"pixel_size": 0.1
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "boulder_list",
|
|
37
|
+
"path": "example_boulders_rolling_boulders.csv",
|
|
38
|
+
"region": {
|
|
39
|
+
"width": 401,
|
|
40
|
+
"height": 401,
|
|
41
|
+
"pixel_size": 0.1
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"layers": [
|
|
4
|
+
{
|
|
5
|
+
"type": "noise",
|
|
6
|
+
"stack": [
|
|
7
|
+
{
|
|
8
|
+
"seed": 1,
|
|
9
|
+
"wavelength": 40,
|
|
10
|
+
"amplitude": 0.5,
|
|
11
|
+
"octaves": 6
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "boulders",
|
|
17
|
+
"seed": 1,
|
|
18
|
+
"sizes": {
|
|
19
|
+
"type": "power_law",
|
|
20
|
+
"coefficient": 0.02,
|
|
21
|
+
"exponent": 3.0
|
|
22
|
+
},
|
|
23
|
+
"min_diameter": 0.2,
|
|
24
|
+
"max_diameter": 3,
|
|
25
|
+
"slope_map": {
|
|
26
|
+
"field": {
|
|
27
|
+
"value": 2.2
|
|
28
|
+
},
|
|
29
|
+
"measure": "exponent",
|
|
30
|
+
"reference_diameter": 1.0,
|
|
31
|
+
"min_exponent": 1.5,
|
|
32
|
+
"max_exponent": 5.0
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"outputs": [
|
|
37
|
+
{
|
|
38
|
+
"type": "heightmap",
|
|
39
|
+
"path": "example_boulders_slope_map.tif",
|
|
40
|
+
"region": {
|
|
41
|
+
"width": 401,
|
|
42
|
+
"height": 401,
|
|
43
|
+
"pixel_size": 0.1
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "boulder_list",
|
|
48
|
+
"path": "example_boulders_slope_map_boulders.csv",
|
|
49
|
+
"region": {
|
|
50
|
+
"width": 401,
|
|
51
|
+
"height": 401,
|
|
52
|
+
"pixel_size": 0.1
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -462,6 +462,14 @@ BoulderLayerOptions BuildBoulderOptions(const BoulderLayerSpec& spec, const std:
|
|
|
462
462
|
options.densityMap =
|
|
463
463
|
BuildDensityMap(*spec.densityMap, Child(path, "density_map"), directory);
|
|
464
464
|
}
|
|
465
|
+
if (spec.slopeMap) {
|
|
466
|
+
const SizeSlopeMapSpec& s = *spec.slopeMap;
|
|
467
|
+
const std::string at = Child(path, "slope_map");
|
|
468
|
+
options.slopeMap =
|
|
469
|
+
SizeSlopeMap{BuildField(s.field, Child(at, "field"), directory), s.measure,
|
|
470
|
+
s.referenceDiameter, s.minExponent, s.maxExponent};
|
|
471
|
+
At(at, [&] { ValidateSizeSlopeMap(*options.slopeMap); });
|
|
472
|
+
}
|
|
465
473
|
for (Crater boulder : spec.manual) {
|
|
466
474
|
boulder.manual = true;
|
|
467
475
|
options.manual.push_back(boulder);
|
|
@@ -102,6 +102,17 @@ struct DensityMapSpec {
|
|
|
102
102
|
bool operator==(const DensityMapSpec&) const = default;
|
|
103
103
|
};
|
|
104
104
|
|
|
105
|
+
/// A size slope map (`SizeSlopeMap`) of a boulder population.
|
|
106
|
+
struct SizeSlopeMapSpec {
|
|
107
|
+
FieldSpec field{};
|
|
108
|
+
SizeSlopeMeasure measure = SizeSlopeMeasure::Exponent;
|
|
109
|
+
double referenceDiameter = 1.0; ///< Metres.
|
|
110
|
+
double minExponent = 1.0;
|
|
111
|
+
double maxExponent = 6.0;
|
|
112
|
+
|
|
113
|
+
bool operator==(const SizeSlopeMapSpec&) const = default;
|
|
114
|
+
};
|
|
115
|
+
|
|
105
116
|
struct ChainSourceSpec;
|
|
106
117
|
|
|
107
118
|
/// The starting heights of a terrain, its base, named in JSON by its "type".
|
|
@@ -273,7 +284,7 @@ using SimpleProfileSpec = std::variant<FassettThomsonSpec, MartinParkesDunstanSp
|
|
|
273
284
|
/// morphometry, and complex craters, with flat floors and central peaks, from it
|
|
274
285
|
/// (`ComplexCraterProfile` with `LunarComplexCraterShape` or `MarsComplexCraterShape`).
|
|
275
286
|
struct ComplexProfileSpec {
|
|
276
|
-
SimpleProfileSpec simple{};
|
|
287
|
+
SimpleProfileSpec simple{MartinParkesDunstanSpec{}};
|
|
277
288
|
bool operator==(const ComplexProfileSpec&) const = default;
|
|
278
289
|
};
|
|
279
290
|
/// A crater profile, named in JSON by its "type".
|
|
@@ -299,7 +310,7 @@ struct CraterLayerSpec {
|
|
|
299
310
|
std::size_t maxCraters = 0; ///< Keep at most this many generated craters; 0 keeps all.
|
|
300
311
|
/// Manual craters, in the surface's coordinates; parsing sets their `manual` flag.
|
|
301
312
|
std::vector<Crater> manual{};
|
|
302
|
-
ProfileSpec profile{};
|
|
313
|
+
ProfileSpec profile{MartinParkesDunstanSpec{}};
|
|
303
314
|
DegradationSpec degradation{};
|
|
304
315
|
CraterApplyOptions apply{};
|
|
305
316
|
std::optional<DensityMapSpec> densityMap{}; ///< Gives `CraterLayerOptions::densityMap`.
|
|
@@ -348,6 +359,7 @@ struct BoulderLayerSpec {
|
|
|
348
359
|
/// `BoulderShapeOptions::library`; relative to the configuration's folder.
|
|
349
360
|
std::vector<std::string> shapeFiles{};
|
|
350
361
|
std::optional<DensityMapSpec> densityMap{}; ///< Gives `boulders.densityMap`.
|
|
362
|
+
std::optional<SizeSlopeMapSpec> slopeMap{}; ///< Gives `boulders.slopeMap`.
|
|
351
363
|
/// Catalog boulders in the surface's coordinates, as `boulders.manual`.
|
|
352
364
|
std::vector<Crater> manual{};
|
|
353
365
|
std::optional<FieldSpec> completeness{}; ///< Gives `boulders.completeness`.
|
|
@@ -414,6 +414,11 @@ template <typename IO> void Fields(IO& io, BoulderLayerSpec& spec) {
|
|
|
414
414
|
"Steepest ground, across a boulder's diameter, that boulders stay on, in radians; steeper "
|
|
415
415
|
"ground has none, models and drawn boulders alike. Unset keeps boulders on any slope.",
|
|
416
416
|
"rad", Inside(0.0, 0.5 * std::numbers::pi));
|
|
417
|
+
io("roll_distance", pose.rollDistance,
|
|
418
|
+
"With max_slope, boulders on steeper ground roll down it and rest where it is gentle "
|
|
419
|
+
"enough, gathering at the foot of slopes; those that would roll farther than this many "
|
|
420
|
+
"metres are left out. Unset leaves out every boulder on steeper ground.",
|
|
421
|
+
"m", Above(0.0));
|
|
417
422
|
io("burial_by_wear", pose.burialByWear,
|
|
418
423
|
"How far wear sets burial, from 0 to 1: blocks of fresh craters sit near the smallest "
|
|
419
424
|
"burial and those of worn ones sink toward the largest, while boulders between craters "
|
|
@@ -444,6 +449,10 @@ template <typename IO> void Fields(IO& io, BoulderLayerSpec& spec) {
|
|
|
444
449
|
io("density_map", spec.densityMap,
|
|
445
450
|
"Map that sets the abundance of boulders between craters point by point, scaling the "
|
|
446
451
|
"sizes to what it measures; unset keeps the abundance the sizes set everywhere.");
|
|
452
|
+
io("slope_map", spec.slopeMap,
|
|
453
|
+
"Map of how steeply boulder counts fall with size, such as a mean diameter map, bending the "
|
|
454
|
+
"sizes into a local power law through their count at its reference diameter; needs a size "
|
|
455
|
+
"distribution. Unset keeps the sizes' shape everywhere.");
|
|
447
456
|
io("manual", spec.manual,
|
|
448
457
|
"Catalog boulders placed as given and never thinned or left out; x, y and diameter are "
|
|
449
458
|
"read.");
|
|
@@ -218,7 +218,7 @@ template <typename IO> void Fields(IO& io, CraterTexture& texture) {
|
|
|
218
218
|
|
|
219
219
|
template <typename IO> void Fields(IO& io, CraterSlopeResponse& slope) {
|
|
220
220
|
io("enabled", slope.enabled,
|
|
221
|
-
"Shapes craters
|
|
221
|
+
"Shapes craters asymmetrically along the slope of the ground beneath the layer; off keeps "
|
|
222
222
|
"them the same on any slope.");
|
|
223
223
|
io("seed", slope.seed, "Varies how far each crater's floor is offset.");
|
|
224
224
|
io("floor_offset", slope.floorOffset,
|
|
@@ -232,6 +232,14 @@ template <typename IO> void Fields(IO& io, CraterSlopeResponse& slope) {
|
|
|
232
232
|
"Slope at which the asymmetry is complete, in radians; it rises from none on level "
|
|
233
233
|
"ground.",
|
|
234
234
|
"rad", Above(0.0));
|
|
235
|
+
io("critical_gradient", slope.criticalGradient,
|
|
236
|
+
"Critical gradient Sc, rise over run, toward which downslope transport grows without bound: "
|
|
237
|
+
"a crater on a regional gradient S wears 1 / (1 - (S / Sc)^2) times as fast (Roering et al. "
|
|
238
|
+
"1999). Unset wears craters alike on any slope; no lunar value is published.",
|
|
239
|
+
"", Above(0.0));
|
|
240
|
+
io("max_wear_rate", slope.maxWearRate,
|
|
241
|
+
"Fastest a slope makes craters wear, over level ground: a numerical cap as S nears Sc.", "",
|
|
242
|
+
AtLeast(1.0));
|
|
235
243
|
}
|
|
236
244
|
|
|
237
245
|
template <typename IO> void Fields(IO& io, CraterApplyOptions& apply) {
|
|
@@ -344,6 +344,16 @@ template <> struct EnumNames<DensityMeasure> {
|
|
|
344
344
|
}};
|
|
345
345
|
};
|
|
346
346
|
|
|
347
|
+
template <> struct EnumNames<SizeSlopeMeasure> {
|
|
348
|
+
static constexpr std::array<EnumEntry<SizeSlopeMeasure>, 2> kValues{{
|
|
349
|
+
{"exponent", SizeSlopeMeasure::Exponent,
|
|
350
|
+
"The cumulative exponent alpha, counts falling as D^-alpha."},
|
|
351
|
+
{"mean_diameter", SizeSlopeMeasure::MeanDiameter,
|
|
352
|
+
"The mean diameter in metres of the features from the reference diameter up, from which "
|
|
353
|
+
"alpha = mean / (mean - D0)."},
|
|
354
|
+
}};
|
|
355
|
+
};
|
|
356
|
+
|
|
347
357
|
template <> struct EnumNames<TiffCompression> {
|
|
348
358
|
static constexpr std::array<EnumEntry<TiffCompression>, 4> kValues{{
|
|
349
359
|
{"none", TiffCompression::None, "Uncompressed: the largest files."},
|
|
@@ -43,4 +43,20 @@ template <typename IO> void Fields(IO& io, DensityMapSpec& map) {
|
|
|
43
43
|
"of it first; off when it counts only what the layer generates.");
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
template <typename IO> void Fields(IO& io, SizeSlopeMapSpec& map) {
|
|
47
|
+
io("field", map.field, "The map.");
|
|
48
|
+
io("measure", map.measure, "What the map's values measure.");
|
|
49
|
+
io("reference_diameter", map.referenceDiameter,
|
|
50
|
+
"Diameter D0 in metres where the local power law meets the layer's own count, as N(>=D) = "
|
|
51
|
+
"N(>=D0) (D / D0)^-alpha; for a mean diameter map, the smallest diameter averaged.",
|
|
52
|
+
"m", Above(0.0));
|
|
53
|
+
io("min_exponent", map.minExponent,
|
|
54
|
+
"Smallest exponent alpha the map's values are clamped to; with the largest it bounds the "
|
|
55
|
+
"boulders drawn, so generous bounds draw more to thin.",
|
|
56
|
+
"", Above(0.0));
|
|
57
|
+
io("max_exponent", map.maxExponent,
|
|
58
|
+
"Largest exponent alpha the map's values are clamped to; above the smallest.", "",
|
|
59
|
+
Above(0.0));
|
|
60
|
+
}
|
|
61
|
+
|
|
46
62
|
} // namespace terraingen::config
|
{terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/abundance.cpp
RENAMED
|
@@ -242,6 +242,9 @@ BoulderAbundance BoulderLayer::Abundance(double x, double y, const Ground* groun
|
|
|
242
242
|
EjectaAbundance(x, y, ejecta, abundance);
|
|
243
243
|
}
|
|
244
244
|
abundance.background = BackgroundAbundance(x, y, ground, abundance.ejecta);
|
|
245
|
+
if (options_.slopeMap) {
|
|
246
|
+
abundance.exponent = SizeSlopeAt(*options_.slopeMap, x, y);
|
|
247
|
+
}
|
|
245
248
|
return abundance;
|
|
246
249
|
}
|
|
247
250
|
|
|
@@ -251,10 +254,18 @@ BoulderAbundance BoulderLayer::AbundanceAt(double x, double y, const Ground* gro
|
|
|
251
254
|
|
|
252
255
|
double BoulderLayer::Density(double diameter, const BoulderAbundance& abundance) const {
|
|
253
256
|
const BoulderSizes& sizes = options_.sizes;
|
|
254
|
-
double density =
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
257
|
+
double density = 0.0;
|
|
258
|
+
if (abundance.exponent) {
|
|
259
|
+
const double alpha = *abundance.exponent;
|
|
260
|
+
const double d0 = options_.slopeMap->referenceDiameter;
|
|
261
|
+
density = abundance.background * referenceCount_ * alpha * std::pow(d0, alpha) *
|
|
262
|
+
std::pow(diameter, -alpha - 1.0);
|
|
263
|
+
} else {
|
|
264
|
+
density = sizes.distribution
|
|
265
|
+
? abundance.background * sizes.distribution->Incremental(diameter)
|
|
266
|
+
: GolombekRappDensity(diameter, sizes.coverage * abundance.background,
|
|
267
|
+
sizes.qConstant, sizes.qCoverageCoefficient);
|
|
268
|
+
}
|
|
258
269
|
if (abundance.ejecta > 0.0) {
|
|
259
270
|
density += abundance.ejecta * ejectaSizes_->Incremental(diameter);
|
|
260
271
|
}
|
{terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.cpp
RENAMED
|
@@ -137,6 +137,10 @@ BoulderLayer::BoulderLayer(BoulderLayerOptions options, std::shared_ptr<const Cr
|
|
|
137
137
|
mapAbundance_.emplace(options_);
|
|
138
138
|
patchMean_ = MeanPatchAbundance(options_.patches);
|
|
139
139
|
}
|
|
140
|
+
if (options_.slopeMap) {
|
|
141
|
+
referenceCount_ =
|
|
142
|
+
options_.sizes.distribution->Cumulative(options_.slopeMap->referenceDiameter);
|
|
143
|
+
}
|
|
140
144
|
if (options_.clusters.share > 0.0) {
|
|
141
145
|
clusterMean_ = options_.clusters.model == BoulderClusterModel::Thomas
|
|
142
146
|
? MeanThomasField(options_.clusters, surface_.IsBody())
|
|
@@ -402,11 +406,8 @@ std::optional<Boulder> BoulderLayer::DrawBoulder(const Crater& candidate, double
|
|
|
402
406
|
candidate.id};
|
|
403
407
|
boulder.wear = wear;
|
|
404
408
|
boulder.model = options_.rendering.models.IsModel(boulder.diameter, spacing);
|
|
405
|
-
if (pose.maxSlope && ground != nullptr && !candidate.manual) {
|
|
406
|
-
|
|
407
|
-
if (g && std::hypot(g->x, g->y) > std::tan(*pose.maxSlope)) {
|
|
408
|
-
return std::nullopt;
|
|
409
|
-
}
|
|
409
|
+
if (pose.maxSlope && ground != nullptr && !candidate.manual && !Roll(boulder, *ground)) {
|
|
410
|
+
return std::nullopt;
|
|
410
411
|
}
|
|
411
412
|
if (ground != nullptr) {
|
|
412
413
|
const double height =
|
|
@@ -475,6 +476,30 @@ BoulderShape BoulderLayer::Abraded(const BoulderShape& shape, const BoulderPlace
|
|
|
475
476
|
return cut;
|
|
476
477
|
}
|
|
477
478
|
|
|
479
|
+
bool BoulderLayer::Roll(Boulder& boulder, const Ground& ground) const {
|
|
480
|
+
constexpr double kMaxSteps = 128.0;
|
|
481
|
+
const BoulderPose& pose = options_.pose;
|
|
482
|
+
const double limit = std::tan(*pose.maxSlope);
|
|
483
|
+
const double reach = pose.rollDistance.value_or(0.0);
|
|
484
|
+
const double step = std::fmax(boulder.diameter, reach / kMaxSteps);
|
|
485
|
+
double rolled = 0.0;
|
|
486
|
+
for (;;) {
|
|
487
|
+
const std::optional<Vec2d> g = GroundGradient(boulder, ground);
|
|
488
|
+
const double gradient = g ? std::hypot(g->x, g->y) : 0.0;
|
|
489
|
+
if (!(gradient > limit)) {
|
|
490
|
+
return true;
|
|
491
|
+
}
|
|
492
|
+
if (rolled + step > reach) {
|
|
493
|
+
return false;
|
|
494
|
+
}
|
|
495
|
+
const Vec2d to = surface_.Locate({boulder.x, boulder.y},
|
|
496
|
+
{-g->x / gradient * step, -g->y / gradient * step});
|
|
497
|
+
boulder.x = to.x;
|
|
498
|
+
boulder.y = to.y;
|
|
499
|
+
rolled += step;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
478
503
|
std::optional<Vec2d> BoulderLayer::GroundGradient(const Boulder& boulder,
|
|
479
504
|
const Ground& ground) const {
|
|
480
505
|
const double step = 0.5 * boulder.diameter;
|
|
@@ -521,20 +546,28 @@ std::vector<Boulder> BoulderLayer::Boulders(const Bounds2d& region, double spaci
|
|
|
521
546
|
if (exposure_) {
|
|
522
547
|
RequireGround(ground, "Boulders that read the exposure field");
|
|
523
548
|
}
|
|
524
|
-
const
|
|
549
|
+
const double roll = ground != nullptr ? options_.pose.rollDistance.value_or(0.0) : 0.0;
|
|
550
|
+
const Bounds2d from = roll > 0.0 ? surface_.Expand(region, roll) : region;
|
|
551
|
+
const auto rests = [&](const Boulder& boulder) {
|
|
552
|
+
const double own = 0.5 * boulder.diameter * OwnMarginRadii();
|
|
553
|
+
return roll == 0.0 ||
|
|
554
|
+
surface_.Contains(surface_.Expand(region, own), {boulder.x, boulder.y});
|
|
555
|
+
};
|
|
556
|
+
const CraterList candidates = ScatterBoulderCandidates(from, spacing);
|
|
525
557
|
if (!options_.fragmentation.Enabled()) {
|
|
526
|
-
const CraterList ejecta = EjectaCraters(
|
|
558
|
+
const CraterList ejecta = EjectaCraters(from);
|
|
527
559
|
std::vector<Boulder> boulders;
|
|
528
560
|
for (std::size_t n = 0; n < candidates.Size(); ++n) {
|
|
529
|
-
|
|
530
|
-
|
|
561
|
+
const std::optional<Boulder> boulder =
|
|
562
|
+
DrawBoulder(candidates.At(n), spacing, ground, ejecta);
|
|
563
|
+
if (boulder && rests(*boulder)) {
|
|
531
564
|
boulders.push_back(*boulder);
|
|
532
565
|
}
|
|
533
566
|
}
|
|
534
567
|
return boulders;
|
|
535
568
|
}
|
|
536
569
|
const double reach = 0.5 * options_.sizes.maxDiameter * (OwnMarginRadii() + BreakMarginRadii());
|
|
537
|
-
const CraterList ejecta = EjectaCraters(surface_.Expand(
|
|
570
|
+
const CraterList ejecta = EjectaCraters(surface_.Expand(from, reach));
|
|
538
571
|
std::vector<Boulder> boulders;
|
|
539
572
|
for (std::size_t n = 0; n < candidates.Size(); ++n) {
|
|
540
573
|
const std::optional<Boulder> parent =
|
{terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_layer.h
RENAMED
|
@@ -30,6 +30,8 @@ struct BoulderAbundance {
|
|
|
30
30
|
double ejecta = 0.0;
|
|
31
31
|
/// Wear of the crater the ejecta share comes from, from 0 (fresh) to 1 (its blocks gone).
|
|
32
32
|
double ejectaWear = 0.0;
|
|
33
|
+
/// The size exponent a size slope map gives here (`SizeSlopeAt`); none keeps the sizes' shape.
|
|
34
|
+
std::optional<double> exponent;
|
|
33
35
|
|
|
34
36
|
bool operator==(const BoulderAbundance&) const = default;
|
|
35
37
|
};
|
|
@@ -126,6 +128,9 @@ class BoulderLayer final : public Layer, public BoulderPlacer, public MaterialSo
|
|
|
126
128
|
/// The rise east and north (m/m) of `ground` across `boulder`'s diameter; none where the
|
|
127
129
|
/// ground is missing.
|
|
128
130
|
std::optional<Vec2d> GroundGradient(const Boulder& boulder, const Ground& ground) const;
|
|
131
|
+
/// Rolls `boulder` down ground steeper than `maxSlope` until it rests, as `rollDistance`
|
|
132
|
+
/// allows; false when it would roll farther, or with no roll distance on steep ground.
|
|
133
|
+
bool Roll(Boulder& boulder, const Ground& ground) const;
|
|
129
134
|
/// The pieces `parent` breaks into at its wear, those resolved at `spacing`; `parent` alone
|
|
130
135
|
/// when it is too small or too fresh to break.
|
|
131
136
|
std::vector<Boulder> Break(const Boulder& parent, double spacing, const Ground* ground) const;
|
|
@@ -212,6 +217,7 @@ class BoulderLayer final : public Layer, public BoulderPlacer, public MaterialSo
|
|
|
212
217
|
double minCraterDiameter_ = 0.0;
|
|
213
218
|
double maxBackground_ = 1.0;
|
|
214
219
|
double clusterMean_ = 1.0;
|
|
220
|
+
double referenceCount_ = 0.0; ///< N(>=D0) of the sizes at a size slope map's D0, per m^2.
|
|
215
221
|
std::optional<BoulderMapAbundance> mapAbundance_;
|
|
216
222
|
double patchMean_ = 1.0; ///< Under a map, what the patches are divided by.
|
|
217
223
|
Vec2d meanOrigin_{}; ///< Corner of the bedrock mean lattice, in surface units.
|
{terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.cpp
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#include "terraingen/layers/boulders/boulder_options.h"
|
|
2
2
|
|
|
3
3
|
#include "terraingen/distribution/golombek_rapp.h"
|
|
4
|
+
#include "terraingen/distribution/power_law.h"
|
|
4
5
|
#include "terraingen/distribution/summed.h"
|
|
5
6
|
#include "terraingen/noise/worley.h"
|
|
6
7
|
#include "terraingen/util/checks.h"
|
|
@@ -149,6 +150,11 @@ void ValidateBoulderPose(const BoulderPose& pose) {
|
|
|
149
150
|
if (pose.maxSlope && !(*pose.maxSlope > 0.0 && *pose.maxSlope < 0.5 * std::numbers::pi)) {
|
|
150
151
|
throw std::invalid_argument("Boulder maxSlope must be in (0, pi / 2)");
|
|
151
152
|
}
|
|
153
|
+
if (pose.rollDistance &&
|
|
154
|
+
!(pose.maxSlope && *pose.rollDistance > 0.0 && std::isfinite(*pose.rollDistance))) {
|
|
155
|
+
throw std::invalid_argument("Boulder rollDistance must be positive and finite, with a "
|
|
156
|
+
"maxSlope");
|
|
157
|
+
}
|
|
152
158
|
}
|
|
153
159
|
|
|
154
160
|
void ValidateBoulderFillet(const BoulderFillet& fillet) {
|
|
@@ -312,6 +318,13 @@ void ValidateBoulderLayerOptions(const BoulderLayerOptions& options) {
|
|
|
312
318
|
if (options.densityMap) {
|
|
313
319
|
ValidateDensityMap(*options.densityMap);
|
|
314
320
|
}
|
|
321
|
+
if (options.slopeMap) {
|
|
322
|
+
ValidateSizeSlopeMap(*options.slopeMap);
|
|
323
|
+
if (!options.sizes.distribution) {
|
|
324
|
+
throw std::invalid_argument(
|
|
325
|
+
"A boulder size slope map needs a size distribution, not Golombek-Rapp sizes");
|
|
326
|
+
}
|
|
327
|
+
}
|
|
315
328
|
ValidateBoulderPatches(options.patches);
|
|
316
329
|
ValidateBoulderClusters(options.clusters);
|
|
317
330
|
ValidateBoulderFragmentation(options.fragmentation);
|
|
@@ -458,6 +471,16 @@ BoulderCandidates(const BoulderLayerOptions& options) {
|
|
|
458
471
|
std::vector<WeightedSfd> terms;
|
|
459
472
|
if (sizes.distribution) {
|
|
460
473
|
terms.push_back({richest, sizes.distribution});
|
|
474
|
+
if (options.slopeMap) {
|
|
475
|
+
const SizeSlopeMap& map = *options.slopeMap;
|
|
476
|
+
const double d0 = map.referenceDiameter;
|
|
477
|
+
const double count = richest * sizes.distribution->Cumulative(d0);
|
|
478
|
+
const double low = map.minExponent;
|
|
479
|
+
const double high = map.maxExponent;
|
|
480
|
+
terms.push_back(
|
|
481
|
+
{1.0, std::make_shared<PowerLawSfd>(count * std::pow(d0, low) * high / low, low)});
|
|
482
|
+
terms.push_back({1.0, std::make_shared<PowerLawSfd>(count * std::pow(d0, high), high)});
|
|
483
|
+
}
|
|
461
484
|
} else {
|
|
462
485
|
terms.push_back(
|
|
463
486
|
{1.0, std::make_shared<GolombekRappSfd>(sizes.coverage * richest, sizes.qConstant,
|
{terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/boulders/boulder_options.h
RENAMED
|
@@ -224,6 +224,11 @@ struct BoulderPose {
|
|
|
224
224
|
/// so which boulders exist does not depend on the spacing. Unset keeps boulders on any slope;
|
|
225
225
|
/// needs the ground.
|
|
226
226
|
std::optional<double> maxSlope{};
|
|
227
|
+
/// With `maxSlope`, boulders on steeper ground roll down it instead, in steps along the
|
|
228
|
+
/// steepest descent, and come to rest where it is no steeper than `maxSlope`, gathering at the
|
|
229
|
+
/// foot of slopes; those that would roll farther than this many metres are left out. Unset
|
|
230
|
+
/// leaves out every boulder on steeper ground.
|
|
231
|
+
std::optional<double> rollDistance{};
|
|
227
232
|
|
|
228
233
|
bool operator==(const BoulderPose&) const = default;
|
|
229
234
|
};
|
|
@@ -325,6 +330,11 @@ struct BoulderLayerOptions {
|
|
|
325
330
|
/// it measures first. Patches, clusters and bedrock still spread boulders within it. Unset
|
|
326
331
|
/// keeps the abundance `sizes` sets everywhere.
|
|
327
332
|
std::optional<DensityMap> densityMap{};
|
|
333
|
+
/// A map of how steeply boulder counts fall with size (`SizeSlopeMap`), such as a mean
|
|
334
|
+
/// diameter map, bending the sizes between craters into a local power law through their count
|
|
335
|
+
/// at its reference diameter; needs a size distribution rather than Golombek-Rapp sizes. Unset
|
|
336
|
+
/// keeps the sizes' own shape everywhere.
|
|
337
|
+
std::optional<SizeSlopeMap> slopeMap{};
|
|
328
338
|
/// Boulders from a catalog, placed as given and never thinned or left out; `x`, `y` and
|
|
329
339
|
/// `diameter` are read, and IDs come from position and size (`AppendManualCraters`).
|
|
330
340
|
std::vector<Crater> manual{};
|
|
@@ -458,7 +468,8 @@ double MaxBackgroundAbundance(const BoulderLayerOptions& options);
|
|
|
458
468
|
std::shared_ptr<const SizeFrequencyDistribution> EjectaSizes(const BoulderLayerOptions& options);
|
|
459
469
|
|
|
460
470
|
/// The distribution per m^2 candidate boulders are drawn from before thinning: the boulders
|
|
461
|
-
/// between craters at their richest
|
|
471
|
+
/// between craters at their richest, with a size slope map the power laws at its bounding
|
|
472
|
+
/// exponents too, plus fresh crater blocks when enabled.
|
|
462
473
|
/// @throws std::invalid_argument as `ValidateBoulderLayerOptions`.
|
|
463
474
|
std::shared_ptr<const SizeFrequencyDistribution>
|
|
464
475
|
BoulderCandidates(const BoulderLayerOptions& options);
|
{terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_layer.cpp
RENAMED
|
@@ -82,6 +82,7 @@ CraterLayer::CraterLayer(CraterModels models, CraterLayerOptions options)
|
|
|
82
82
|
throw std::invalid_argument("Taking secondaries out of a density map needs every crater, "
|
|
83
83
|
"not the maxCraters largest");
|
|
84
84
|
}
|
|
85
|
+
options_.generation.spacing.outrankFrom = throwFrom_;
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
CraterKeepShare CraterLayer::KeepShare(const Bounds2d& region) const {
|
{terraingenpy-0.1.1.dev13 → terraingenpy-0.1.1.dev17}/terraingen/layers/craters/crater_layer.h
RENAMED
|
@@ -56,7 +56,8 @@ struct CraterLayerOptions {
|
|
|
56
56
|
/// The secondaries `SecondaryCraterLayer`s throw from these craters. A `total` count or areal
|
|
57
57
|
/// fraction map counts them too, so craters too small to throw secondaries the map measures
|
|
58
58
|
/// are drawn at the map less those secondaries' density there; larger craters, which throw
|
|
59
|
-
/// them, follow the map alone
|
|
59
|
+
/// them, follow the map alone; with spacing they also take precedence over smaller craters, so
|
|
60
|
+
/// the throwers never depend on what they throw at. Not with `generation.maxCraters`.
|
|
60
61
|
std::vector<SecondaryCraterOptions> secondaries{};
|
|
61
62
|
};
|
|
62
63
|
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
namespace terraingen {
|
|
10
10
|
|
|
11
|
+
CraterState DegradationModel::WornState(const Crater& crater, double rate) const {
|
|
12
|
+
Crater older = crater;
|
|
13
|
+
older.ageGyr *= rate;
|
|
14
|
+
return State(older);
|
|
15
|
+
}
|
|
16
|
+
|
|
11
17
|
NoDegradation::NoDegradation(FreshMorphometry fresh, std::optional<double> depthRatio)
|
|
12
18
|
: fresh_(std::move(fresh)), depthRatio_(depthRatio) {
|
|
13
19
|
if (!fresh_) {
|
|
@@ -18,6 +18,13 @@ class DegradationModel {
|
|
|
18
18
|
/// @throws std::domain_error if the crater's diameter is not positive and finite, or the model
|
|
19
19
|
/// is not defined for it.
|
|
20
20
|
virtual CraterState State(const Crater& crater) const = 0;
|
|
21
|
+
|
|
22
|
+
/// The crater's state had it worn `rate` times as fast as on level ground, as on a steep
|
|
23
|
+
/// regional slope. By default it is `State` of the crater `rate` times older, which suits
|
|
24
|
+
/// models whose wear follows age alone.
|
|
25
|
+
/// @param rate At least 1.
|
|
26
|
+
/// @throws std::domain_error as `State`.
|
|
27
|
+
virtual CraterState WornState(const Crater& crater, double rate) const;
|
|
21
28
|
};
|
|
22
29
|
|
|
23
30
|
/// Every crater stays as `fresh` makes it, optionally with one depth/diameter ratio for all.
|