trenchfoot 0.1.0__py3-none-any.whl

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.

Potentially problematic release.


This version of trenchfoot might be problematic. Click here for more details.

Files changed (69) hide show
  1. trenchfoot/Dockerfile +5 -0
  2. trenchfoot/README.md +125 -0
  3. trenchfoot/__init__.py +67 -0
  4. trenchfoot/generate_scenarios.py +667 -0
  5. trenchfoot/gmsh_sloped_trench_mesher.py +508 -0
  6. trenchfoot/plot_mesh.py +126 -0
  7. trenchfoot/render_colors.py +59 -0
  8. trenchfoot/scenarios/S01_straight_vwalls/meshes/trench_scene_culled.obj +46 -0
  9. trenchfoot/scenarios/S01_straight_vwalls/metrics.json +35 -0
  10. trenchfoot/scenarios/S01_straight_vwalls/point_clouds/culled/resolution0p050.pth +0 -0
  11. trenchfoot/scenarios/S01_straight_vwalls/point_clouds/full/resolution0p050.pth +0 -0
  12. trenchfoot/scenarios/S01_straight_vwalls/preview.png +0 -0
  13. trenchfoot/scenarios/S01_straight_vwalls/preview_oblique.png +0 -0
  14. trenchfoot/scenarios/S01_straight_vwalls/preview_side.png +0 -0
  15. trenchfoot/scenarios/S01_straight_vwalls/preview_top.png +0 -0
  16. trenchfoot/scenarios/S01_straight_vwalls/scene.json +30 -0
  17. trenchfoot/scenarios/S01_straight_vwalls/trench_scene.obj +46 -0
  18. trenchfoot/scenarios/S01_straight_vwalls/volumetric/trench_volume.msh +1017 -0
  19. trenchfoot/scenarios/S02_straight_slope_pipe/meshes/trench_scene_culled.obj +60 -0
  20. trenchfoot/scenarios/S02_straight_slope_pipe/metrics.json +38 -0
  21. trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/culled/resolution0p050.pth +0 -0
  22. trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/full/resolution0p050.pth +0 -0
  23. trenchfoot/scenarios/S02_straight_slope_pipe/preview.png +0 -0
  24. trenchfoot/scenarios/S02_straight_slope_pipe/preview_oblique.png +0 -0
  25. trenchfoot/scenarios/S02_straight_slope_pipe/preview_side.png +0 -0
  26. trenchfoot/scenarios/S02_straight_slope_pipe/preview_top.png +0 -0
  27. trenchfoot/scenarios/S02_straight_slope_pipe/scene.json +39 -0
  28. trenchfoot/scenarios/S02_straight_slope_pipe/trench_scene.obj +14404 -0
  29. trenchfoot/scenarios/S02_straight_slope_pipe/volumetric/trench_volume.msh +2389 -0
  30. trenchfoot/scenarios/S03_L_slope_two_pipes_box/meshes/trench_scene_culled.obj +87 -0
  31. trenchfoot/scenarios/S03_L_slope_two_pipes_box/metrics.json +42 -0
  32. trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/culled/resolution0p050.pth +0 -0
  33. trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/full/resolution0p050.pth +0 -0
  34. trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview.png +0 -0
  35. trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_oblique.png +0 -0
  36. trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_side.png +0 -0
  37. trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_top.png +0 -0
  38. trenchfoot/scenarios/S03_L_slope_two_pipes_box/scene.json +68 -0
  39. trenchfoot/scenarios/S03_L_slope_two_pipes_box/trench_scene.obj +28803 -0
  40. trenchfoot/scenarios/S03_L_slope_two_pipes_box/volumetric/trench_volume.msh +4463 -0
  41. trenchfoot/scenarios/S04_U_slope_multi_noise/meshes/trench_scene_culled.obj +150 -0
  42. trenchfoot/scenarios/S04_U_slope_multi_noise/metrics.json +46 -0
  43. trenchfoot/scenarios/S04_U_slope_multi_noise/preview.png +0 -0
  44. trenchfoot/scenarios/S04_U_slope_multi_noise/preview_oblique.png +0 -0
  45. trenchfoot/scenarios/S04_U_slope_multi_noise/preview_side.png +0 -0
  46. trenchfoot/scenarios/S04_U_slope_multi_noise/preview_top.png +0 -0
  47. trenchfoot/scenarios/S04_U_slope_multi_noise/scene.json +79 -0
  48. trenchfoot/scenarios/S04_U_slope_multi_noise/trench_scene.obj +49402 -0
  49. trenchfoot/scenarios/S04_U_slope_multi_noise/volumetric/trench_volume.msh +7610 -0
  50. trenchfoot/scenarios/S05_wide_slope_pair/metrics.json +42 -0
  51. trenchfoot/scenarios/S05_wide_slope_pair/preview_oblique.png +0 -0
  52. trenchfoot/scenarios/S05_wide_slope_pair/preview_side.png +0 -0
  53. trenchfoot/scenarios/S05_wide_slope_pair/preview_top.png +0 -0
  54. trenchfoot/scenarios/S05_wide_slope_pair/scene.json +71 -0
  55. trenchfoot/scenarios/S05_wide_slope_pair/trench_scene.obj +28803 -0
  56. trenchfoot/scenarios/S06_bumpy_wide_loop/metrics.json +43 -0
  57. trenchfoot/scenarios/S06_bumpy_wide_loop/preview_oblique.png +0 -0
  58. trenchfoot/scenarios/S06_bumpy_wide_loop/preview_side.png +0 -0
  59. trenchfoot/scenarios/S06_bumpy_wide_loop/preview_top.png +0 -0
  60. trenchfoot/scenarios/S06_bumpy_wide_loop/scene.json +82 -0
  61. trenchfoot/scenarios/S06_bumpy_wide_loop/trench_scene.obj +35084 -0
  62. trenchfoot/scenarios/SUMMARY.json +159 -0
  63. trenchfoot/scene_spec_example.json +74 -0
  64. trenchfoot/trench_scene_generator_v3.py +798 -0
  65. trenchfoot-0.1.0.dist-info/METADATA +104 -0
  66. trenchfoot-0.1.0.dist-info/RECORD +69 -0
  67. trenchfoot-0.1.0.dist-info/WHEEL +4 -0
  68. trenchfoot-0.1.0.dist-info/entry_points.txt +3 -0
  69. trenchfoot-0.1.0.dist-info/licenses/LICENSE +661 -0
@@ -0,0 +1,104 @@
1
+ Metadata-Version: 2.4
2
+ Name: trenchfoot
3
+ Version: 0.1.0
4
+ Summary: Synthetic trench scenario generator bundle (surfaces + volumetrics).
5
+ Author: Liam Moore
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: numpy>=1.26
9
+ Provides-Extra: dev
10
+ Requires-Dist: pytest>=8.3; extra == 'dev'
11
+ Provides-Extra: mesher
12
+ Requires-Dist: gmsh>=4.11; extra == 'mesher'
13
+ Provides-Extra: preview
14
+ Requires-Dist: matplotlib>=3.8; extra == 'preview'
15
+ Provides-Extra: viz
16
+ Requires-Dist: plotly>=5.24; extra == 'viz'
17
+ Description-Content-Type: text/markdown
18
+
19
+ # Trenchfoot
20
+
21
+ Synthetic trench scenario generator extracted from the Survi monorepo. This repository bundles
22
+ surface + volumetric scene generation tooling and prebuilt scenarios.
23
+
24
+ ## Layout
25
+ - `packages/trenchfoot/`: the generator bundle (surface CLI, Gmsh mesher, scenario specs, Dockerfile).
26
+ - `packages/trenchfoot/scenarios/`: prebuilt scenes (OBJ meshes, previews, metrics).
27
+
28
+ ## Getting Started
29
+ ```bash
30
+ uv sync
31
+ uv run python -m trenchfoot.generate_scenarios --help
32
+ ```
33
+
34
+ Optional extras:
35
+ - Install `gmsh` and `meshio` to emit volumetric meshes.
36
+ - Install `matplotlib` to refresh preview renders.
37
+ - Set `TRENCHFOOT_SCENARIO_OUT_ROOT=/tmp/trench-previews` (or another writable path) to keep generated assets out of the repo checkout; the CLI uses this location unless `--out` is specified.
38
+ - Install `plotly` via `pip install "trenchfoot[viz]"` to enable Plotly HTML meshes.
39
+ - Use `uv run python -m trenchfoot.generate_scenarios --preview --gallery docs/scenario_gallery.md` to regenerate previews and emit a Markdown gallery (the README table below was generated this way).
40
+
41
+ See `packages/trenchfoot/README.md` for the original usage notes and the CLI examples.
42
+
43
+ ### CLI Shortcuts
44
+ - `uv run python -m trenchfoot.generate_scenarios --scratch --skip-volumetric` runs the generator in a temporary directory (no repo churn) and prints the scratch path.
45
+ - Add `--include-prebuilt` if you want the shipped assets copied into the scratch directory before regeneration.
46
+ - Combine `--preview` with `--gallery docs/scenario_gallery.md` to refresh previews and the Markdown gallery in one go.
47
+ - `trenchfoot-plot packages/trenchfoot/scenarios/S05_wide_slope_pair/trench_scene.obj --open` writes an interactive Plotly HTML (requires the `[viz]` extra) and opens it in your browser.
48
+
49
+ ## Python API
50
+
51
+ Trenchfoot now exposes a light-weight SDK so you can work entirely in memory:
52
+
53
+ ```python
54
+ from trenchfoot import (
55
+ SceneSpec,
56
+ scene_spec_from_dict,
57
+ generate_surface_mesh,
58
+ generate_trench_volume,
59
+ gmsh_available,
60
+ )
61
+
62
+ spec_dict = {
63
+ "path_xy": [[0.0, 0.0], [5.0, 0.0]],
64
+ "width": 1.0,
65
+ "depth": 1.2,
66
+ "wall_slope": 0.1,
67
+ "ground": {"z0": 0.0, "slope": [0.0, 0.0], "size_margin": 2.0},
68
+ "pipes": [{"radius": 0.1, "length": 1.8, "angle_deg": 0.0, "s_center": 0.5}],
69
+ "boxes": [],
70
+ "spheres": [],
71
+ "noise": {"enable": False},
72
+ }
73
+
74
+ scene = scene_spec_from_dict(spec_dict)
75
+ surface = generate_surface_mesh(scene)
76
+ print(surface.metrics["surface_area_by_group"]["trench_walls"])
77
+ surface.persist("./tmp/surface", include_previews=False)
78
+
79
+ if gmsh_available():
80
+ volume = generate_trench_volume(spec_dict, lc=0.4, persist_path="./tmp/volume/trench_volume.msh")
81
+ print(len(volume.element_blocks), "element blocks", "across", volume.nodes.shape[0], "nodes")
82
+ ```
83
+
84
+ `SurfaceMeshResult` keeps the per-group vertex/face arrays, metrics, and optional preview PNGs (as bytes). Call `.persist(path)` when you want OBJ + metrics written to disk. `VolumeMeshResult` exposes the raw node coordinates, element connectivity, and the discovered physical groups while still letting you emit `.msh` files on demand.
85
+
86
+ ## Mesh Clearance Guard Rails
87
+ The volumetric mesher enforces a minimum 50 mm gap between the trench walls and any embedded geometry, scaling the threshold with each pipe’s radius and the current wall slope. When clearance gets tight, the generator shortens the pipe run and records per-pipe margins in `SUMMARY.json` under `pipe_clearances` so you can spot scenarios that are at risk before Gmsh complains.
88
+
89
+ ## Scenario Gallery
90
+ Color key: trench surfaces use warm soil tones, embedded geometry is color-coded per object (pipes in rotating palette, boxes teal/olive, spheres magenta/gray).
91
+ | Scenario | Top | Side | Oblique |
92
+ | --- | --- | --- | --- |
93
+ | S01_straight_vwalls | ![S01 top](packages/trenchfoot/scenarios/S01_straight_vwalls/preview_top.png) | ![S01 side](packages/trenchfoot/scenarios/S01_straight_vwalls/preview_side.png) | ![S01 oblique](packages/trenchfoot/scenarios/S01_straight_vwalls/preview_oblique.png) |
94
+ | S02_straight_slope_pipe | ![S02 top](packages/trenchfoot/scenarios/S02_straight_slope_pipe/preview_top.png) | ![S02 side](packages/trenchfoot/scenarios/S02_straight_slope_pipe/preview_side.png) | ![S02 oblique](packages/trenchfoot/scenarios/S02_straight_slope_pipe/preview_oblique.png) |
95
+ | S03_L_slope_two_pipes_box | ![S03 top](packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_top.png) | ![S03 side](packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_side.png) | ![S03 oblique](packages/trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_oblique.png) |
96
+ | S04_U_slope_multi_noise | ![S04 top](packages/trenchfoot/scenarios/S04_U_slope_multi_noise/preview_top.png) | ![S04 side](packages/trenchfoot/scenarios/S04_U_slope_multi_noise/preview_side.png) | ![S04 oblique](packages/trenchfoot/scenarios/S04_U_slope_multi_noise/preview_oblique.png) |
97
+ | S05_wide_slope_pair | ![S05 top](packages/trenchfoot/scenarios/S05_wide_slope_pair/preview_top.png) | ![S05 side](packages/trenchfoot/scenarios/S05_wide_slope_pair/preview_side.png) | ![S05 oblique](packages/trenchfoot/scenarios/S05_wide_slope_pair/preview_oblique.png) |
98
+ | S06_bumpy_wide_loop | ![S06 top](packages/trenchfoot/scenarios/S06_bumpy_wide_loop/preview_top.png) | ![S06 side](packages/trenchfoot/scenarios/S06_bumpy_wide_loop/preview_side.png) | ![S06 oblique](packages/trenchfoot/scenarios/S06_bumpy_wide_loop/preview_oblique.png) |
99
+
100
+ ## Testing
101
+ ```bash
102
+ uv run pytest -rs
103
+ ```
104
+ The test suite exercises the single-scenario code path, runs all bundled presets (surface + volumetric) into a scratch directory, and checks that the CLI honours `TRENCHFOOT_SCENARIO_OUT_ROOT`.
@@ -0,0 +1,69 @@
1
+ trenchfoot/Dockerfile,sha256=TjwHTNOZF6eHxpDjw29uruEmvJ4FWQEv1XRDE3qMJvY,210
2
+ trenchfoot/README.md,sha256=PGpBwprT0ZgR-ASx7bDLm9SvYR8yCbIzML7amq3oJ-k,5483
3
+ trenchfoot/__init__.py,sha256=jI30sofuw13hesvaShlAaatpswxY8wRFVsTJq06TKo8,1672
4
+ trenchfoot/generate_scenarios.py,sha256=drQ6a2bKnkcyIDXP4EKHe4m6CtLHW9NjJzXSIgbTQso,22561
5
+ trenchfoot/gmsh_sloped_trench_mesher.py,sha256=IQf2x4mtufxIwf17U7ub3wqjdoAehp_nj1p3W80KIlg,20938
6
+ trenchfoot/plot_mesh.py,sha256=26dOlVfaM1WsUfr_sXVqA7axtY9qjY3WCNM7cUBTS7Q,3810
7
+ trenchfoot/render_colors.py,sha256=EfldvoshgaZ6iZFk-UDL67-tvwGYaiZFS2NQZBMwhDM,1596
8
+ trenchfoot/scene_spec_example.json,sha256=UcV25ku422UO0ZZPDrJwrT1zwmjoOIpnBdLuEdh-AZA,1028
9
+ trenchfoot/trench_scene_generator_v3.py,sha256=7bJTd00d9dA3-sa_iH-3nuREbPfTe24D6HmrZIAGmzg,31938
10
+ trenchfoot/scenarios/SUMMARY.json,sha256=h_mpOK_6QOaCek_qBDSrorJa9QUbOKyqRhVNFjdEjHY,8093
11
+ trenchfoot/scenarios/S01_straight_vwalls/metrics.json,sha256=_bg0EIfTZ8rp_rDwL5cT9J3gmIiOqCtI11q7pBTZ7zs,722
12
+ trenchfoot/scenarios/S01_straight_vwalls/preview.png,sha256=adsx3-6oMu9WaixggXRhuXi_KM-q5s2RNSBLR_stq80,199624
13
+ trenchfoot/scenarios/S01_straight_vwalls/preview_oblique.png,sha256=d0qtG_lEFFZRF9ek9wi__77wBENOiHGHU6BOwzFM0r0,123576
14
+ trenchfoot/scenarios/S01_straight_vwalls/preview_side.png,sha256=vcG8nctwbFLs9I3vblLvWK5qEDOLLmwHonHTh_-YSoM,32354
15
+ trenchfoot/scenarios/S01_straight_vwalls/preview_top.png,sha256=22xocTRqTLPg8SjX8G_XzDSInt9hAdTcSZwJjWuaimI,27816
16
+ trenchfoot/scenarios/S01_straight_vwalls/scene.json,sha256=H2u4YTL6IpYzDkrD1jGJ9dwgLt3jsoT3oU87dOVdGAg,343
17
+ trenchfoot/scenarios/S01_straight_vwalls/trench_scene.obj,sha256=6-usCEpAfhhZcdCxAy7NcXrkBwv-mEh40A6zN50k0Jo,519
18
+ trenchfoot/scenarios/S01_straight_vwalls/meshes/trench_scene_culled.obj,sha256=6-usCEpAfhhZcdCxAy7NcXrkBwv-mEh40A6zN50k0Jo,519
19
+ trenchfoot/scenarios/S01_straight_vwalls/point_clouds/culled/resolution0p050.pth,sha256=w4AKFbud2V0NhAtudGXXheLynAq-NLxUFSPxLczK3T0,1352093
20
+ trenchfoot/scenarios/S01_straight_vwalls/point_clouds/full/resolution0p050.pth,sha256=w4AKFbud2V0NhAtudGXXheLynAq-NLxUFSPxLczK3T0,1352093
21
+ trenchfoot/scenarios/S01_straight_vwalls/volumetric/trench_volume.msh,sha256=xkgqmM4w3ZrtjD_ckHE7t-IKAXEgiI1TQrcuF9wRVHQ,20788
22
+ trenchfoot/scenarios/S02_straight_slope_pipe/metrics.json,sha256=mxTbcXvkQVQsPHDbwAzrcqwINWixIhSLzb65D0V5t4c,915
23
+ trenchfoot/scenarios/S02_straight_slope_pipe/preview.png,sha256=Aj5XpJMSdRNqnrPzL4oe-d0RjLdFT2V7OFrrZxwlsx8,251134
24
+ trenchfoot/scenarios/S02_straight_slope_pipe/preview_oblique.png,sha256=ofiefdnRf3i-s16_i-bHHRNMcHGljJQMXkBZLcuoChk,142980
25
+ trenchfoot/scenarios/S02_straight_slope_pipe/preview_side.png,sha256=KdD2hIh680nNK-7ebwehnXb3rBtKEK7j1cJJwAvGlZE,41581
26
+ trenchfoot/scenarios/S02_straight_slope_pipe/preview_top.png,sha256=bnmECCqfHZ40LZj8H65mSN8Iir9KDHtZFfIWD2AfmSc,29953
27
+ trenchfoot/scenarios/S02_straight_slope_pipe/scene.json,sha256=8jIKAeLbkjuhnJSvnKa0PVvwR7VRpFINrCuzVc0YZZo,485
28
+ trenchfoot/scenarios/S02_straight_slope_pipe/trench_scene.obj,sha256=uGbQ3d288W4snGktGLC5D4YKG2giXTwfiVvCDOOkXuU,332970
29
+ trenchfoot/scenarios/S02_straight_slope_pipe/meshes/trench_scene_culled.obj,sha256=OOiw80NuCBejzeN3MWAip9Haw8yQsLZEdlMQdDIgEMU,847
30
+ trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/culled/resolution0p050.pth,sha256=Ug9hTIsm6iQKRs9cucXJyJpxpSvQ5f2GS1ytZmxi1mE,1623389
31
+ trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/full/resolution0p050.pth,sha256=JgIRni8xWKtz2mm0gpSdmavGe-FF71mDervavM4Rqw8,1718877
32
+ trenchfoot/scenarios/S02_straight_slope_pipe/volumetric/trench_volume.msh,sha256=6VHq7Yn1HZYkvpuW1om1Pf9XBTceiZF5TQEy8_dbOUY,54172
33
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/metrics.json,sha256=0JFNeS_6lSOOsUnqFSc7zR451liyeCvOdEmY7xxAUsg,1124
34
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview.png,sha256=q0V_2HSLUl2ovWLc4INKV87aLVh3vzqabMyKr8XEWEg,224248
35
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_oblique.png,sha256=Pephmcu_6LKxTUCXJQKhbJ7vfxzICUaHnIWRx5vmeYE,161433
36
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_side.png,sha256=a8B_BomBigRC7sAhRfuc5i1jL5lFwuCkZ9ALwnpK9ZI,48340
37
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_top.png,sha256=BQ6WuTiYk4d99uwBFE8tWrG-TJ_hMZw_VxtXluKZ8Wc,33449
38
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/scene.json,sha256=vOibsPWlhYYvpUKNz3NZwtEj583j16BBCJga716L5mo,939
39
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/trench_scene.obj,sha256=FVIaGr7bvVnQ6EjU4_h3hWjbTo9qXbWq8UjxkjG4GYI,652943
40
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/meshes/trench_scene_culled.obj,sha256=At4lipowr_3MY1rxmcKa479F_mQ-jJDVQJe0yHTrFSc,1835
41
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/culled/resolution0p050.pth,sha256=KqbuoZ1tUPDhlnDgmhd-7WBb92TABsEmOzEsB__KtlA,2456029
42
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/full/resolution0p050.pth,sha256=4fXvfu0TMO9FJaoqYrW21SCGe3eKuSLkSUl9CdE14rw,2622685
43
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/volumetric/trench_volume.msh,sha256=Z0YBZmu0SctYbC2mkEcy2rdLULZvRLkjSq7SZK91XEA,103364
44
+ trenchfoot/scenarios/S04_U_slope_multi_noise/metrics.json,sha256=RLn5RA1P6IiYJ5KGe-gzp1WaKOH0CcVHmGSp1nC5YBA,1294
45
+ trenchfoot/scenarios/S04_U_slope_multi_noise/preview.png,sha256=ZbLgrL0nRtUX1y77i7b3LCxw4w_j5Ivmmh0i2YzrBDs,238958
46
+ trenchfoot/scenarios/S04_U_slope_multi_noise/preview_oblique.png,sha256=bwMWv-D0DpMgp2HjRpZc-U12aGI0jDD7DET72j2lW7k,160927
47
+ trenchfoot/scenarios/S04_U_slope_multi_noise/preview_side.png,sha256=QlbK7UNlgNjNDb8nClZ1w6pUXqlp0kXqItq89Ezretg,58382
48
+ trenchfoot/scenarios/S04_U_slope_multi_noise/preview_top.png,sha256=fRh0fWdVscG4TTJ0nRDHB7cblmbp9WPE1JO3Dxjgkgg,41779
49
+ trenchfoot/scenarios/S04_U_slope_multi_noise/scene.json,sha256=23nlervPUKUD3LassBLjGoV1f5RDjcDGJdlLZHZ1f80,1100
50
+ trenchfoot/scenarios/S04_U_slope_multi_noise/trench_scene.obj,sha256=z6E6rozOgsDTVQnWGoejTgYYCuO0sdafDPPAD28KH0c,1173145
51
+ trenchfoot/scenarios/S04_U_slope_multi_noise/meshes/trench_scene_culled.obj,sha256=ykw_tzhXknXt3DbmSk3cBzbOL91Jm4zxjthp799YkWw,3206
52
+ trenchfoot/scenarios/S04_U_slope_multi_noise/volumetric/trench_volume.msh,sha256=-9-uvLcTnYmZIgB8aDtczvqqNbrrjAqUk1dz39FU1Gw,190282
53
+ trenchfoot/scenarios/S05_wide_slope_pair/metrics.json,sha256=mJ5X7VHLi0SnkffktbS3QsNlBSsfwSyV4tKNg1t1CJU,1115
54
+ trenchfoot/scenarios/S05_wide_slope_pair/preview_oblique.png,sha256=4M9OhkmWmWk13CB2Dp12PYgNIQ8JbliQATJH22JuJ4E,162455
55
+ trenchfoot/scenarios/S05_wide_slope_pair/preview_side.png,sha256=TJ_PcwHahCOJSt5aTHYNBGgU9oRlDKAGAoqlgS5Sktw,56373
56
+ trenchfoot/scenarios/S05_wide_slope_pair/preview_top.png,sha256=7k7vYFzSPUvsiZ5hn8Z3MGm8d-SipL7EE_F9cbFkzrs,42495
57
+ trenchfoot/scenarios/S05_wide_slope_pair/scene.json,sha256=AJHPTeuQWrUBa108ok6CWh12DGSRNCdEdZ4ynimM4No,1027
58
+ trenchfoot/scenarios/S05_wide_slope_pair/trench_scene.obj,sha256=7mH0l1MutP8a5-BnVSVD2niAcgrmy3pnsJiG4izEJUc,689443
59
+ trenchfoot/scenarios/S06_bumpy_wide_loop/metrics.json,sha256=sRFALxQH8rdAa3AqY9Y7J0zwVtfEthDoRNSlLj2nntg,1149
60
+ trenchfoot/scenarios/S06_bumpy_wide_loop/preview_oblique.png,sha256=ko6SRl9h8TU_TCZVwkRwws3g3-5eDGZNdZGdn1OpVKI,158032
61
+ trenchfoot/scenarios/S06_bumpy_wide_loop/preview_side.png,sha256=OoBdaEeiFIV9pOYOPOWq6hQftQok26804ITC8WESxZs,73294
62
+ trenchfoot/scenarios/S06_bumpy_wide_loop/preview_top.png,sha256=rVHFPNicx98ja0oaZf_9dG5v7tEmjBSVzRHgan4sgu4,48554
63
+ trenchfoot/scenarios/S06_bumpy_wide_loop/scene.json,sha256=jy00g_SHAQzHg7N4wY0nM-WUMRSsP3dF1NzscqM1BMk,1106
64
+ trenchfoot/scenarios/S06_bumpy_wide_loop/trench_scene.obj,sha256=u8ME1nB1jXSRydtvXtg8_wiod_YxXb_QydCQ-mjHV68,842349
65
+ trenchfoot-0.1.0.dist-info/METADATA,sha256=tAneMkSgiKHUFyEpSW0rUOvVi8eO2bRA30W0Pxs3_Ug,6245
66
+ trenchfoot-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
67
+ trenchfoot-0.1.0.dist-info/entry_points.txt,sha256=5TejAGmc4GnNYLn7MhhLtSCNz9240RvzcNaetF4IHfg,119
68
+ trenchfoot-0.1.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
69
+ trenchfoot-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ trenchfoot-generate = trenchfoot.generate_scenarios:main
3
+ trenchfoot-plot = trenchfoot.plot_mesh:main