diff --git a/cad_core/lines.py b/cad_core/lines.py index 112eb70..8e7ebb8 100644 --- a/cad_core/lines.py +++ b/cad_core/lines.py @@ -152,6 +152,7 @@ def trim_segment_by_cutter(seg: Line, cutter: Line, end: str = "b", tol: float = __all__ = [ "Point", "Line", + "is_parallel", "intersection_line_line", "extend_line_end_to_point", "extend_line_to_intersection", diff --git a/tests/cad_core/test_is_parallel.py b/tests/cad_core/test_is_parallel.py new file mode 100644 index 0000000..277ab29 --- /dev/null +++ b/tests/cad_core/test_is_parallel.py @@ -0,0 +1,21 @@ +from cad_core.lines import Line, Point, is_parallel + +def test_parallel_lines(): + l1 = Line(Point(0, 0), Point(10, 0)) + l2 = Line(Point(0, 10), Point(10, 10)) + assert is_parallel(l1, l2) is True + +def test_non_parallel_lines(): + l1 = Line(Point(0, 0), Point(10, 0)) + l2 = Line(Point(0, 0), Point(0, 10)) + assert is_parallel(l1, l2) is False + +def test_collinear_lines(): + l1 = Line(Point(0, 0), Point(10, 0)) + l2 = Line(Point(20, 0), Point(30, 0)) + assert is_parallel(l1, l2) is True + +def test_nearly_parallel_lines(): + l1 = Line(Point(0, 0), Point(1000, 0)) + l2 = Line(Point(0, 1e-10), Point(1000, 1e-10)) + assert is_parallel(l1, l2) is True