trenchfoot 0.4.4__py3-none-any.whl → 0.4.6__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.

@@ -1101,71 +1101,42 @@ def _triangulate_annulus(outer: np.ndarray, inner: np.ndarray) -> Tuple[np.ndarr
1101
1101
  Creates triangles that fill ONLY the region between the two polygons,
1102
1102
  leaving the inner polygon area as an open hole.
1103
1103
 
1104
+ Uses the earcut algorithm which correctly handles non-convex inner
1105
+ polygons (L-shapes, U-shapes, etc.) without creating triangles that
1106
+ cross over the hole.
1107
+
1104
1108
  Both polygons should be CCW oriented. Returns (vertices, faces) where
1105
1109
  vertices is the concatenation of outer and inner, and faces index into it.
1106
1110
  """
1111
+ import mapbox_earcut as earcut
1112
+
1107
1113
  n_outer = len(outer)
1108
1114
  n_inner = len(inner)
1109
1115
 
1110
- # Vertices: outer first, then inner
1111
- verts = np.vstack([outer, inner])
1116
+ # Earcut expects:
1117
+ # - A flat array of coordinates [x0, y0, x1, y1, ...]
1118
+ # - A list of hole start indices (index into the coordinate array by vertex count)
1119
+ #
1120
+ # The outer polygon comes first, then the inner polygon (as a hole).
1121
+ # ring_end_indices specifies where each ring ends (cumulative indices).
1112
1122
 
1113
- # Create triangles by "zipping" around the two polygons
1114
- # This works well when both polygons have similar vertex counts
1115
- # For different counts, we need to handle the ratio
1123
+ # Combine outer and inner polygons: outer first, then inner (as hole)
1124
+ coords = np.vstack([outer, inner]).astype(np.float64)
1116
1125
 
1117
- tris = []
1126
+ # ring_end_indices: cumulative end indices for each ring
1127
+ # First ring (outer) ends at n_outer, second ring (hole) ends at n_outer + n_inner
1128
+ ring_end_indices = np.array([n_outer, n_outer + n_inner], dtype=np.uint32)
1118
1129
 
1119
- # Use a marching approach: for each outer edge, connect to nearest inner vertices
1120
- # and vice versa. This creates a proper triangulated annulus.
1121
-
1122
- # Simple approach: interpolate around both polygons simultaneously
1123
- # treating them as having a common parameter t in [0, 1]
1124
-
1125
- i_outer = 0 # current outer vertex index
1126
- i_inner = 0 # current inner vertex index
1127
- t_outer = 0.0 # parameter position on outer polygon
1128
- t_inner = 0.0 # parameter position on inner polygon
1129
-
1130
- outer_step = 1.0 / n_outer
1131
- inner_step = 1.0 / n_inner
1132
-
1133
- # March around creating triangles
1134
- while i_outer < n_outer or i_inner < n_inner:
1135
- # Current vertices
1136
- o_curr = i_outer % n_outer
1137
- o_next = (i_outer + 1) % n_outer
1138
- i_curr = i_inner % n_inner
1139
- i_next = (i_inner + 1) % n_inner
1140
-
1141
- # Indices in combined vertex array
1142
- vo_curr = o_curr
1143
- vo_next = o_next
1144
- vi_curr = n_outer + i_curr
1145
- vi_next = n_outer + i_next
1146
-
1147
- if i_outer >= n_outer:
1148
- # Finished outer, just advance inner
1149
- tris.append([vo_curr, vi_next, vi_curr])
1150
- i_inner += 1
1151
- t_inner += inner_step
1152
- elif i_inner >= n_inner:
1153
- # Finished inner, just advance outer
1154
- tris.append([vo_curr, vo_next, vi_curr])
1155
- i_outer += 1
1156
- t_outer += outer_step
1157
- elif t_outer + outer_step <= t_inner + inner_step:
1158
- # Advance outer - create triangle: o_curr, o_next, i_curr
1159
- tris.append([vo_curr, vo_next, vi_curr])
1160
- i_outer += 1
1161
- t_outer += outer_step
1162
- else:
1163
- # Advance inner - create triangle: o_curr, i_next, i_curr
1164
- tris.append([vo_curr, vi_next, vi_curr])
1165
- i_inner += 1
1166
- t_inner += inner_step
1130
+ # Run earcut triangulation
1131
+ triangle_indices = earcut.triangulate_float64(coords, ring_end_indices)
1167
1132
 
1168
- return verts, np.array(tris, dtype=int)
1133
+ # Convert flat triangle indices to (N, 3) array
1134
+ tris = np.array(triangle_indices, dtype=int).reshape(-1, 3)
1135
+
1136
+ # Vertices: outer first, then inner
1137
+ verts = np.vstack([outer, inner])
1138
+
1139
+ return verts, tris
1169
1140
 
1170
1141
 
1171
1142
  def make_ground_surface_plane(path_xy: List[Tuple[float,float]], width_top: float, ground) -> Dict[str,Tuple[np.ndarray,np.ndarray]]:
@@ -1340,6 +1311,58 @@ def _point_inside_trench(
1340
1311
  return abs(local_u) <= half_w
1341
1312
 
1342
1313
 
1314
+ def _is_beyond_trench_ends(
1315
+ x: float, y: float,
1316
+ path_xy: List[Tuple[float, float]],
1317
+ ) -> bool:
1318
+ """Check if a point is beyond the ends of an open trench path.
1319
+
1320
+ For open paths (not closed loops), points that project beyond the first
1321
+ or last vertex of the path are outside the trench void, even if their
1322
+ perpendicular distance would put them within the trench walls.
1323
+
1324
+ Returns True if the point is beyond either end of an open path.
1325
+ Returns False for closed paths (where there are no "ends").
1326
+ """
1327
+ if _is_path_closed(path_xy):
1328
+ return False # Closed paths have no ends to be beyond
1329
+
1330
+ P = np.array(path_xy, float)
1331
+ query = np.array([x, y], float)
1332
+
1333
+ # Check start of path (s=0)
1334
+ start = P[0]
1335
+ if len(P) > 1:
1336
+ # Tangent at start points in the direction of the path
1337
+ tangent_start = P[1] - P[0]
1338
+ tangent_start = tangent_start / (np.linalg.norm(tangent_start) + 1e-12)
1339
+ # Vector from start to query point
1340
+ to_query = query - start
1341
+ # Distance along tangent (negative means before the start)
1342
+ along_start = float(np.dot(to_query, tangent_start))
1343
+ # The trench has a vertical end wall at the start vertex.
1344
+ # Any point projecting before this wall is outside the trench.
1345
+ if along_start < 0:
1346
+ return True
1347
+
1348
+ # Check end of path (s=1)
1349
+ end = P[-1]
1350
+ if len(P) > 1:
1351
+ # Tangent at end points in the direction we came from
1352
+ tangent_end = P[-1] - P[-2]
1353
+ tangent_end = tangent_end / (np.linalg.norm(tangent_end) + 1e-12)
1354
+ # Vector from end to query point
1355
+ to_query = query - end
1356
+ # Distance along tangent (positive means past the end)
1357
+ along_end = float(np.dot(to_query, tangent_end))
1358
+ # The trench has a vertical end wall at the end vertex.
1359
+ # Any point projecting past this wall is outside the trench.
1360
+ if along_end > 0:
1361
+ return True
1362
+
1363
+ return False
1364
+
1365
+
1343
1366
  @dataclass
1344
1367
  class TruncationResult:
1345
1368
  """Result of computing pipe truncation."""
@@ -1405,6 +1428,11 @@ def _compute_pipe_truncation(
1405
1428
  if abs(local_u) + effective_radius > half_w:
1406
1429
  return False
1407
1430
 
1431
+ # Check trench end boundaries: for open trenches, pipe must not extend
1432
+ # beyond the vertical end walls at the start/end of the path
1433
+ if _is_beyond_trench_ends(x, y, path_xy):
1434
+ return False
1435
+
1408
1436
  return True
1409
1437
 
1410
1438
  def binary_search_boundary(t_inside: float, t_outside: float, tol: float = 0.001) -> float:
@@ -1,10 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trenchfoot
3
- Version: 0.4.4
3
+ Version: 0.4.6
4
4
  Summary: Synthetic trench scenario generator bundle (surfaces + volumetrics).
5
5
  Author: Liam Moore
6
6
  License-File: LICENSE
7
7
  Requires-Python: >=3.12
8
+ Requires-Dist: mapbox-earcut>=1.0
8
9
  Requires-Dist: numpy>=1.26
9
10
  Provides-Extra: dev
10
11
  Requires-Dist: pytest>=8.3; extra == 'dev'
@@ -6,8 +6,8 @@ trenchfoot/gmsh_sloped_trench_mesher.py,sha256=D7EL6V0wkE6tvDARmm006yZE6KEzCl25O
6
6
  trenchfoot/plot_mesh.py,sha256=26dOlVfaM1WsUfr_sXVqA7axtY9qjY3WCNM7cUBTS7Q,3810
7
7
  trenchfoot/render_colors.py,sha256=CWMre6DYa2EyrCgZsEY0bv313WqEhQdr3CdPF1xI-40,1649
8
8
  trenchfoot/scene_spec_example.json,sha256=UcV25ku422UO0ZZPDrJwrT1zwmjoOIpnBdLuEdh-AZA,1028
9
- trenchfoot/trench_scene_generator_v3.py,sha256=B2po9BugQj-gtn4JfOFrHCdqATZUWZ7P8qh_-uoQ4dg,75644
10
- trenchfoot/scenarios/SUMMARY.json,sha256=BWcI0HA4DWG-XOsr3bVJZGK5VmNtxSaOG86kxihfmh0,6831
9
+ trenchfoot/trench_scene_generator_v3.py,sha256=kCh7e8rjXaJu9UXzWTU5Pu78FLmYapGPRk5h3GM-rPw,76918
10
+ trenchfoot/scenarios/SUMMARY.json,sha256=XdFkhDjBUKjLkhZCCYgZRS5yBAQclwctr14H1JUnCcE,6831
11
11
  trenchfoot/scenarios/S01_straight_vwalls/ground_truth_isosurface.html,sha256=SLPROqEefBB8OgmZSW6DBmJxuSDxVQhWTn9eG3q6QRU,5880178
12
12
  trenchfoot/scenarios/S01_straight_vwalls/metrics.json,sha256=WZsyUfDIcJW1FFHfNq1wF8zn0r-XL3jCrkmowV4OFwA,691
13
13
  trenchfoot/scenarios/S01_straight_vwalls/preview.png,sha256=adsx3-6oMu9WaixggXRhuXi_KM-q5s2RNSBLR_stq80,199624
@@ -16,77 +16,77 @@ trenchfoot/scenarios/S01_straight_vwalls/preview_side.png,sha256=zBqMghMiEAYvceP
16
16
  trenchfoot/scenarios/S01_straight_vwalls/preview_top.png,sha256=L0qGIFib1cAwSwJJ16cRtYSlPMOo4uQhNGt6OvM58XQ,39495
17
17
  trenchfoot/scenarios/S01_straight_vwalls/scene.json,sha256=kbHRC9zMVDGHbuLh2wRsvchfVfcbdDEVvxsMwHHBoHw,343
18
18
  trenchfoot/scenarios/S01_straight_vwalls/sdf_metadata.json,sha256=lo4IULejtQ0vg2rH8JDfRvB2WCxvUxM_N4JJjtBbU4Y,854
19
- trenchfoot/scenarios/S01_straight_vwalls/trench_scene.obj,sha256=MexC92x_MwFzKjHnbt12TYrL-UAJCb2qpjap5O9UkWg,563
19
+ trenchfoot/scenarios/S01_straight_vwalls/trench_scene.obj,sha256=LziV7R65U-cSktxZppsS7talf6quTfxeOmsPOahnpX0,563
20
20
  trenchfoot/scenarios/S01_straight_vwalls/meshes/trench_scene_culled.obj,sha256=6-usCEpAfhhZcdCxAy7NcXrkBwv-mEh40A6zN50k0Jo,519
21
21
  trenchfoot/scenarios/S01_straight_vwalls/point_clouds/culled/resolution0p050.pth,sha256=w4AKFbud2V0NhAtudGXXheLynAq-NLxUFSPxLczK3T0,1352093
22
22
  trenchfoot/scenarios/S01_straight_vwalls/point_clouds/full/resolution0p050.pth,sha256=w4AKFbud2V0NhAtudGXXheLynAq-NLxUFSPxLczK3T0,1352093
23
23
  trenchfoot/scenarios/S01_straight_vwalls/volumetric/trench_volume.msh,sha256=mpKNhdAPEogyDQrE9IGTgg535ZBNYXiLpIcmvl6QYPA,15007
24
24
  trenchfoot/scenarios/S02_straight_slope_pipe/ground_truth_isosurface.html,sha256=vHMtovoUUkmSGVh150se7hJERRBILzGr0iZYaJ6R1pw,6321783
25
- trenchfoot/scenarios/S02_straight_slope_pipe/metrics.json,sha256=quaLJZxP8DhUwVzskrY1TTBmNTY3cQOXBj37a5iOutk,928
25
+ trenchfoot/scenarios/S02_straight_slope_pipe/metrics.json,sha256=g8qKCa5t5gGE3-P9PTjFUn-z2ka3lxyWoI_pGjfAc9Q,929
26
26
  trenchfoot/scenarios/S02_straight_slope_pipe/preview.png,sha256=Aj5XpJMSdRNqnrPzL4oe-d0RjLdFT2V7OFrrZxwlsx8,251134
27
27
  trenchfoot/scenarios/S02_straight_slope_pipe/preview_oblique.png,sha256=8gTOJkd63NtXRkHcS31Sun_ClXiufqsxFeTVrPcG1no,173774
28
28
  trenchfoot/scenarios/S02_straight_slope_pipe/preview_side.png,sha256=Zwft-WEogsjPGcaUl7-Xd4kRIjewlbJ9h52MjS0pXB4,56706
29
29
  trenchfoot/scenarios/S02_straight_slope_pipe/preview_top.png,sha256=Su71iVHxgWIVPaYde4qnMiBR_gXix1n9bCSgmiYkO6M,57538
30
30
  trenchfoot/scenarios/S02_straight_slope_pipe/scene.json,sha256=W1ApzLHEnHQn-7AdWxh2xiEinj6Yb7830sQXNxmmmDw,486
31
31
  trenchfoot/scenarios/S02_straight_slope_pipe/sdf_metadata.json,sha256=5zWHXErct6UJro-6PzkCJqENG8PNAABVHBIIPg5sJfE,1211
32
- trenchfoot/scenarios/S02_straight_slope_pipe/trench_scene.obj,sha256=oBZQk-6yPKHd3mRp6l2qp2DpCDjOXNhtqz8WFFUlQ7g,333053
32
+ trenchfoot/scenarios/S02_straight_slope_pipe/trench_scene.obj,sha256=bJcc__416H4WJ4NMI5Bjo4OUoVLtomtggmwNr2rM7ZA,340328
33
33
  trenchfoot/scenarios/S02_straight_slope_pipe/meshes/trench_scene_culled.obj,sha256=OOiw80NuCBejzeN3MWAip9Haw8yQsLZEdlMQdDIgEMU,847
34
34
  trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/culled/resolution0p050.pth,sha256=Ug9hTIsm6iQKRs9cucXJyJpxpSvQ5f2GS1ytZmxi1mE,1623389
35
35
  trenchfoot/scenarios/S02_straight_slope_pipe/point_clouds/full/resolution0p050.pth,sha256=JgIRni8xWKtz2mm0gpSdmavGe-FF71mDervavM4Rqw8,1718877
36
36
  trenchfoot/scenarios/S02_straight_slope_pipe/volumetric/trench_volume.msh,sha256=kNFAqjr7dM-KX4JQV1u5GbHbWWFIfiEur1wV1fJCePA,47084
37
37
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/ground_truth_isosurface.html,sha256=0kRp_SHowhOHCljQV7CYaI0ur1KOzUjjjIJSwMdMoOI,6791920
38
- trenchfoot/scenarios/S03_L_slope_two_pipes_box/metrics.json,sha256=jI1yz_jxtWi8xKkbgu9ViNbiw63EMm1uIkBU_JJEY5c,1124
38
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/metrics.json,sha256=u1CtIyJsVc9Imx-_wVwqBHOVMQHYZ1fl_ILadssyqDo,1110
39
39
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview.png,sha256=q0V_2HSLUl2ovWLc4INKV87aLVh3vzqabMyKr8XEWEg,224248
40
40
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_oblique.png,sha256=Nvp0hvmG9HvZgbiEgbbI3uJtCLNFgLdamh8p2dw3ucY,154869
41
41
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_side.png,sha256=57DnWIuV4p-7eguJVSshd0SZ0COy7Y2cedUMp_DrrjY,51284
42
42
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/preview_top.png,sha256=rs-CMZwaNUl5xef85WEckQqm_UqNrGcfE39nofvsp0E,48235
43
43
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/scene.json,sha256=72g4wMT8tWcLRDYyMoJXOK50PbpfC1DDt6VUYGZgFzM,941
44
44
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/sdf_metadata.json,sha256=6ESVHVGuw_PJzIUD65bMoTLazbU8_a29zEUjmwaQYGo,1774
45
- trenchfoot/scenarios/S03_L_slope_two_pipes_box/trench_scene.obj,sha256=_NZfaiXcSoFd9-UpVUAc5mti30rO0-xWb9Kvt44ndHo,677262
45
+ trenchfoot/scenarios/S03_L_slope_two_pipes_box/trench_scene.obj,sha256=bktda0KKM51xCJePgeMhZ_0dHnyoBrbm9ZnLtWhjE08,676874
46
46
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/meshes/trench_scene_culled.obj,sha256=At4lipowr_3MY1rxmcKa479F_mQ-jJDVQJe0yHTrFSc,1835
47
47
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/culled/resolution0p050.pth,sha256=KqbuoZ1tUPDhlnDgmhd-7WBb92TABsEmOzEsB__KtlA,2456029
48
48
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/point_clouds/full/resolution0p050.pth,sha256=4fXvfu0TMO9FJaoqYrW21SCGe3eKuSLkSUl9CdE14rw,2622685
49
49
  trenchfoot/scenarios/S03_L_slope_two_pipes_box/volumetric/trench_volume.msh,sha256=cPgHKHlzPPtWX8H1yaxAYsEgYba3fr2JjfPvgg2a000,87383
50
50
  trenchfoot/scenarios/S04_U_slope_multi_noise/ground_truth_isosurface.html,sha256=E7sa8dlDyICJBlnL9X2C8IEopEJzDMhHdLbW-WpoPFc,7184880
51
- trenchfoot/scenarios/S04_U_slope_multi_noise/metrics.json,sha256=Yfweq5vK1vGgjVGyOJj-yVn-Qpt5A8zSU1yqDtL4Ch4,1294
51
+ trenchfoot/scenarios/S04_U_slope_multi_noise/metrics.json,sha256=uFn_K4E0o317Go8XvpEzQwCkalkaXQBQ7VZj_Q_vHKM,1293
52
52
  trenchfoot/scenarios/S04_U_slope_multi_noise/preview.png,sha256=ZbLgrL0nRtUX1y77i7b3LCxw4w_j5Ivmmh0i2YzrBDs,238958
53
53
  trenchfoot/scenarios/S04_U_slope_multi_noise/preview_oblique.png,sha256=HKUWhUuuql2YZzqq4B5oDpQSCWy9RhuwY_JxVZ-bEbg,162693
54
54
  trenchfoot/scenarios/S04_U_slope_multi_noise/preview_side.png,sha256=S7n1ivuo1PFcMp_WuEEnJnCx2JMP5yiCCCYOFDzJtfY,77730
55
55
  trenchfoot/scenarios/S04_U_slope_multi_noise/preview_top.png,sha256=auLgGMvU1bRua43WrU-O2WelPy0TbPZZD7ALFIvqlqk,65419
56
56
  trenchfoot/scenarios/S04_U_slope_multi_noise/scene.json,sha256=jkUNZ_rHSjVajoj54o8KoeWzY3pFH97L5pdWiH_C75w,1119
57
57
  trenchfoot/scenarios/S04_U_slope_multi_noise/sdf_metadata.json,sha256=78CdQZwn01CBBfMr-4jUc3eOGNw9jxmWEmjwd7KvM6o,2234
58
- trenchfoot/scenarios/S04_U_slope_multi_noise/trench_scene.obj,sha256=QqbiUGgGlM-PRnixxw74izArBd3vK7HXEIX62Ky9jek,1211216
58
+ trenchfoot/scenarios/S04_U_slope_multi_noise/trench_scene.obj,sha256=oa38vI62Wu7DrZgCz0vY9eTSAxPFAtHg19mdstBYdAE,1212223
59
59
  trenchfoot/scenarios/S04_U_slope_multi_noise/meshes/trench_scene_culled.obj,sha256=ykw_tzhXknXt3DbmSk3cBzbOL91Jm4zxjthp799YkWw,3206
60
60
  trenchfoot/scenarios/S04_U_slope_multi_noise/volumetric/trench_volume.msh,sha256=7KfGkJAlv19rzbaPhzbmy9UWo42Db_4VhAtisn6aMak,144623
61
61
  trenchfoot/scenarios/S05_wide_slope_pair/ground_truth_isosurface.html,sha256=MVKZHfrF2emDTNmpn7AhxqYUlcBXDUzY7_qSek2RpWg,6304070
62
- trenchfoot/scenarios/S05_wide_slope_pair/metrics.json,sha256=igpHy0ClKBKUMr8XUjkad-L4NhbpgcYXW0UHOJrQDxM,1109
62
+ trenchfoot/scenarios/S05_wide_slope_pair/metrics.json,sha256=N57i1cTUa7jnLCHBlLQlSJp1uHcHSNMtm3mdauPkzeI,1111
63
63
  trenchfoot/scenarios/S05_wide_slope_pair/preview_oblique.png,sha256=S0MwfT2bC0T7AAUsqwDAIBxxRea6lHeYhQYrumwJfFU,139982
64
64
  trenchfoot/scenarios/S05_wide_slope_pair/preview_side.png,sha256=8hiJ5ZZZ6iqIdPakWsgWDPrJnEuU7Qqy-odjnR38ocM,67796
65
65
  trenchfoot/scenarios/S05_wide_slope_pair/preview_top.png,sha256=bDdjWwBN6QQfZ2kV71VbV_Q59nrPYAiUMh3ivRo4L9M,57737
66
66
  trenchfoot/scenarios/S05_wide_slope_pair/scene.json,sha256=jmNMzqR8m4DvR35325GH87FdYXRgVb5VuKu7ZwDovW0,1028
67
67
  trenchfoot/scenarios/S05_wide_slope_pair/sdf_metadata.json,sha256=PRaqys_akemKtlfTwhJBELx5erUHKarjHMgMvU5R4kc,1776
68
- trenchfoot/scenarios/S05_wide_slope_pair/trench_scene.obj,sha256=cZOoLXbK7dQIe9C1UYTc0Ko4GMCMiJNIz73WrJ8haaA,694460
68
+ trenchfoot/scenarios/S05_wide_slope_pair/trench_scene.obj,sha256=LfE1pH7YiGEVqyR_jgp_xblcwqxOUfhl7TfiDFli0oQ,693480
69
69
  trenchfoot/scenarios/S05_wide_slope_pair/volumetric/trench_volume.msh,sha256=pHrj2dJgpSklpxiHHThiZINJQWpUdvkfhUnVBpKASEM,123235
70
70
  trenchfoot/scenarios/S06_bumpy_wide_loop/ground_truth_isosurface.html,sha256=_p4-B7sg_lfvKzVwJyfg6ub5Nk_x-ekzmLUE2NxQvkQ,6600554
71
- trenchfoot/scenarios/S06_bumpy_wide_loop/metrics.json,sha256=CH9ubdgvXhEBX6hi0Hme8B2jMX_HVHQGyqh5w8a-veE,1220
71
+ trenchfoot/scenarios/S06_bumpy_wide_loop/metrics.json,sha256=MY7ABvVGGc3bWTKiiMOXHW9pvnrfec2wbEVoYa3BZ9g,1220
72
72
  trenchfoot/scenarios/S06_bumpy_wide_loop/preview_oblique.png,sha256=Kw8agcTy3VTZ9OM-dNR46hXJ2sKJZN9xwozX0fNicbU,180697
73
73
  trenchfoot/scenarios/S06_bumpy_wide_loop/preview_side.png,sha256=6e8YF0oPJ045jax9w2grPUvO6j1OAod3iD81XXDldb0,88884
74
74
  trenchfoot/scenarios/S06_bumpy_wide_loop/preview_top.png,sha256=nvbwTseVTuw6lNjsUB2JdbFacngFbzjYzDUaAk_ayLs,89085
75
75
  trenchfoot/scenarios/S06_bumpy_wide_loop/scene.json,sha256=znpu8CXFIKLDBnpqmi0gWIg9_10NpmZrVLaMKnCuhZ0,1162
76
- trenchfoot/scenarios/S06_bumpy_wide_loop/sdf_metadata.json,sha256=eScawGWg8aZYF9HawhYY6qOZgTpddQkLyx-A68DwtSA,1983
77
- trenchfoot/scenarios/S06_bumpy_wide_loop/trench_scene.obj,sha256=pfdKyBAW9EKUsWeCq_Bs_G2yiVTc4LQc84FTRgi-dlA,852850
76
+ trenchfoot/scenarios/S06_bumpy_wide_loop/sdf_metadata.json,sha256=Tui7hhyXzXQXXsDBRZh-MhMK2mC_3PyS019wg6X3DBk,1981
77
+ trenchfoot/scenarios/S06_bumpy_wide_loop/trench_scene.obj,sha256=8IZ1vqS95gQTQyEXKsDf0z4e7tNgc6HIxjY3ZAj0gNY,852849
78
78
  trenchfoot/scenarios/S06_bumpy_wide_loop/volumetric/trench_volume.msh,sha256=r8KJMR5TxykP1_oeYbPnsckStGZDZ2-7e8KCAHPBh5I,279971
79
79
  trenchfoot/scenarios/S07_circular_well/ground_truth_isosurface.html,sha256=PP3ueCK76LhrnoK95ZCOyToq1hMroqrZANUrGKoQGx4,8166265
80
- trenchfoot/scenarios/S07_circular_well/metrics.json,sha256=qsewQKQ2DpMNhpGsQadXN9ibyoxSIPD8NLS6is8GjZs,1433
80
+ trenchfoot/scenarios/S07_circular_well/metrics.json,sha256=OYK_-QAlJdp2rvPW0h9oYmXdaTWs7kV-sl5VWjUSDS4,1433
81
81
  trenchfoot/scenarios/S07_circular_well/preview_oblique.png,sha256=ogcl8HnszT6otoZuRu_P5J_wbzuwA54FL1lOPAEBv3M,201455
82
82
  trenchfoot/scenarios/S07_circular_well/preview_side.png,sha256=wg6Blso1DHaswjwgQ8A2wakoAf7Iry-OCWUdFH46ALg,80971
83
83
  trenchfoot/scenarios/S07_circular_well/preview_top.png,sha256=X1P0g8kblJLsxOpYiZXKG1uIn4Bt52jvp2spLX-7554,123007
84
84
  trenchfoot/scenarios/S07_circular_well/scene.json,sha256=tLLEgEWNxARpvHXkgLNDRvmE-pLgd92_LQJGs0BMdIM,3144
85
- trenchfoot/scenarios/S07_circular_well/sdf_metadata.json,sha256=5_D_rA_CqWgg2uSgVlqWCO4zQg0Gg5NWUnXHtCERBUA,4776
86
- trenchfoot/scenarios/S07_circular_well/trench_scene.obj,sha256=PHsRceUTwRAc44sppI2HnCeWkqUPafS-LcTe_50rP84,1608845
85
+ trenchfoot/scenarios/S07_circular_well/sdf_metadata.json,sha256=KyndFy135AJ5T42dRgcdvsFii_KgihCDreP3pyVOdrQ,4819
86
+ trenchfoot/scenarios/S07_circular_well/trench_scene.obj,sha256=DpMQukhWFybZ6C6LUSrQsd5OZ6k2okabUnEoiVhy2v4,1608828
87
87
  trenchfoot/scenarios/S07_circular_well/volumetric/trench_volume.msh,sha256=dqhtd3SFKj5RLT_BcWIIvVGCbAqvOx7RX25-K7NKX10,615212
88
- trenchfoot-0.4.4.dist-info/METADATA,sha256=9Uqjk87_kPrDsLPV3i3FOB_d9-3Zni7LYxtm_cS2fag,5292
89
- trenchfoot-0.4.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
90
- trenchfoot-0.4.4.dist-info/entry_points.txt,sha256=5TejAGmc4GnNYLn7MhhLtSCNz9240RvzcNaetF4IHfg,119
91
- trenchfoot-0.4.4.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
92
- trenchfoot-0.4.4.dist-info/RECORD,,
88
+ trenchfoot-0.4.6.dist-info/METADATA,sha256=XbM-B0AQxxm5PZX98-ng0yY7pA6OPTqAnHwYvaWeSWE,5326
89
+ trenchfoot-0.4.6.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
90
+ trenchfoot-0.4.6.dist-info/entry_points.txt,sha256=5TejAGmc4GnNYLn7MhhLtSCNz9240RvzcNaetF4IHfg,119
91
+ trenchfoot-0.4.6.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
92
+ trenchfoot-0.4.6.dist-info/RECORD,,