From 6c95702123269a674f0ffa0b57ec756bc611c643 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 7 Jun 2014 15:43:19 -0400 Subject: objects: Implement triangle fans. --- libdimension-python/dimension.pyx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'libdimension-python/dimension.pyx') diff --git a/libdimension-python/dimension.pyx b/libdimension-python/dimension.pyx index 0c4d665..1ad6d0b 100644 --- a/libdimension-python/dimension.pyx +++ b/libdimension-python/dimension.pyx @@ -1143,6 +1143,33 @@ cdef class Triangle(Object): self._object = dmnsn_new_smooth_triangle(_get_pool(), vertices, normals) Object.__init__(self, *args, **kwargs) +cdef class TriangleFan(Object): + """A triangle.""" + def __init__(self, vertices, *args, **kwargs): + """ + Create a TriangleFan. + + Keyword arguments: + vertices -- the vertices of the fan, starting in the center + + Additionally, TriangleFan() accepts any arguments that Object() accepts. + """ + cdef size_t nvertices = len(vertices) + if nvertices < 3: + raise TypeError("expected at least 3 vertices") + + cdef dmnsn_vector *varray + try: + varray = dmnsn_malloc(nvertices*sizeof(dmnsn_vector)) + for i in range(nvertices): + varray[i] = Vector(vertices[i])._v + + self._object = dmnsn_new_triangle_fan(_get_pool(), varray, nvertices) + finally: + dmnsn_free(varray) + + Object.__init__(self, *args, **kwargs) + cdef class Plane(Object): """A plane.""" def __init__(self, normal, double distance, *args, **kwargs): -- cgit v1.2.3