Skip to content

Commit

Permalink
Add early fail for get_normal_newell when the provided polygon is t…
Browse files Browse the repository at this point in the history
…oo small (< 3)
  • Loading branch information
mdjong1 committed Nov 21, 2023
1 parent 836ed00 commit 6806a10
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
3 changes: 3 additions & 0 deletions cjio/geom_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ def get_normal_newell(poly):
n = np.array([0.0, 0.0, 0.0], dtype=np.float64)
# if len(poly) == 0:
# print ("NOPOINTS")
if len(poly) < 3:
return n, False

for i,p in enumerate(poly):
ne = i + 1
if (ne == len(poly)):
Expand Down
57 changes: 57 additions & 0 deletions tests/test_geom_help.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import typing as t

import numpy as np
import numpy.typing as npt
import pytest

from cjio.geom_help import get_normal_newell


@pytest.mark.parametrize(
["poly", "expected_normal"],
[
(
[
[2195013, 353200, 12283],
[2195013, 353200, 8680],
[2182302, 347931, 8680],
[2182302, 347931, 12159],
[2182302, 347931, 12178],
],
np.array([-0.38292729, 0.92377848, 0.0]),
),
(
[
[2203406, 332904, 12622],
[2203406, 332904, 8680],
[2204954, 333543, 8680],
[2204954, 333543, 12223],
[2204954, 333543, 12584],
],
np.array([0.38156054, -0.92434385, 0.0]),
),
],
)
def test_get_normal_valid_poly(poly: t.List[t.List[int]], expected_normal: npt.NDArray[t.Any]) -> None:
normal, success = get_normal_newell(poly=poly)
assert success
np.testing.assert_almost_equal(actual=normal, desired=expected_normal)


@pytest.mark.parametrize(
["poly", "expected_normal"],
[
(
[[1041, 1009, 1025, 1054, 1087]],
np.array([0.0, 0.0, 0.0]),
),
(
[[[1099, 1098]]],
np.array([0.0, 0.0, 0.0]),
),
],
)
def test_get_normal_invalid_poly(poly: t.List[t.List[int]], expected_normal: npt.NDArray[t.Any]) -> None:
normal, success = get_normal_newell(poly=poly)
assert not success
np.testing.assert_almost_equal(actual=normal, desired=expected_normal)

0 comments on commit 6806a10

Please sign in to comment.