terraingenpy 0.1.1.dev82__tar.gz → 0.1.1.dev91__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.
Files changed (877) hide show
  1. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/CHANGELOG.md +7 -1
  2. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/CMakeLists.txt +1 -1
  3. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/PKG-INFO +1 -1
  4. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_max_slope.json +1 -1
  5. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_rolling.json +1 -1
  6. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_shapes.json +1 -1
  7. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_pavement.json +1 -1
  8. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_sand_shadows.json +1 -1
  9. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_strata.json +2 -2
  10. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_ventifacts.json +2 -2
  11. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/albedo/example_albedo_options.py +7 -2
  12. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/boulders/example_boulders_positioning.py +1 -1
  13. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_irregularity.py +2 -2
  14. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/build.cpp +59 -4
  15. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/config.h +32 -7
  16. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/feature_lists.cpp +4 -4
  17. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/boulders.h +42 -2
  18. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/common.h +34 -0
  19. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/craters.h +8 -0
  20. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/enums.h +19 -0
  21. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/layers.h +34 -0
  22. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/generate.h +4 -3
  23. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/validate.cpp +54 -2
  24. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/CMakeLists.txt +3 -0
  25. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/abundance.cpp +5 -5
  26. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder.h +61 -2
  27. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_layer.cpp +84 -24
  28. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_layer.h +17 -6
  29. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_models.cpp +9 -2
  30. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_models.h +7 -1
  31. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_options.cpp +36 -0
  32. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_options.h +18 -5
  33. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/crater.cpp +18 -2
  34. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/crater.h +31 -4
  35. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/generation/population.h +2 -1
  36. terraingenpy-0.1.1.dev91/terraingen/layers/craters/generation/resolved_limit.cpp +45 -0
  37. terraingenpy-0.1.1.dev91/terraingen/layers/craters/generation/resolved_limit.h +31 -0
  38. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/apply.cpp +8 -9
  39. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/apply.h +2 -1
  40. terraingenpy-0.1.1.dev91/terraingen/layers/craters/shaping/explicit_state.cpp +143 -0
  41. terraingenpy-0.1.1.dev91/terraingen/layers/craters/shaping/explicit_state.h +37 -0
  42. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/prepared.cpp +6 -2
  43. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/prepared.h +7 -2
  44. terraingenpy-0.1.1.dev91/terraingen/layers/midpoint_displacement.cpp +368 -0
  45. terraingenpy-0.1.1.dev91/terraingen/layers/midpoint_displacement.h +150 -0
  46. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/albedo.cpp +12 -11
  47. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/boulders.cpp +67 -23
  48. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/craters.cpp +65 -18
  49. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/layers.cpp +36 -0
  50. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/mesh.cpp +18 -8
  51. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/options.h +37 -0
  52. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/pipeline.cpp +6 -6
  53. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/sources.cpp +73 -7
  54. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/tables.h +10 -9
  55. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/util.cpp +9 -3
  56. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/terraingen/render.py +1 -1
  57. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/streams.h +3 -1
  58. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/cell_loops.cpp +12 -0
  59. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/cell_loops.h +9 -0
  60. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/geotiff.h +11 -0
  61. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/geotiff_read.cpp +45 -16
  62. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/tiff_format.h +4 -0
  63. terraingenpy-0.1.1.dev91/terraingen/raster/resample.cpp +168 -0
  64. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/resample.h +32 -0
  65. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/CMakeLists.txt +1 -0
  66. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/field.cpp +16 -0
  67. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/field.h +18 -0
  68. terraingenpy-0.1.1.dev91/terraingen/sources/geotiff_source.cpp +111 -0
  69. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/geotiff_source.h +30 -32
  70. terraingenpy-0.1.1.dev91/terraingen/sources/raster_source.cpp +214 -0
  71. terraingenpy-0.1.1.dev91/terraingen/sources/raster_source.h +181 -0
  72. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/source.h +12 -0
  73. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/source_chain.cpp +9 -0
  74. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/source_chain.h +4 -0
  75. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/terraingen.h +3 -0
  76. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/geometry.h +8 -0
  77. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_albedo.py +7 -3
  78. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_boulders.py +54 -5
  79. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_craters.py +61 -1
  80. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_layers.py +26 -2
  81. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_meshes.py +3 -5
  82. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_raster.py +1 -1
  83. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_render.py +3 -3
  84. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_sources.py +82 -0
  85. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_util.py +5 -0
  86. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/angles_test.cpp +28 -0
  87. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/build_test.cpp +6 -2
  88. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/feature_lists_test.cpp +24 -5
  89. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/generate_terrain_test.cpp +37 -0
  90. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/json_io_test.cpp +38 -2
  91. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/schema_test.cpp +2 -0
  92. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/validate_config_test.cpp +85 -0
  93. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/write_outputs_test.cpp +5 -4
  94. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/CMakeLists.txt +4 -0
  95. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/boulders/boulder_layer_test.cpp +1 -1
  96. terraingenpy-0.1.1.dev91/tests/unit/layers/boulders/manual_boulder_test.cpp +351 -0
  97. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/crater_layer_test.cpp +80 -0
  98. terraingenpy-0.1.1.dev91/tests/unit/layers/craters/crater_test.cpp +129 -0
  99. terraingenpy-0.1.1.dev91/tests/unit/layers/craters/generation/resolved_limit_test.cpp +97 -0
  100. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/shaping/apply_test.cpp +3 -1
  101. terraingenpy-0.1.1.dev91/tests/unit/layers/craters/shaping/explicit_state_test.cpp +272 -0
  102. terraingenpy-0.1.1.dev91/tests/unit/layers/midpoint_displacement_test.cpp +318 -0
  103. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/features_test.cpp +88 -0
  104. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/cell_loops_test.cpp +11 -0
  105. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/geotiff_test.cpp +89 -0
  106. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/resample_test.cpp +115 -0
  107. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/sources/CMakeLists.txt +1 -0
  108. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/sources/field_test.cpp +18 -0
  109. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/sources/flat_source_test.cpp +6 -0
  110. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/sources/geotiff_source_test.cpp +162 -0
  111. terraingenpy-0.1.1.dev91/tests/unit/sources/raster_source_test.cpp +167 -0
  112. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/sources/source_chain_test.cpp +19 -0
  113. terraingenpy-0.1.1.dev82/terraingen/raster/resample.cpp +0 -126
  114. terraingenpy-0.1.1.dev82/terraingen/sources/geotiff_source.cpp +0 -170
  115. terraingenpy-0.1.1.dev82/tests/unit/layers/craters/crater_test.cpp +0 -54
  116. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.clang-format +0 -0
  117. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.clang-tidy +0 -0
  118. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.cmake-format.yaml +0 -0
  119. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.dockerignore +0 -0
  120. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.gitattributes +0 -0
  121. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  122. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  123. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  124. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.github/pull_request_template.md +0 -0
  125. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.github/scripts/install-lavapipe-windows.sh +0 -0
  126. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.github/workflows/ci.yml +0 -0
  127. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.gitignore +0 -0
  128. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/.pre-commit-config.yaml +0 -0
  129. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/CITATION.cff +0 -0
  130. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/CONTRIBUTING.md +0 -0
  131. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/Dockerfile +0 -0
  132. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/LICENSE +0 -0
  133. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/README.md +0 -0
  134. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/README.md +0 -0
  135. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/moon_01_diff_4k.jpg +0 -0
  136. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/moon_01_disp_4k.png +0 -0
  137. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/moon_01_nor_gl_4k.exr +0 -0
  138. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/moon_01_rough_4k.exr +0 -0
  139. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/seaside_rock_ao_2k.png +0 -0
  140. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/seaside_rock_arm_2k.png +0 -0
  141. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/seaside_rock_diff_2k.png +0 -0
  142. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/seaside_rock_disp_2k.png +0 -0
  143. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/seaside_rock_nor_dx_2k.exr +0 -0
  144. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/seaside_rock_nor_gl_2k.exr +0 -0
  145. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/assets/textures/seaside_rock_rough_2k.exr +0 -0
  146. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/BuildInfo.cmake +0 -0
  147. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/CoverageBadge.cmake +0 -0
  148. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/EmbedFile.cmake +0 -0
  149. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/Kernel.cpp.in +0 -0
  150. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/TerrainGenPackaging.cmake +0 -0
  151. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/TerrainGenSlang.cmake +0 -0
  152. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/TerrainGenTesting.cmake +0 -0
  153. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/terraingenConfig.cmake.in +0 -0
  154. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/benchmark.cmake +0 -0
  155. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/ernie.cmake +0 -0
  156. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/googletest.cmake +0 -0
  157. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/mesh_formats.cmake +0 -0
  158. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/miniz.cmake +0 -0
  159. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/nanobind.cmake +0 -0
  160. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/nvrtc.cmake +0 -0
  161. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/slang.cmake +0 -0
  162. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/volk.cmake +0 -0
  163. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/cmake/third_party/vulkan_headers.cmake +0 -0
  164. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/.gitignore +0 -0
  165. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/Makefile +0 -0
  166. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/README.md +0 -0
  167. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/api/cpp.md +0 -0
  168. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/api/python.md +0 -0
  169. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/concepts/index.md +0 -0
  170. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/css/extra.css +0 -0
  171. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/getting-started/command-line.md +0 -0
  172. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/getting-started/gui.md +0 -0
  173. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/getting-started/index.md +0 -0
  174. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/getting-started/installation.md +0 -0
  175. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/getting-started/quickstart.md +0 -0
  176. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/guides/index.md +0 -0
  177. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/images/hero_mk1_sn101_connecting_ridge.jpg +0 -0
  178. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/images/hero_mk1_sn101_connecting_ridge_split.jpg +0 -0
  179. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/index.md +0 -0
  180. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/overrides/home.html +0 -0
  181. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/overrides/partials/header.html +0 -0
  182. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/requirements.txt +0 -0
  183. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/scripts/generate_schema.py +0 -0
  184. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/docs/validation/index.md +0 -0
  185. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/README.md +0 -0
  186. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/ages/example_ages_fresh.json +0 -0
  187. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/ages/example_ages_freshness.json +0 -0
  188. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/ages/example_ages_steady_state.json +0 -0
  189. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/ages/example_ages_uniform.json +0 -0
  190. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_blast_zone.json +0 -0
  191. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_crater_rays.json +0 -0
  192. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_fresh_crater.json +0 -0
  193. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_moon_site.json +0 -0
  194. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_new_crater.json +0 -0
  195. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_oblique_rays.json +0 -0
  196. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_rgb.json +0 -0
  197. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_rocks_and_slopes.json +0 -0
  198. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/albedo/example_albedo_synthetic.json +0 -0
  199. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_buried.json +0 -0
  200. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_ejecta.json +0 -0
  201. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_exposure.json +0 -0
  202. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_fragments.json +0 -0
  203. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_layer.json +0 -0
  204. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_models.json +0 -0
  205. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_patches.json +0 -0
  206. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_rock_abundance.json +0 -0
  207. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_scene.json +0 -0
  208. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_slope_map.json +0 -0
  209. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_sp8023.json +0 -0
  210. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/boulders/example_boulders_thomas_clusters.json +0 -0
  211. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_catalog_and_map.json +0 -0
  212. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_datum.json +0 -0
  213. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_degradation_diffusion.json +0 -0
  214. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_degradation_none.json +0 -0
  215. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_interior_replacement.json +0 -0
  216. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_irregular.json +0 -0
  217. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_manual.json +0 -0
  218. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_max_craters.json +0 -0
  219. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_profile_complex.json +0 -0
  220. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_profile_martin_parkes_dunstan.json +0 -0
  221. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_rim_smoothing_soft.json +0 -0
  222. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_secondaries.json +0 -0
  223. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_secondary_rays.json +0 -0
  224. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_simple.json +0 -0
  225. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_slopes.json +0 -0
  226. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_smoothed_rims.json +0 -0
  227. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_spacing.json +0 -0
  228. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_texture.json +0 -0
  229. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/craters/example_craters_wall_marks.json +0 -0
  230. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/distributions/example_distributions_moore_rough_mare.json +0 -0
  231. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/distributions/example_distributions_piecewise_power_law.json +0 -0
  232. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/distributions/example_distributions_piecewise_uniform.json +0 -0
  233. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/distributions/example_distributions_power_law.json +0 -0
  234. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/distributions/example_distributions_tabulated.json +0 -0
  235. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/distributions/example_distributions_trask_equilibrium.json +0 -0
  236. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/distributions/example_distributions_viper.json +0 -0
  237. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/layers/example_layers_regions.json +0 -0
  238. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/layers/example_layers_roughness.json +0 -0
  239. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/layers/example_layers_scale_and_clamp.json +0 -0
  240. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_asteroid_body_mesh.json +0 -0
  241. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_bedforms.json +0 -0
  242. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_craters.json +0 -0
  243. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_dunes.json +0 -0
  244. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_exposure.json +0 -0
  245. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mars_sand_fill.json +0 -0
  246. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_mercury_site.json +0 -0
  247. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_moon_body_mesh.json +0 -0
  248. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/planets/example_planets_moon_site.json +0 -0
  249. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_billow.json +0 -0
  250. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_cellular.json +0 -0
  251. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_domain_warp.json +0 -0
  252. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_fbm.json +0 -0
  253. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_layered.json +0 -0
  254. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_ridged.json +0 -0
  255. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_roughness.json +0 -0
  256. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/config/terrain/example_terrain_voronoi.json +0 -0
  257. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/CMakeLists.txt +0 -0
  258. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/ages/example_ages_models.cpp +0 -0
  259. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/albedo/example_albedo_crater_rays.cpp +0 -0
  260. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/boulders/example_boulders_ejecta.cpp +0 -0
  261. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/boulders/example_boulders_layer.cpp +0 -0
  262. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/boulders/example_boulders_shapes.cpp +0 -0
  263. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/common/browser.cpp +0 -0
  264. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/common/browser.h +0 -0
  265. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/common/example.cpp +0 -0
  266. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/common/example.h +0 -0
  267. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/common/main.cpp +0 -0
  268. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/common/standalone_main.cpp +0 -0
  269. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/config/example_config_load.cpp +0 -0
  270. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/craters/example_craters_degradation.cpp +0 -0
  271. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/craters/example_craters_manual.cpp +0 -0
  272. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/craters/example_craters_profiles.cpp +0 -0
  273. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/craters/example_craters_secondaries.cpp +0 -0
  274. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/craters/example_craters_simple.cpp +0 -0
  275. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/distributions/example_distributions_csfd.cpp +0 -0
  276. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/layers/example_layers_custom.cpp +0 -0
  277. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/layers/example_layers_regions.cpp +0 -0
  278. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/planets/example_planets_moon.cpp +0 -0
  279. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/sources/example_sources_raster_detail.cpp +0 -0
  280. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/terrain/example_terrain_fbm.cpp +0 -0
  281. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/terrain/example_terrain_layered.cpp +0 -0
  282. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/tiles/example_tiles_body_pyramid.cpp +0 -0
  283. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/tiles/example_tiles_quadtree.cpp +0 -0
  284. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/cpp/tiles/example_tiles_rover_contacts.cpp +0 -0
  285. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/__main__.py +0 -0
  286. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/_browser.py +0 -0
  287. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/_common.py +0 -0
  288. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/_harness.py +0 -0
  289. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/_images.py +0 -0
  290. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/ages/example_ages_models.py +0 -0
  291. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/albedo/example_albedo_crater_rays.py +0 -0
  292. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/albedo/example_albedo_moon_site.py +0 -0
  293. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/boulders/example_boulders_exposure.py +0 -0
  294. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/boulders/example_boulders_layer.py +0 -0
  295. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/boulders/example_boulders_shapes.py +0 -0
  296. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/boulders/example_boulders_size_models.py +0 -0
  297. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/config/example_config_load.py +0 -0
  298. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_age_sweep.py +0 -0
  299. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_apply_options.py +0 -0
  300. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_degradation.py +0 -0
  301. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_manual.py +0 -0
  302. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_positioning.py +0 -0
  303. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_profiles.py +0 -0
  304. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_rim_smoothing.py +0 -0
  305. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_secondaries.py +0 -0
  306. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/craters/example_craters_simple.py +0 -0
  307. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/distributions/example_distributions_csfd.py +0 -0
  308. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/distributions/example_distributions_custom.py +0 -0
  309. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/layers/example_layers_custom.py +0 -0
  310. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/layers/example_layers_regions.py +0 -0
  311. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/planets/example_planets_body_mesh.py +0 -0
  312. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/planets/example_planets_mars.py +0 -0
  313. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/planets/example_planets_mars_dunes.py +0 -0
  314. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/planets/example_planets_mars_exposure.py +0 -0
  315. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/planets/example_planets_mercury.py +0 -0
  316. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/planets/example_planets_moon_site.py +0 -0
  317. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/sources/example_sources_chain.py +0 -0
  318. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/sources/example_sources_raster_detail.py +0 -0
  319. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/terrain/example_terrain_fbm.py +0 -0
  320. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/terrain/example_terrain_fractal_types.py +0 -0
  321. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/terrain/example_terrain_hurst_sweep.py +0 -0
  322. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/terrain/example_terrain_layered.py +0 -0
  323. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/terrain/example_terrain_noise_kernels.py +0 -0
  324. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/tiles/example_tiles_body_pyramid.py +0 -0
  325. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/tiles/example_tiles_point_queries.py +0 -0
  326. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/tiles/example_tiles_quadtree.py +0 -0
  327. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/examples/python/tiles/example_tiles_rover_contacts.py +0 -0
  328. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/mkdocs.yml +0 -0
  329. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/pyproject.toml +0 -0
  330. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/CMakeLists.txt +0 -0
  331. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/CMakeLists.txt +0 -0
  332. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/albedo.cpp +0 -0
  333. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/albedo.h +0 -0
  334. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/bands.cpp +0 -0
  335. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/bands.h +0 -0
  336. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/blast_zones.cpp +0 -0
  337. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/blast_zones.h +0 -0
  338. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/brightness_statistics.cpp +0 -0
  339. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/brightness_statistics.h +0 -0
  340. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/crater_albedo.cpp +0 -0
  341. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/crater_albedo.h +0 -0
  342. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/maturity.cpp +0 -0
  343. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/maturity.h +0 -0
  344. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/photometry.cpp +0 -0
  345. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/photometry.h +0 -0
  346. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/raster_albedo.cpp +0 -0
  347. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/raster_albedo.h +0 -0
  348. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/rock_albedo.cpp +0 -0
  349. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/rock_albedo.h +0 -0
  350. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/slope_albedo.cpp +0 -0
  351. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/slope_albedo.h +0 -0
  352. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/splotches.cpp +0 -0
  353. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/splotches.h +0 -0
  354. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/synthetic.cpp +0 -0
  355. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/albedo/synthetic.h +0 -0
  356. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/CMakeLists.txt +0 -0
  357. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/cli.cpp +0 -0
  358. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/cli.h +0 -0
  359. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/CMakeLists.txt +0 -0
  360. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/config_editor.cpp +0 -0
  361. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/config_editor.h +0 -0
  362. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/gui_app.cpp +0 -0
  363. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/gui_app.h +0 -0
  364. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/run.cpp +0 -0
  365. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/run.h +0 -0
  366. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/run_none.cpp +0 -0
  367. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/terrain_scene.cpp +0 -0
  368. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/terrain_scene.h +0 -0
  369. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/gui/widgets.h +0 -0
  370. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/app/main.cpp +0 -0
  371. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/CMakeLists.txt +0 -0
  372. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/build.h +0 -0
  373. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/config.cpp +0 -0
  374. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/albedo.h +0 -0
  375. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/checks.h +0 -0
  376. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/crater_models.h +0 -0
  377. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/fields.h +0 -0
  378. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/json_io.h +0 -0
  379. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/maps.h +0 -0
  380. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/materials.h +0 -0
  381. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/outputs.h +0 -0
  382. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/ranges.h +0 -0
  383. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/fields/sources.h +0 -0
  384. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/generate.cpp +0 -0
  385. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/json.cpp +0 -0
  386. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/json.h +0 -0
  387. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/ranges.cpp +0 -0
  388. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/schema.cpp +0 -0
  389. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/config/validate.h +0 -0
  390. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/CMakeLists.txt +0 -0
  391. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/composition.cpp +0 -0
  392. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/composition.h +0 -0
  393. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/equilibrium.cpp +0 -0
  394. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/equilibrium.h +0 -0
  395. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/exponential_chronology.cpp +0 -0
  396. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/exponential_chronology.h +0 -0
  397. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/golombek_rapp.cpp +0 -0
  398. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/golombek_rapp.h +0 -0
  399. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/ivanov.cpp +0 -0
  400. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/ivanov.h +0 -0
  401. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/log_polynomial.cpp +0 -0
  402. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/log_polynomial.h +0 -0
  403. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/minimum.cpp +0 -0
  404. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/minimum.h +0 -0
  405. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/moore.cpp +0 -0
  406. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/moore.h +0 -0
  407. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/neukum.cpp +0 -0
  408. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/neukum.h +0 -0
  409. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/piecewise_power_law.cpp +0 -0
  410. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/piecewise_power_law.h +0 -0
  411. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/piecewise_uniform.cpp +0 -0
  412. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/piecewise_uniform.h +0 -0
  413. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/power_law.cpp +0 -0
  414. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/power_law.h +0 -0
  415. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/production_surface.cpp +0 -0
  416. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/production_surface.h +0 -0
  417. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/size_frequency.cpp +0 -0
  418. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/size_frequency.h +0 -0
  419. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/sp8023.cpp +0 -0
  420. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/sp8023.h +0 -0
  421. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/spliced.cpp +0 -0
  422. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/spliced.h +0 -0
  423. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/summed.cpp +0 -0
  424. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/summed.h +0 -0
  425. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/synthterrain.cpp +0 -0
  426. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/synthterrain.h +0 -0
  427. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/tabulated.cpp +0 -0
  428. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/tabulated.h +0 -0
  429. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/viper.cpp +0 -0
  430. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/distribution/viper.h +0 -0
  431. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/CMakeLists.txt +0 -0
  432. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/backend.cpp +0 -0
  433. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/backend.h +0 -0
  434. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/cuda.cpp +0 -0
  435. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/cuda.h +0 -0
  436. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/device.h +0 -0
  437. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/kernel.cpp +0 -0
  438. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/kernel.h +0 -0
  439. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/kernel.slang +0 -0
  440. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/metal.cpp +0 -0
  441. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/metal.h +0 -0
  442. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/program.h +0 -0
  443. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/vulkan.cpp +0 -0
  444. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/gpu/vulkan.h +0 -0
  445. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/anchored_plane.cpp +0 -0
  446. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/anchored_plane.h +0 -0
  447. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/bedforms.cpp +0 -0
  448. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/bedforms.h +0 -0
  449. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/bisection.h +0 -0
  450. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_abundance.cpp +0 -0
  451. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_abundance.h +0 -0
  452. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_clusters.cpp +0 -0
  453. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_clusters.h +0 -0
  454. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_fragments.cpp +0 -0
  455. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_fragments.h +0 -0
  456. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_placer.h +0 -0
  457. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_shape.cpp +0 -0
  458. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/boulder_shape.h +0 -0
  459. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/ejecta_index.cpp +0 -0
  460. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/boulders/ejecta_index.h +0 -0
  461. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/ages/age_model.cpp +0 -0
  462. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/ages/age_model.h +0 -0
  463. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/ages/freshness.cpp +0 -0
  464. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/ages/freshness.h +0 -0
  465. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/ages/steady_state.cpp +0 -0
  466. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/ages/steady_state.h +0 -0
  467. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/crater_layer.cpp +0 -0
  468. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/crater_layer.h +0 -0
  469. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/crater_placer.cpp +0 -0
  470. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/crater_placer.h +0 -0
  471. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/degradation_model.cpp +0 -0
  472. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/degradation_model.h +0 -0
  473. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/diffusion.cpp +0 -0
  474. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/diffusion.h +0 -0
  475. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/diffusivities.cpp +0 -0
  476. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/diffusivities.h +0 -0
  477. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/freshness.cpp +0 -0
  478. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/freshness.h +0 -0
  479. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/degradation/state.h +0 -0
  480. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/generation/cell_cache.cpp +0 -0
  481. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/generation/cell_cache.h +0 -0
  482. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/generation/population.cpp +0 -0
  483. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/generation/spacing.cpp +0 -0
  484. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/generation/spacing.h +0 -0
  485. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/profiles/complex.cpp +0 -0
  486. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/profiles/complex.h +0 -0
  487. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/profiles/fassett_thomson.cpp +0 -0
  488. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/profiles/fassett_thomson.h +0 -0
  489. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/profiles/martin_parkes_dunstan.cpp +0 -0
  490. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/profiles/martin_parkes_dunstan.h +0 -0
  491. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/profiles/profile.h +0 -0
  492. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/rays.cpp +0 -0
  493. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/rays.h +0 -0
  494. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/secondaries.cpp +0 -0
  495. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/secondaries.h +0 -0
  496. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/secondary_model.cpp +0 -0
  497. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/secondary_model.h +0 -0
  498. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/apply_options.cpp +0 -0
  499. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/apply_options.h +0 -0
  500. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/attributes.cpp +0 -0
  501. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/attributes.h +0 -0
  502. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/crater_kernel.cpp +0 -0
  503. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/crater_kernel.h +0 -0
  504. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/datum.cpp +0 -0
  505. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/datum.h +0 -0
  506. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/irregularity.cpp +0 -0
  507. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/irregularity.h +0 -0
  508. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/morphometry.cpp +0 -0
  509. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/morphometry.h +0 -0
  510. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/slope.cpp +0 -0
  511. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/craters/shaping/slope.h +0 -0
  512. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/density_map.cpp +0 -0
  513. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/density_map.h +0 -0
  514. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/detail.cpp +0 -0
  515. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/detail.h +0 -0
  516. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/dunes.cpp +0 -0
  517. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/dunes.h +0 -0
  518. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/evaluation_cache.h +0 -0
  519. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/exposure.cpp +0 -0
  520. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/exposure.h +0 -0
  521. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/fade.cpp +0 -0
  522. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/fade.h +0 -0
  523. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/ground.cpp +0 -0
  524. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/ground.h +0 -0
  525. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernel.h +0 -0
  526. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernels/cell.h +0 -0
  527. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernels/crater_body_datums.slang +0 -0
  528. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernels/crater_datums.slang +0 -0
  529. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernels/craters.h +0 -0
  530. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernels/craters.slang +0 -0
  531. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernels/noise_relief.h +0 -0
  532. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/kernels/noise_relief.slang +0 -0
  533. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/lattice.h +0 -0
  534. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/layer.cpp +0 -0
  535. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/layer.h +0 -0
  536. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/material.cpp +0 -0
  537. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/material.h +0 -0
  538. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/noise_relief.cpp +0 -0
  539. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/noise_relief.h +0 -0
  540. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/pavement.cpp +0 -0
  541. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/pavement.h +0 -0
  542. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/region.cpp +0 -0
  543. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/region.h +0 -0
  544. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/roughness.cpp +0 -0
  545. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/roughness.h +0 -0
  546. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/sample_block.cpp +0 -0
  547. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/sample_block.h +0 -0
  548. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/sand_fill.cpp +0 -0
  549. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/sand_fill.h +0 -0
  550. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/sand_shadow.cpp +0 -0
  551. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/sand_shadow.h +0 -0
  552. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/strata.cpp +0 -0
  553. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/strata.h +0 -0
  554. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/transforms.cpp +0 -0
  555. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/layers/transforms.h +0 -0
  556. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/CMakeLists.txt +0 -0
  557. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/formats.h +0 -0
  558. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/gltf.cpp +0 -0
  559. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/icq.cpp +0 -0
  560. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/icq.h +0 -0
  561. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/mesh_io.cpp +0 -0
  562. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/mesh_io.h +0 -0
  563. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/obj.cpp +0 -0
  564. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/io/stl.cpp +0 -0
  565. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/mesh.cpp +0 -0
  566. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/mesh.h +0 -0
  567. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/polyhedra.cpp +0 -0
  568. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/polyhedra.h +0 -0
  569. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/shape_model.cpp +0 -0
  570. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/mesh/shape_model.h +0 -0
  571. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/CMakeLists.txt +0 -0
  572. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/fractal.h +0 -0
  573. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/hash.h +0 -0
  574. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/lattice.h +0 -0
  575. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/noise_layers.h +0 -0
  576. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/perlin.h +0 -0
  577. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/simplex.h +0 -0
  578. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/validate.cpp +0 -0
  579. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/validate.h +0 -0
  580. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/value.h +0 -0
  581. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/noise/worley.h +0 -0
  582. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/CMakeLists.txt +0 -0
  583. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/body_mesh.cpp +0 -0
  584. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/body_mesh.h +0 -0
  585. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/features.cpp +0 -0
  586. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/features.h +0 -0
  587. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/height_mesh.cpp +0 -0
  588. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/height_mesh.h +0 -0
  589. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/materials.cpp +0 -0
  590. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/materials.h +0 -0
  591. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/terrain.cpp +0 -0
  592. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/terrain.h +0 -0
  593. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/tiles.cpp +0 -0
  594. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/pipeline/tiles.h +0 -0
  595. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/CMakeLists.txt +0 -0
  596. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/arrays.h +0 -0
  597. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/bindings.h +0 -0
  598. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/casters.h +0 -0
  599. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/common.h +0 -0
  600. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/crater_models.cpp +0 -0
  601. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/distribution.cpp +0 -0
  602. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/gpu.cpp +0 -0
  603. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/materials.cpp +0 -0
  604. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/module.cpp +0 -0
  605. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/noise.cpp +0 -0
  606. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/objects.h +0 -0
  607. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/random.cpp +0 -0
  608. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/raster.cpp +0 -0
  609. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/src/trampolines.h +0 -0
  610. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/python/terraingen/__init__.py +0 -0
  611. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/CMakeLists.txt +0 -0
  612. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/philox.h +0 -0
  613. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/samplers.cpp +0 -0
  614. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/samplers.h +0 -0
  615. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/stream.cpp +0 -0
  616. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/stream.h +0 -0
  617. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/value_distribution.cpp +0 -0
  618. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/random/value_distribution.h +0 -0
  619. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/CMakeLists.txt +0 -0
  620. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/gaussian_blur.cpp +0 -0
  621. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/gaussian_blur.h +0 -0
  622. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geo_transform.h +0 -0
  623. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/geotiff.cpp +0 -0
  624. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/geotiff_write.cpp +0 -0
  625. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/tiff_codecs.cpp +0 -0
  626. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/tiff_codecs.h +0 -0
  627. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/geotiff/tiff_format.cpp +0 -0
  628. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/grid.cpp +0 -0
  629. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/grid.h +0 -0
  630. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/raster.h +0 -0
  631. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/raster/raster_stats.h +0 -0
  632. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/flat_source.cpp +0 -0
  633. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/flat_source.h +0 -0
  634. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/synthetic_terrain.cpp +0 -0
  635. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/sources/synthetic_terrain.h +0 -0
  636. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/CMakeLists.txt +0 -0
  637. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/arithmetic.h +0 -0
  638. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/bits.h +0 -0
  639. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/build_info.cpp.in +0 -0
  640. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/build_info.h +0 -0
  641. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/cells.h +0 -0
  642. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/checks.cpp +0 -0
  643. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/checks.h +0 -0
  644. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/cube_faces.h +0 -0
  645. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/cube_sphere_cells.cpp +0 -0
  646. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/fft.cpp +0 -0
  647. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/fft.h +0 -0
  648. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/files.cpp +0 -0
  649. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/files.h +0 -0
  650. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/log.cpp +0 -0
  651. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/log.h +0 -0
  652. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/lru_cache.h +0 -0
  653. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/overloaded.h +0 -0
  654. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/parallel.cpp +0 -0
  655. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/parallel.h +0 -0
  656. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/planar_cells.cpp +0 -0
  657. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/portable.h +0 -0
  658. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/radial_shape.cpp +0 -0
  659. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/radial_shape.h +0 -0
  660. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/span.h +0 -0
  661. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/special_functions.cpp +0 -0
  662. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/special_functions.h +0 -0
  663. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/surface.cpp +0 -0
  664. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/surface.h +0 -0
  665. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/text.cpp +0 -0
  666. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/text.h +0 -0
  667. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/version.cpp +0 -0
  668. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/terraingen/util/version.h.in +0 -0
  669. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/CMakeLists.txt +0 -0
  670. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/benchmark/CMakeLists.txt +0 -0
  671. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/benchmark/bench_boulders.cpp +0 -0
  672. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/benchmark/bench_craters.cpp +0 -0
  673. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/benchmark/bench_grids.cpp +0 -0
  674. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/benchmark/bench_point_queries.cpp +0 -0
  675. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/benchmark/bench_python_subclasses.py +0 -0
  676. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/benchmark/fixtures.h +0 -0
  677. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/golden/CMakeLists.txt +0 -0
  678. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/golden/noise/kernels_test.cpp +0 -0
  679. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/integration/CMakeLists.txt +0 -0
  680. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/integration/build_info_stable.cmake +0 -0
  681. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/integration/examples/CMakeLists.txt +0 -0
  682. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/integration/package/CMakeLists.txt +0 -0
  683. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/integration/package/main.cpp +0 -0
  684. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/integration/package/test_debian_packages.cmake +0 -0
  685. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/CMakeLists.txt +0 -0
  686. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/conftest.py +0 -0
  687. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_config.py +0 -0
  688. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_crater_models.py +0 -0
  689. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_distributions.py +0 -0
  690. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_examples_harness.py +0 -0
  691. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_gpu.py +0 -0
  692. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_noise.py +0 -0
  693. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_pipeline.py +0 -0
  694. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_random.py +0 -0
  695. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_stubs.py +0 -0
  696. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/python/test_tiles.py +0 -0
  697. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/CMakeLists.txt +0 -0
  698. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/distribution/crater_references_test.cpp +0 -0
  699. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/distribution/size_frequency_test.cpp +0 -0
  700. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/layers/boulders/boulder_layer_test.cpp +0 -0
  701. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/layers/craters/ages/ages_test.cpp +0 -0
  702. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/layers/craters/population_test.cpp +0 -0
  703. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/layers/roughness_test.cpp +0 -0
  704. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/statistical/random/random_test.cpp +0 -0
  705. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/support/log_capture.h +0 -0
  706. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/support/lunar_craters.h +0 -0
  707. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/support/raster_equality.h +0 -0
  708. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/support/statistics.h +0 -0
  709. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/support/temp_path.h +0 -0
  710. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/CMakeLists.txt +0 -0
  711. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/CMakeLists.txt +0 -0
  712. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/albedo_test.cpp +0 -0
  713. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/bands_test.cpp +0 -0
  714. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/blast_zones_test.cpp +0 -0
  715. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/crater_albedo_test.cpp +0 -0
  716. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/photometry_test.cpp +0 -0
  717. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/rock_albedo_test.cpp +0 -0
  718. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/slope_albedo_test.cpp +0 -0
  719. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/albedo/splotches_test.cpp +0 -0
  720. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/app/CMakeLists.txt +0 -0
  721. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/app/cli_test.cpp +0 -0
  722. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/app/gui/CMakeLists.txt +0 -0
  723. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/app/gui/config_editor_test.cpp +0 -0
  724. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/app/gui/gui_app_test.cpp +0 -0
  725. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/app/gui/terrain_scene_test.cpp +0 -0
  726. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/CMakeLists.txt +0 -0
  727. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/checks_test.cpp +0 -0
  728. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/config_test.cpp +0 -0
  729. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/configs.h +0 -0
  730. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/json_parse_errors_test.cpp +0 -0
  731. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/json_read_test.cpp +0 -0
  732. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/ranges_test.cpp +0 -0
  733. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/config/validate_sources_test.cpp +0 -0
  734. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/CMakeLists.txt +0 -0
  735. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/composition_test.cpp +0 -0
  736. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/equilibrium_test.cpp +0 -0
  737. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/exponential_chronology_test.cpp +0 -0
  738. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/golombek_rapp_test.cpp +0 -0
  739. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/ivanov_test.cpp +0 -0
  740. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/log_polynomial_test.cpp +0 -0
  741. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/minimum_test.cpp +0 -0
  742. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/moore_test.cpp +0 -0
  743. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/neukum_test.cpp +0 -0
  744. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/piecewise_power_law_test.cpp +0 -0
  745. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/piecewise_uniform_test.cpp +0 -0
  746. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/power_law_test.cpp +0 -0
  747. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/production_surface_test.cpp +0 -0
  748. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/size_frequency_test.cpp +0 -0
  749. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/sp8023_test.cpp +0 -0
  750. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/spliced_test.cpp +0 -0
  751. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/summed_test.cpp +0 -0
  752. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/synthterrain_test.cpp +0 -0
  753. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/tabulated_test.cpp +0 -0
  754. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/distribution/viper_test.cpp +0 -0
  755. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/examples/CMakeLists.txt +0 -0
  756. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/examples/example_browser_test.cpp +0 -0
  757. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/examples/example_harness_test.cpp +0 -0
  758. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/gpu/CMakeLists.txt +0 -0
  759. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/gpu/backend_test.cpp +0 -0
  760. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/gpu/kernels/hash_conformance.slang +0 -0
  761. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/gpu/kernels/noise_conformance.slang +0 -0
  762. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/gpu/noise_test.cpp +0 -0
  763. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/gpu/vulkan_test.cpp +0 -0
  764. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/anchored_plane_test.cpp +0 -0
  765. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/bedforms_test.cpp +0 -0
  766. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/bisection_test.cpp +0 -0
  767. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/boulders/boulder_fragments_test.cpp +0 -0
  768. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/boulders/boulder_models_test.cpp +0 -0
  769. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/boulders/boulder_options_test.cpp +0 -0
  770. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/boulders/boulder_shape_test.cpp +0 -0
  771. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/boulders/ejecta_index_test.cpp +0 -0
  772. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/ages/age_model_test.cpp +0 -0
  773. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/ages/freshness_test.cpp +0 -0
  774. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/ages/steady_state_test.cpp +0 -0
  775. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/degradation/degradation_model_test.cpp +0 -0
  776. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/degradation/diffusion_test.cpp +0 -0
  777. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/degradation/freshness_test.cpp +0 -0
  778. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/generation/cell_cache_test.cpp +0 -0
  779. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/generation/population_test.cpp +0 -0
  780. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/generation/spacing_test.cpp +0 -0
  781. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/profiles/complex_test.cpp +0 -0
  782. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/profiles/fassett_thomson_test.cpp +0 -0
  783. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/profiles/martin_parkes_dunstan_test.cpp +0 -0
  784. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/secondaries_test.cpp +0 -0
  785. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/shaping/attributes_test.cpp +0 -0
  786. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/shaping/crater_kernel_test.cpp +0 -0
  787. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/shaping/datum_test.cpp +0 -0
  788. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/shaping/irregularity_test.cpp +0 -0
  789. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/shaping/morphometry_test.cpp +0 -0
  790. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/shaping/slope_test.cpp +0 -0
  791. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/craters/sphere_test.cpp +0 -0
  792. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/density_map_test.cpp +0 -0
  793. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/detail_test.cpp +0 -0
  794. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/dunes_test.cpp +0 -0
  795. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/evaluation_cache_test.cpp +0 -0
  796. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/exposure_test.cpp +0 -0
  797. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/fade_test.cpp +0 -0
  798. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/ground_test.cpp +0 -0
  799. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/lattice_test.cpp +0 -0
  800. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/layer_test.cpp +0 -0
  801. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/noise_relief_test.cpp +0 -0
  802. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/pavement_test.cpp +0 -0
  803. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/region_test.cpp +0 -0
  804. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/roughness_test.cpp +0 -0
  805. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/sample_block_test.cpp +0 -0
  806. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/sand_fill_test.cpp +0 -0
  807. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/sand_shadow_test.cpp +0 -0
  808. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/sphere_layers_test.cpp +0 -0
  809. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/strata_test.cpp +0 -0
  810. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/layers/transforms_test.cpp +0 -0
  811. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/mesh/CMakeLists.txt +0 -0
  812. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/mesh/io/icq_test.cpp +0 -0
  813. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/mesh/io/mesh_io_test.cpp +0 -0
  814. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/mesh/mesh_test.cpp +0 -0
  815. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/mesh/polyhedra_test.cpp +0 -0
  816. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/mesh/shape_model_test.cpp +0 -0
  817. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/mesh/support.h +0 -0
  818. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/CMakeLists.txt +0 -0
  819. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/fractal_test.cpp +0 -0
  820. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/hash_test.cpp +0 -0
  821. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/noise3_test.cpp +0 -0
  822. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/noise_layers_test.cpp +0 -0
  823. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/perlin_test.cpp +0 -0
  824. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/simplex_test.cpp +0 -0
  825. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/validate_test.cpp +0 -0
  826. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/value_test.cpp +0 -0
  827. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/noise/worley_test.cpp +0 -0
  828. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/CMakeLists.txt +0 -0
  829. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/height_mesh_test.cpp +0 -0
  830. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/materials_test.cpp +0 -0
  831. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/terrain_test.cpp +0 -0
  832. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/terrain_tiles_test.cpp +0 -0
  833. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/terrains.h +0 -0
  834. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/tile_cache_test.cpp +0 -0
  835. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/pipeline/tiling_test.cpp +0 -0
  836. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/random/CMakeLists.txt +0 -0
  837. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/random/philox_test.cpp +0 -0
  838. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/random/samplers_test.cpp +0 -0
  839. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/random/stream_test.cpp +0 -0
  840. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/random/value_distribution_test.cpp +0 -0
  841. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/CMakeLists.txt +0 -0
  842. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/gaussian_blur_test.cpp +0 -0
  843. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/gdal_fixtures.h +0 -0
  844. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/generate_geotiff_fixtures.py +0 -0
  845. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/geo_transform_test.cpp +0 -0
  846. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/geotiff_fixtures.inc +0 -0
  847. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/grid_test.cpp +0 -0
  848. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/raster_stats_test.cpp +0 -0
  849. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/raster_test.cpp +0 -0
  850. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/raster/tiff_format_test.cpp +0 -0
  851. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/sources/synthetic_terrain_test.cpp +0 -0
  852. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/CMakeLists.txt +0 -0
  853. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/cells_test.cpp +0 -0
  854. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/checks_test.cpp +0 -0
  855. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/fft_test.cpp +0 -0
  856. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/geometry_test.cpp +0 -0
  857. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/log_test.cpp +0 -0
  858. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/lru_cache_test.cpp +0 -0
  859. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/overloaded_test.cpp +0 -0
  860. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/parallel_test.cpp +0 -0
  861. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/radial_shape_test.cpp +0 -0
  862. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/span_test.cpp +0 -0
  863. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/special_functions_test.cpp +0 -0
  864. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/surface_test.cpp +0 -0
  865. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/text_test.cpp +0 -0
  866. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/tests/unit/util/version_test.cpp +0 -0
  867. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/README.md +0 -0
  868. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/cgltf/LICENSE +0 -0
  869. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/cgltf/cgltf.h +0 -0
  870. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/cgltf/cgltf_write.h +0 -0
  871. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/miniz/LICENSE +0 -0
  872. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/miniz/miniz.c +0 -0
  873. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/miniz/miniz.h +0 -0
  874. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/nlohmann/LICENSE.MIT +0 -0
  875. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/nlohmann/json.hpp +0 -0
  876. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/tinyobjloader/LICENSE +0 -0
  877. {terraingenpy-0.1.1.dev82 → terraingenpy-0.1.1.dev91}/third_party/tinyobjloader/tiny_obj_loader.h +0 -0
@@ -23,10 +23,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
23
23
  - Crater shaping and datum fitting on the GPU on spheres, ellipsoids and shape models, not only on planes.
24
24
  - Configurations are checked against every field's documented range, and errors name the exact field, such as `layers[2].reach`.
25
25
  - Python options classes document every field with its description and unit, and gain `validate()` and a readable `repr`.
26
+ - `RasterSource`, heights from a raster in memory, shared rather than copied, low-passed and resampled as a GeoTIFF source is; `GeoTiffSource` is now a `RasterSource` of its band.
27
+ - Windowed GeoTIFF reads that decode only the strips or tiles a window meets, and a `region` for GeoTIFF sources that reads only the window it needs while giving the same heights there as the whole file.
28
+ - `Source::ResolutionAt`, the cell size of the data behind each height, and `UnresolvedCraterLimit`, a completeness limit that leaves the craters a DEM already resolves to it and generates only smaller ones; `MinimumField` combines it with a catalog's limit.
29
+ - Midpoint displacement layer: random midpoint displacement (diamond-square) expansion of a DEM or any base lattice to finer spacings, as PANGU expands DEMs (Martin et al. 2014), keeping every coarser node so nested grids share their cells, with the scale and fractal dimension estimated from the base when not given.
30
+ - Manual craters with an explicit rim-to-floor depth and rim height, in place of what the degradation model and age give; diffusion profiles solve for the age that reaches the depth.
31
+ - Manual boulders that fix any of their height, burial, yaw, lean, tilt, rest, wear and shape seed; unset fields are drawn as for generated boulders, and fixed ones are neither re-settled nor broken.
26
32
 
27
33
  ### Changed
28
34
 
29
- - Breaking: every angle key in configurations and the Python options classes is now in degrees and ends in `_deg` (`wind_azimuth_deg`, `slip_face_angle_deg`, `heading_deg`, `crease_angle_deg`), azimuths counter-clockwise from +x (local east); the old keys are rejected.
35
+ - Breaking: every angle key in configurations and the Python options classes is now in degrees and ends in `_deg` (`wind_azimuth_deg`, `slip_face_angle_deg`, `heading_deg`, `crease_angle_deg`), azimuths counter-clockwise from +x (local east); the old keys are rejected. The rest of the Python API follows: `SyntheticAlbedo(hue_deg=, hue_noise_deg=)`, `hsv_to_rgb(hue_deg)`, `write_models(crease_angle_deg=)`, `TriangleMesh.with_creases(crease_angle_deg)`, `RigidTransform.rotation_x/y/z(angle_deg)`, `CubeSphereCells.direction(face, alpha_deg, beta_deg)`, `SlopeAlbedo.maturity_at(slope_deg)`, `Boulder` `yaw_deg`, `lean_deg`, `tilt_deg` and `tilt_azimuth_deg` (also the boulder table columns and the columns of boulder lists written as CSV or JSON), `BoulderFacet` `azimuth_deg` and `angle_deg`, `CraterImpact` `angle_deg` and `heading_deg`, `CraterOutline.heading_deg` and `RayDirection.azimuth_deg`; the C++ library keeps radians.
30
36
  - Defaults give a plausible lunar terrain at 1 m per pixel in which every height layer shows: craters from a production surface capped below the Trask equilibrium with steady-state ages, diffusion and irregular outlines; Surveyor boulders; noise relief scaled to its wavelength; and visible roughness, bedforms and dunes.
31
37
  - Boulder layers default to the nominal NASA SP-8023 intercrater sizes rather than Golombek-Rapp; a `coverage`, `qa`, `qb` or `ejecta.coverage` that no Golombek-Rapp sizes use is now an error that names `"sizes": {"type": "golombek_rapp"}`.
32
38
  - Boulder lists and models hold every boulder of the layer's diameter range; only the heightmap leaves out boulders too small to resolve.
@@ -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.dev82")
11
+ set(TERRAINGEN_FULL_VERSION "0.1.1.dev91")
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.dev82
3
+ Version: 0.1.1.dev91
4
4
  Summary: Scientific terrain generation for planetary surfaces
5
5
  Keywords: terrain,moon,mars,craters,planetary science,simulation
6
6
  Author: Alex Maietta
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "min_diameter": 0.2,
23
23
  "max_diameter": 3,
24
- "max_slope_deg": 20.05352282957881
24
+ "max_slope_deg": 20.0
25
25
  }
26
26
  ],
27
27
  "outputs": [
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "min_diameter": 0.2,
23
23
  "max_diameter": 3,
24
- "max_slope_deg": 20.05352282957881,
24
+ "max_slope_deg": 20.0,
25
25
  "roll_distance": 15
26
26
  }
27
27
  ],
@@ -25,7 +25,7 @@
25
25
  "max_height_ratio": 0.9,
26
26
  "min_burial": 0.0,
27
27
  "max_burial": 0.1,
28
- "max_lean_deg": 28.64788975654116,
28
+ "max_lean_deg": 30.0,
29
29
  "relief": "shape",
30
30
  "models": {
31
31
  "min_diameter": 0.6
@@ -18,7 +18,7 @@
18
18
  "crack_width": 0.04,
19
19
  "crack_depth": 0.08,
20
20
  "edge_rounding": 0.02,
21
- "max_tilt_deg": 3.437746770784939,
21
+ "max_tilt_deg": 3.5,
22
22
  "max_step": 0.04,
23
23
  "octaves": 3,
24
24
  "gain": 0.55,
@@ -24,7 +24,7 @@
24
24
  },
25
25
  {
26
26
  "type": "sand_shadow",
27
- "wind_azimuth_deg": 28.64788975654116,
27
+ "wind_azimuth_deg": 30.0,
28
28
  "length_ratio": 2.0
29
29
  }
30
30
  ],
@@ -16,8 +16,8 @@
16
16
  "type": "strata",
17
17
  "bed_thickness": 4,
18
18
  "thickness_variation": 0.5,
19
- "dip_deg": 1.7188733853924696,
20
- "dip_azimuth_deg": 45.83662361046586,
19
+ "dip_deg": 1.5,
20
+ "dip_azimuth_deg": 45.0,
21
21
  "sharpness": 5,
22
22
  "cliff_share": 0.3
23
23
  },
@@ -24,8 +24,8 @@
24
24
  "relief": "shape",
25
25
  "ventifacts": {
26
26
  "share": 0.39,
27
- "wind_azimuth_deg": 45.83662361046586,
28
- "second_wind_azimuth_deg": 246.371851906254,
27
+ "wind_azimuth_deg": 45.0,
28
+ "second_wind_azimuth_deg": 245.0,
29
29
  "keel_share": 0.31
30
30
  }
31
31
  }
@@ -1,6 +1,6 @@
1
1
  """Albedo options: colour, maps with detail, and how bright crater material behaves.
2
2
 
3
- - `SyntheticAlbedo(rgb=True, hue, saturation, ...)` gives three bands from a colour and its noise.
3
+ - `SyntheticAlbedo(rgb=True, hue_deg, saturation, ...)` gives three bands from a colour and its noise.
4
4
  - `RasterAlbedo` interpolates an albedo map and adds sub-cell detail carrying the map's measured
5
5
  roughness down (`AlbedoDetail`).
6
6
  - `CraterAlbedoOptions` sets how much brighter fresh craters, their ejecta and their rays are, how
@@ -37,7 +37,12 @@ class Example(_common.Example):
37
37
  terraingen.FractalParams(seed=6, wavelength=600.0, amplitude=0.04, octaves=6)
38
38
  )
39
39
  colour = terraingen.SyntheticAlbedo(
40
- rgb=True, hue=30.0, saturation=0.12, value=0.14, hue_noise=[hue_noise], value_noise=[value_noise]
40
+ rgb=True,
41
+ hue_deg=30.0,
42
+ saturation=0.12,
43
+ value=0.14,
44
+ hue_noise_deg=[hue_noise],
45
+ value_noise=[value_noise],
41
46
  )
42
47
  self.rgb = np.stack(
43
48
  [band.values for band in terraingen.evaluate_albedo(terraingen.Albedo(colour), grid)], axis=-1
@@ -56,7 +56,7 @@ class Example(_common.Example):
56
56
  max_height_ratio=1.0,
57
57
  min_burial=0.0,
58
58
  max_burial=0.05,
59
- max_lean_deg=34.37746770784939,
59
+ max_lean_deg=35.0,
60
60
  relief=terraingen.BoulderRelief.SHAPE,
61
61
  models=terraingen.BoulderModelThreshold(min_diameter=0.8),
62
62
  ),
@@ -51,8 +51,8 @@ class Example(_common.Example):
51
51
  roughness=terraingen.ValueDistribution(a=0.0),
52
52
  elongated_share=0.6,
53
53
  ellipticity=terraingen.ValueDistribution(uniform, 1.3, 1.8),
54
- heading_deg=28.64788975654116,
55
- heading_spread_deg=11.459155902616466,
54
+ heading_deg=30.0,
55
+ heading_spread_deg=10.0,
56
56
  ),
57
57
  "both": terraingen.CraterIrregularity(
58
58
  enabled=True,
@@ -324,6 +324,7 @@ struct LayerInputs {
324
324
  const std::vector<std::shared_ptr<const CraterLayer>>& craters;
325
325
  const std::shared_ptr<const BoulderLayer>& boulders;
326
326
  const Surface& surface;
327
+ const std::shared_ptr<const Source>& source; ///< The base; null without one.
327
328
  /// The secondaries later layers throw from a crater layer built with these inputs.
328
329
  std::vector<SecondaryCraterOptions> thrown{};
329
330
  };
@@ -358,6 +359,58 @@ LayerPtr BuildCraterLayer(const CraterLayerSpec& craters, const std::string& pat
358
359
  [&] { return std::make_shared<CraterLayer>(std::move(models), std::move(options)); });
359
360
  }
360
361
 
362
+ /// The roughness of `source` on cells of `pixelSize` centred on its grid with a node at `origin`,
363
+ /// at most `kRoughnessCells` a side.
364
+ MidpointRoughness SourceRoughness(const Source& source, double pixelSize, const Vec2d& origin) {
365
+ constexpr double kRoughnessCells = 512.0;
366
+ const Bounds2d bounds = source.Grid().Bounds();
367
+ const auto cells = [&](double extent) {
368
+ return std::clamp(std::floor(extent / pixelSize), 3.0, kRoughnessCells);
369
+ };
370
+ const double width = cells(bounds.maxX - bounds.minX);
371
+ const double height = cells(bounds.maxY - bounds.minY);
372
+ const double col0 =
373
+ std::round((0.5 * (bounds.minX + bounds.maxX) - origin.x) / pixelSize - 0.5 * width);
374
+ const double rowTop =
375
+ std::round((0.5 * (bounds.minY + bounds.maxY) - origin.y) / pixelSize + 0.5 * height);
376
+ const RasterGrid grid{static_cast<std::size_t>(width), static_cast<std::size_t>(height),
377
+ GeoTransform::NorthUp(origin.x + (col0 - 0.5) * pixelSize,
378
+ origin.y + (rowTop + 0.5) * pixelSize, pixelSize)};
379
+ Raster<float> heights = grid.MakeRaster();
380
+ source.Fill(heights);
381
+ return EstimateMidpointRoughness(heights);
382
+ }
383
+
384
+ /// The options of a midpoint displacement layer, from the base wherever the spec gives none.
385
+ MidpointDisplacementOptions BuildMidpointOptions(const MidpointDisplacementLayerSpec& spec,
386
+ const Source* source, const Surface& surface) {
387
+ MidpointDisplacementOptions options;
388
+ options.minPixelSize = spec.minPixelSize / surface.UnitLength();
389
+ options.base = spec.base;
390
+ options.seed = spec.seed;
391
+ if (!(spec.pixelSize && spec.originX && spec.originY) && !source) {
392
+ throw std::invalid_argument(
393
+ "A midpoint displacement layer without a base needs its pixel size and origin");
394
+ }
395
+ const RasterGrid grid = source ? source->Grid() : RasterGrid{};
396
+ options.pixelSize = spec.pixelSize ? *spec.pixelSize / surface.UnitLength() : grid.PixelSize();
397
+ const Vec2d first = grid.transform.PixelToWorld(0.5, 0.5);
398
+ options.origin = {spec.originX.value_or(first.x), spec.originY.value_or(first.y)};
399
+ if (spec.fractalDimension && spec.scale) {
400
+ options.fractalDimension = *spec.fractalDimension;
401
+ options.scale = *spec.scale;
402
+ return options;
403
+ }
404
+ if (!source) {
405
+ throw std::invalid_argument(
406
+ "A midpoint displacement layer without a base needs its fractal dimension and scale");
407
+ }
408
+ const MidpointRoughness roughness = SourceRoughness(*source, options.pixelSize, options.origin);
409
+ options.fractalDimension = spec.fractalDimension.value_or(roughness.fractalDimension);
410
+ options.scale = spec.scale.value_or(roughness.scale);
411
+ return options;
412
+ }
413
+
361
414
  LayerPtr BuildSecondaryLayer(const SecondaryLayerSpec& spec,
362
415
  const std::shared_ptr<const CraterLayer>& primaries) {
363
416
  const CraterShapeModels models{
@@ -405,6 +458,10 @@ LayerPtr BuildLayer(const LayerSpec& spec, const std::string& path, const LayerI
405
458
  [&](const BedformLayerSpec& s) -> LayerPtr {
406
459
  return std::make_shared<BedformLayer>(s.bedforms, surface);
407
460
  },
461
+ [&](const MidpointDisplacementLayerSpec& s) -> LayerPtr {
462
+ return std::make_shared<MidpointDisplacementLayer>(
463
+ BuildMidpointOptions(s, context.source.get(), surface), surface);
464
+ },
408
465
  [&](const ScaleLayerSpec& s) -> LayerPtr {
409
466
  return std::make_shared<ScaleLayer>(s.scale, s.offset);
410
467
  },
@@ -462,6 +519,7 @@ Terrain BuildValidTerrain(const TerrainConfig& config, const std::filesystem::pa
462
519
  craters,
463
520
  boulders,
464
521
  terrain.surface,
522
+ terrain.source,
465
523
  ThrownSecondaries(config.layers, i)};
466
524
  terrain.layers.push_back(BuildLayer(config.layers[i], Element("layers", i), context));
467
525
  if (std::holds_alternative<CraterLayerSpec>(config.layers[i])) {
@@ -641,10 +699,7 @@ BoulderLayerOptions BuildBoulderOptions(const BoulderLayerSpec& spec, const std:
641
699
  SizeSlopeMap{BuildField(s.field, Child(Child(path, "slope_map"), "field"), directory),
642
700
  s.measure, s.referenceDiameter, s.minExponent, s.maxExponent};
643
701
  }
644
- for (Crater boulder : spec.manual) {
645
- boulder.manual = true;
646
- options.manual.push_back(boulder);
647
- }
702
+ options.manual = spec.manual;
648
703
  if (spec.completeness) {
649
704
  options.completeness =
650
705
  BuildField(*spec.completeness, Child(path, "completeness"), directory);
@@ -25,6 +25,7 @@
25
25
  #include "terraingen/layers/craters/shaping/apply.h"
26
26
  #include "terraingen/layers/density_map.h"
27
27
  #include "terraingen/layers/dunes.h"
28
+ #include "terraingen/layers/midpoint_displacement.h"
28
29
  #include "terraingen/layers/pavement.h"
29
30
  #include "terraingen/layers/region.h"
30
31
  #include "terraingen/layers/roughness.h"
@@ -614,8 +615,8 @@ struct BoulderLayerSpec {
614
615
  std::vector<std::string> shapeFiles{};
615
616
  std::optional<DensityMapSpec> densityMap{}; ///< Gives `boulders.densityMap`.
616
617
  std::optional<SizeSlopeMapSpec> slopeMap{}; ///< Gives `boulders.slopeMap`.
617
- /// Catalog boulders in the surface's coordinates, as `boulders.manual`.
618
- std::vector<Crater> manual{};
618
+ /// Catalog or hand-placed boulders in the surface's coordinates, as `boulders.manual`.
619
+ std::vector<ManualBoulder> manual{};
619
620
  std::optional<FieldSpec> completeness{}; ///< Gives `boulders.completeness`.
620
621
 
621
622
  bool operator==(const BoulderLayerSpec& other) const {
@@ -758,6 +759,30 @@ struct DemDetailLayerSpec {
758
759
  }
759
760
  };
760
761
 
762
+ /// Layer "midpoint_displacement": random midpoint displacement expansion of a base lattice
763
+ /// (`MidpointDisplacementLayer`), on the base's grid with its estimated roughness
764
+ /// (`EstimateMidpointRoughness`) wherever a value is not given.
765
+ struct MidpointDisplacementLayerSpec {
766
+ std::optional<double> pixelSize{}; ///< Metres; unset for the base's cell size.
767
+ std::optional<double> originX{}; ///< Surface coordinates; unset for the base's first cell.
768
+ std::optional<double> originY{}; ///< Surface coordinates; unset for the base's first cell.
769
+ std::optional<double> fractalDimension{}; ///< Unset to estimate from the base.
770
+ std::optional<double> scale{}; ///< Metres; unset to estimate from the base.
771
+ double minPixelSize = 0.0; ///< Metres; 0 for no limit.
772
+ MidpointBase base = MidpointBase::DiamondSquare;
773
+ std::uint32_t seed = 1;
774
+
775
+ bool operator==(const MidpointDisplacementLayerSpec& other) const {
776
+ return pixelSize == other.pixelSize && originX == other.originX &&
777
+ originY == other.originY && fractalDimension == other.fractalDimension &&
778
+ scale == other.scale && minPixelSize == other.minPixelSize && base == other.base &&
779
+ seed == other.seed;
780
+ }
781
+ bool operator!=(const MidpointDisplacementLayerSpec& other) const {
782
+ return !(*this == other);
783
+ }
784
+ };
785
+
761
786
  /// Layer "scale": height * `scale` + `offset` (`ScaleLayer`).
762
787
  struct ScaleLayerSpec {
763
788
  double scale = 1.0;
@@ -866,11 +891,11 @@ template <typename T> class Boxed {
866
891
  struct RegionLayerSpec;
867
892
 
868
893
  /// A layer, named in JSON by its "type".
869
- using LayerSpec =
870
- std::variant<NoiseLayerSpec, CraterLayerSpec, BoulderLayerSpec, RoughnessLayerSpec,
871
- BedformLayerSpec, ScaleLayerSpec, ClampLayerSpec, RegionLayerSpec,
872
- SecondaryLayerSpec, DemDetailLayerSpec, DuneLayerSpec, SandFillLayerSpec,
873
- PavementLayerSpec, StrataLayerSpec, SandShadowLayerSpec>;
894
+ using LayerSpec = std::variant<NoiseLayerSpec, CraterLayerSpec, BoulderLayerSpec,
895
+ RoughnessLayerSpec, BedformLayerSpec, ScaleLayerSpec, ClampLayerSpec,
896
+ RegionLayerSpec, SecondaryLayerSpec, DemDetailLayerSpec,
897
+ DuneLayerSpec, SandFillLayerSpec, PavementLayerSpec, StrataLayerSpec,
898
+ SandShadowLayerSpec, MidpointDisplacementLayerSpec>;
874
899
 
875
900
  /// Layer "region": `layer` applied only inside `shape` (`RegionLayer`). Boulder ejecta do
876
901
  /// not see crater layers inside regions.
@@ -58,16 +58,16 @@ const std::array<Column<Boulder>, 16> kBoulderColumns{{
58
58
  {"diameter", [](const Boulder& b) { return Cell(b.diameter); }},
59
59
  {"height", [](const Boulder& b) { return Cell(b.height); }},
60
60
  {"burial", [](const Boulder& b) { return Cell(b.burial); }},
61
- {"yaw", [](const Boulder& b) { return Cell(b.yaw); }},
62
- {"lean", [](const Boulder& b) { return Cell(b.lean); }},
61
+ {"yaw_deg", [](const Boulder& b) { return Cell(b.yaw * kRadian); }},
62
+ {"lean_deg", [](const Boulder& b) { return Cell(b.lean * kRadian); }},
63
63
  {"id", [](const Boulder& b) { return Cell(b.id); }},
64
64
  {"model", [](const Boulder& b) { return Cell(b.model); }},
65
65
  {"wear", [](const Boulder& b) { return Cell(b.wear); }},
66
66
  {"parent", [](const Boulder& b) { return Cell(b.parent); }},
67
67
  {"piece", [](const Boulder& b) { return Cell(static_cast<std::uint64_t>(b.piece)); }},
68
68
  {"rest", [](const Boulder& b) { return Cell(static_cast<int>(b.rest)); }},
69
- {"tilt", [](const Boulder& b) { return Cell(b.tilt); }},
70
- {"tilt_azimuth", [](const Boulder& b) { return Cell(b.tiltAzimuth); }},
69
+ {"tilt_deg", [](const Boulder& b) { return Cell(b.tilt * kRadian); }},
70
+ {"tilt_azimuth_deg", [](const Boulder& b) { return Cell(b.tiltAzimuth * kRadian); }},
71
71
  }};
72
72
 
73
73
  /// A cell as CSV writes it: doubles exactly, an unknown value empty and booleans as 1 or 0.
@@ -469,6 +469,46 @@ template <typename IO> void BoulderRenderingFields(IO& io, BoulderRendering& ren
469
469
  "The boulders' 3D boulder shapes, used by shape relief and by models.");
470
470
  }
471
471
 
472
+ template <typename IO> void Fields(IO& io, ManualBoulder& boulder) {
473
+ io("x", boulder.x,
474
+ "Centre along x in the surface's coordinates; the longitude in degrees on a sphere.");
475
+ io("y", boulder.y,
476
+ "Centre along y in the surface's coordinates; the latitude in degrees on a sphere.");
477
+ io("diameter", boulder.diameter, "Length of the long axis, in metres.", "m", Above(0.0));
478
+ io("id", boulder.id,
479
+ "Stable ID that seeds what is drawn for the boulder; 0 derives one from its position and "
480
+ "diameter.");
481
+ NanField(io, "height", boulder.height,
482
+ "Vertical extent in metres, buried part included; unset draws it from the height "
483
+ "ratios.",
484
+ "m", Above(0.0));
485
+ NanField(io, "burial", boulder.burial,
486
+ "Buried share of the height, from 0 to below 1; unset draws it.", "",
487
+ FromBelow(0.0, 1.0));
488
+ NanRadianField(io, "yaw_deg", boulder.yaw,
489
+ "Rotation about the vertical, degrees counter-clockwise from east; unset "
490
+ "draws it.");
491
+ NanRadianField(io, "lean_deg", boulder.lean,
492
+ "Tilt of the boulder's vertical axis from the vertical, degrees; unset draws "
493
+ "it.");
494
+ NanRadianField(io, "tilt_deg", boulder.tilt,
495
+ "Angle of the up axis from the vertical after lean, degrees; unset draws it. "
496
+ "A followed slope tips it further.");
497
+ NanRadianField(io, "tilt_azimuth_deg", boulder.tiltAzimuth,
498
+ "Direction the up axis tips toward, degrees counter-clockwise from east; unset "
499
+ "draws it.");
500
+ NanField(io, "wear", boulder.wear,
501
+ "How worn it is, from 0 (fresh) to 1; unset draws it. With burial_by_wear it sets "
502
+ "a drawn burial.",
503
+ "", UnitInterval());
504
+ io("rest", boulder.rest,
505
+ "Which axis it stands along; unset draws it. A fixed lean, tilt, tilt azimuth or rest "
506
+ "keeps a model from being tipped over by settle.");
507
+ io("shape_seed", boulder.shapeSeed,
508
+ "Seed of its 3D shape, as a generated boulder's derived one; unset derives it from the "
509
+ "ID.");
510
+ }
511
+
472
512
  /// The fields of the files and maps a boulder layer reads, and its catalog boulders.
473
513
  template <typename IO> void BoulderInputFields(IO& io, BoulderLayerSpec& spec) {
474
514
  io("shape_files", spec.shapeFiles,
@@ -483,8 +523,8 @@ template <typename IO> void BoulderInputFields(IO& io, BoulderLayerSpec& spec) {
483
523
  "sizes into a local power law through their count at its reference diameter; needs a size "
484
524
  "distribution. Unset keeps the sizes' shape everywhere.");
485
525
  io("manual", spec.manual,
486
- "Catalog boulders placed as given and never thinned or left out; x, y and diameter are "
487
- "read.");
526
+ "Catalog or hand-placed boulders placed as given and never thinned or left out; fields "
527
+ "left unset are drawn as for generated boulders. Boulders fixing any field never break.");
488
528
  io("completeness", spec.completeness,
489
529
  "Where the manual boulders are a complete catalog: the diameter in metres from which they "
490
530
  "stand in for generated boulders, infinite or no value where there is no catalog. Unset "
@@ -175,6 +175,40 @@ void RadianField(IO& io, std::string_view key, std::optional<double>& radians,
175
175
  }
176
176
  }
177
177
 
178
+ /// Whether an `IO` takes an angle stored in radians and unset when NaN as the radians themselves,
179
+ /// through `io.NanRadians(key, radians, description, range)`, such as the Python bindings.
180
+ template <typename IO, typename = void> struct TakesNanRadiansTrait : std::false_type {};
181
+ template <typename IO>
182
+ struct TakesNanRadiansTrait<
183
+ IO, std::void_t<decltype(std::declval<IO&>().NanRadians(
184
+ std::string_view{}, std::declval<double&>(), std::string_view{}, FieldRange{}))>>
185
+ : std::true_type {};
186
+ template <typename IO> inline constexpr bool TakesNanRadians = TakesNanRadiansTrait<IO>::value;
187
+
188
+ /// `RadianField` for an angle unset when NaN, as an optional field in degrees.
189
+ template <typename IO>
190
+ void NanRadianField(IO& io, std::string_view key, double& radians, std::string_view description,
191
+ const FieldRange& range = {}) {
192
+ if constexpr (TakesNanRadians<IO>) {
193
+ io.NanRadians(key, radians, description, range);
194
+ } else {
195
+ std::optional<double> value;
196
+ if (!std::isnan(radians)) {
197
+ value = radians;
198
+ }
199
+ RadianField(io, key, value, description, range);
200
+ radians = value.value_or(std::numeric_limits<double>::quiet_NaN());
201
+ }
202
+ }
203
+
204
+ /// Reads or writes a number unset when NaN, as an optional field.
205
+ template <typename IO>
206
+ void NanField(IO& io, std::string_view key, double& value, std::string_view description,
207
+ std::string_view unit = {}, const FieldRange& range = {}) {
208
+ OptionalBound(io, key, value, description, unit, std::numeric_limits<double>::quiet_NaN(),
209
+ range);
210
+ }
211
+
178
212
  /// The keys of a crater selection's fields.
179
213
  struct SelectionKeys {
180
214
  std::string_view minDiameter = "min_diameter";
@@ -23,6 +23,14 @@ template <typename IO> void Fields(IO& io, Crater& crater) {
23
23
  "Gyr", AtLeast(0.0));
24
24
  io("id", crater.id,
25
25
  "Stable ID that seeds the crater's outline; 0 derives one from its position and diameter.");
26
+ NanField(io, "depth", crater.depth,
27
+ "Rim-to-floor depth in metres, in place of the one the degradation model and age "
28
+ "give; unset keeps the model's.",
29
+ "m", Above(0.0));
30
+ NanField(io, "rim_height", crater.rimHeight,
31
+ "Height of the rim crest above the surface the crater formed on, in metres; needs a "
32
+ "depth. Unset lowers the fresh rim in proportion to the depth.",
33
+ "m", AtLeast(0.0));
26
34
  }
27
35
 
28
36
  template <typename IO> void Fields(IO& io, CraterSpacing& spacing) {
@@ -164,6 +164,17 @@ template <> struct EnumNames<BlendShape> {
164
164
  }};
165
165
  };
166
166
 
167
+ template <> struct EnumNames<MidpointBase> {
168
+ static constexpr std::array<EnumEntry<MidpointBase>, 2> kValues{{
169
+ {"diamond_square", MidpointBase::DiamondSquare,
170
+ "The ground at the base lattice's nodes, interpolated by square and diamond steps: the "
171
+ "heights are replaced by the expanded lattice, as when expanding a DEM."},
172
+ {"source", MidpointBase::Source,
173
+ "Zero at the base lattice's nodes: only the displacements are added, keeping the source's "
174
+ "own interpolation between nodes."},
175
+ }};
176
+ };
177
+
167
178
  template <> struct EnumNames<EjectaProfile> {
168
179
  static constexpr std::array<EnumEntry<EjectaProfile>, 2> kValues{{
169
180
  {"smoothstep", EjectaProfile::Smoothstep,
@@ -287,6 +298,14 @@ template <> struct EnumNames<CraterMorphometryFit> {
287
298
  }};
288
299
  };
289
300
 
301
+ template <> struct EnumNames<BoulderRest> {
302
+ static constexpr std::array<EnumEntry<BoulderRest>, 3> kValues{{
303
+ {"face", BoulderRest::Face, "On its broadest face: its short axis up."},
304
+ {"side", BoulderRest::Side, "On a side: its intermediate axis up."},
305
+ {"end", BoulderRest::End, "On an end: its long axis up."},
306
+ }};
307
+ };
308
+
290
309
  template <> struct EnumNames<BoulderRelief> {
291
310
  static constexpr std::array<EnumEntry<BoulderRelief>, 3> kValues{{
292
311
  {"dome", BoulderRelief::Dome,
@@ -448,6 +448,40 @@ template <typename IO> void Fields(IO& io, DemDetailLayerSpec& spec) {
448
448
  io("weight", spec.weight, "Share of the detail added; 1 restores it whole, 0.5 halves it.");
449
449
  }
450
450
 
451
+ template <> struct SpecName<MidpointDisplacementLayerSpec> {
452
+ static constexpr std::string_view kName = "midpoint_displacement";
453
+ static constexpr std::string_view kDescription =
454
+ "Random midpoint displacement (diamond-square) expansion of the base lattice, as PANGU "
455
+ "expands DEMs: each level halves the node spacing down to the sample spacing, adding "
456
+ "fractal detail without changing the nodes before it.";
457
+ };
458
+ template <typename IO> void Fields(IO& io, MidpointDisplacementLayerSpec& spec) {
459
+ io("pixel_size", spec.pixelSize,
460
+ "Spacing of the base lattice's nodes in metres. Unset uses the base's cell size.", "m",
461
+ Above(0.0));
462
+ io("origin_x", spec.originX,
463
+ "x of a node of the base lattice, in surface coordinates. Unset uses the base's first "
464
+ "cell centre.");
465
+ io("origin_y", spec.originY,
466
+ "y of a node of the base lattice, in surface coordinates. Unset uses the base's first "
467
+ "cell centre.");
468
+ io("fractal_dimension", spec.fractalDimension,
469
+ "Fractal dimension, from 2 (smooth) to 3 (rough): each square or diamond step scales the "
470
+ "displacement by 2^-((3 - F) / 2). Unset estimates it from the base's variogram.",
471
+ "", Between(2.0, 3.0));
472
+ io("scale", spec.scale,
473
+ "Standard deviation in metres of the displacement at the base lattice's own last diamond "
474
+ "step. Unset estimates it from the base as the RMS of each cell minus the mean of its four "
475
+ "neighbours.",
476
+ "m", AtLeast(0.0));
477
+ io("min_pixel_size", spec.minPixelSize,
478
+ "Finest node spacing in metres the lattice is expanded to; 0 expands down to the sample "
479
+ "spacing.",
480
+ "m", AtLeast(0.0));
481
+ io("base", spec.base, "What is displaced: the ground at the base nodes, or zero.");
482
+ io("seed", spec.seed, "Seed of the displacements.");
483
+ }
484
+
451
485
  template <> struct SpecName<ScaleLayerSpec> {
452
486
  static constexpr std::string_view kName = "scale";
453
487
  static constexpr std::string_view kDescription =
@@ -70,9 +70,10 @@ std::string Summary(const GeneratedTerrain& terrain);
70
70
  void WriteCraterList(const CraterList& craters, const std::filesystem::path& path,
71
71
  ListFormat format, const std::vector<CraterAttributes>& attributes = {});
72
72
 
73
- /// Writes boulders as CSV (columns x, y, ground, diameter, height, burial, yaw, lean, id, model,
74
- /// wear, parent, piece, rest, tilt and tilt_azimuth) or as JSON ({"boulders": [...]}) with the
75
- /// same keys, doubles written exactly and an unknown ground left empty (CSV) or null (JSON).
73
+ /// Writes boulders as CSV (columns x, y, ground, diameter, height, burial, yaw_deg, lean_deg, id,
74
+ /// model, wear, parent, piece, rest, tilt_deg and tilt_azimuth_deg, angles in degrees) or as JSON
75
+ /// ({"boulders": [...]}) with the same keys, doubles written exactly and an unknown ground left
76
+ /// empty (CSV) or null (JSON).
76
77
  /// @throws std::runtime_error if the file cannot be written.
77
78
  void WriteBoulderList(const std::vector<Boulder>& boulders, const std::filesystem::path& path,
78
79
  ListFormat format);