def test_square_by_radius(): corners = list(ngon(4, radius=1)) assert len(corners) == 4 assert is_close_points(corners[0], (1, 0, 0)) assert is_close_points(corners[1], (0, 1, 0)) assert is_close_points(corners[2], (-1, 0, 0)) assert is_close_points(corners[3], (0, -1, 0))
def test_square_by_radius(): corners = list(ngon(4, radius=1)) assert len(corners) == 4 assert corners[0].isclose((1, 0, 0)) assert corners[1].isclose((0, 1, 0)) assert corners[2].isclose((-1, 0, 0)) assert corners[3].isclose((0, -1, 0))
def test_heptagon_by_edge_length(): corners = list(ngon(7, length=10)) assert len(corners) == 7 assert corners[0].isclose((11.523824354812433, 0, 0)) assert corners[1].isclose((7.184986963636852, 9.009688679024192, 0)) assert corners[2].isclose((-2.564292158181384, 11.234898018587335, 0)) assert corners[3].isclose((-10.382606982861683, 5, 0)) assert corners[4].isclose((-10.382606982861683, -5, 0)) assert corners[5].isclose((-2.564292158181387, -11.234898018587335, 0)) assert corners[6].isclose((7.18498696363685, -9.009688679024192, 0))
def ngon(count: int, length: float = None, radius: float = 1.0, transform: Matrix44 = None) -> Path: """ Returns a `regular polygon <https://en.wikipedia.org/wiki/Regular_polygon>`_ a :class:`Path` object, with the center at (0, 0, 0). The polygon size is determined by the edge `length` or the circum `radius` argument. If both are given `length` has higher priority. Default size is a `radius` of 1. The ngon starts with the first vertex is on the x-axis! The base geometry is created by function :func:`ezdxf.render.forms.ngon`. Args: count: count of polygon corners >= 3 length: length of polygon side radius: circum radius, default is 1 transform: transformation Matrix applied to the ngon """ vertices = forms.ngon(count, length=length, radius=radius) if transform is not None: vertices = transform.transform_vertices(vertices) return converter.from_vertices(vertices, close=True)