from surf.geometry import Vertex, Edge, Face, Polygon def cube(): v = [] v.append(Vertex(0.0, 1.0, 0.0)) v.append(Vertex(1.0, 1.0, 0.0)) v.append(Vertex(1.0, 0.0, 0.0)) v.append(Vertex(0.0, 0.0, 0.0)) v.append(Vertex(0.0, 1.0, 1.0)) v.append(Vertex(1.0, 1.0, 1.0)) v.append(Vertex(1.0, 0.0, 1.0)) v.append(Vertex(0.0, 0.0, 1.0)) e = [] e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) e.append(Edge()) f = [] f.append(Face()) f.append(Face()) f.append(Face()) f.append(Face()) f.append(Face()) f.append(Face()) # vertex list v[0].edges = [e[0], e[3], e[4]] v[1].edges = [e[0], e[5], e[1]] v[2].edges = [e[1], e[6], e[2]] v[3].edges = [e[2], e[7], e[3]] v[4].edges = [e[4], e[11], e[8]] v[5].edges = [e[5], e[9], e[8]] v[6].edges = [e[6], e[9], e[10]] v[7].edges = [e[7], e[10], e[11]] # face list f[0].edges = [e[0], e[1], e[2], e[3]] f[1].edges = [e[1], e[5], e[9], e[6]] f[2].edges = [e[2], e[6], e[10], e[7]] f[3].edges = [e[4], e[3], e[7], e[11]] f[4].edges = [e[8], e[5], e[0], e[4]] f[5].edges = [e[10], e[9], e[8], e[11]] #winged edges ordered by face, then by vertex reference e[0].vertices, e[0].faces, e[0].edges = [v[0], v[1]], [f[0], f[4]], [e[3], e[1], e[4], e[5]] e[1].vertices, e[1].faces, e[1].edges = [v[1], v[2]], [f[0], f[1]], [e[0], e[2], e[5], e[6]] e[2].vertices, e[2].faces, e[2].edges = [v[2], v[3]], [f[0], f[2]], [e[1], e[3], e[6], e[7]] e[3].vertices, e[3].faces, e[3].edges = [v[3], v[0]], [f[3], f[0]], [e[4], e[7], e[0], e[2]] e[4].vertices, e[4].faces, e[4].edges = [v[0], v[4]], [f[3], f[4]], [e[11], e[3], e[0], e[8]] e[5].vertices, e[5].faces, e[5].edges = [v[5], v[1]], [f[4], f[1]], [e[8], e[0], e[9], e[1]] e[6].vertices, e[6].faces, e[6].edges = [v[2], v[6]], [f[1], f[2]], [e[1], e[9], e[2], e[10]] e[7].vertices, e[7].faces, e[7].edges = [v[7], v[3]], [f[3], f[2]], [e[11], e[3], e[10], e[2]] e[8].vertices, e[8].faces, e[8].edges = [v[4], v[5]], [f[4], f[5]], [e[4], e[5], e[11], e[9]] e[9].vertices, e[9].faces, e[9].edges = [v[5], v[6]], [f[1], f[5]], [e[5], e[6], e[8], e[10]] e[10].vertices, e[10].faces, e[10].edges = [v[7], v[6]], [f[2], f[5]], [e[7], e[6], e[11], e[9]] e[11].vertices, e[11].faces, e[11].edges = [v[4], v[7]], [f[3], f[5]], [e[4], e[7], e[8], e[10]] # just to prove to myself that the objects are the same, this is what years of pass by value have done to me... # print id(v[0].x) # print id(e[0].vertices[0].x) # print id(f[0].edges[0].vertices[0].x) # v[0].x = 9 # print id(v[0].x) # print id(e[0].vertices[0].x) # print id(f[0].edges[0].vertices[0].x) # print v[0].x # print e[0].vertices[0].x # print f[0].edges[0].vertices[0].x return Polygon(v, e, f)