def createShape(self): "Create the shape." square = [ complex( - self.inradius.x, - self.inradius.y ), complex( self.inradius.x, - self.inradius.y ), complex( self.inradius.x, self.inradius.y ), complex( - self.inradius.x, self.inradius.y ) ] bottomTopSquare = trianglemesh.getAddIndexedLoops( square, self.vertexes, [ - self.inradius.z, self.inradius.z ] ) trianglemesh.addPillarByLoops( self.faces, bottomTopSquare )
def createShape(self): "Create the shape." polygonBottom = [] polygonTop = [] sides = evaluate.getSidesMinimumThreeBasedOnPrecision(max(self.inradius.x, self.inradius.y), self.xmlElement ) sideAngle = 2.0 * math.pi / sides for side in xrange(int(sides)): angle = float(side) * sideAngle unitComplex = euclidean.getWiddershinsUnitPolar(angle) pointBottom = complex(unitComplex.real * self.inradius.x, unitComplex.imag * self.inradius.y) polygonBottom.append(pointBottom) if self.topOverBottom > 0.0: polygonTop.append(pointBottom * self.topOverBottom) if self.topOverBottom <= 0.0: polygonTop.append(complex()) bottomTopPolygon = [ trianglemesh.getAddIndexedLoop(polygonBottom, self.vertexes, - self.inradius.z), trianglemesh.getAddIndexedLoop(polygonTop, self.vertexes, self.inradius.z)] trianglemesh.addPillarByLoops(self.faces, bottomTopPolygon)
def addCylinderByInradius(faces, inradius, topOverBottom, vertexes, xmlElement): 'Add cylinder by radius.' polygonBottom = [] polygonTop = [] sides = evaluate.getSidesMinimumThreeBasedOnPrecision(max(inradius.x, inradius.y), xmlElement ) sideAngle = 2.0 * math.pi / sides for side in xrange(int(sides)): angle = float(side) * sideAngle unitComplex = euclidean.getWiddershinsUnitPolar(angle) pointBottom = complex(unitComplex.real * inradius.x, unitComplex.imag * inradius.y) polygonBottom.append(pointBottom) if topOverBottom > 0.0: polygonTop.append(pointBottom * topOverBottom) if topOverBottom <= 0.0: polygonTop.append(complex()) bottomTopPolygon = [ trianglemesh.getAddIndexedLoop(polygonBottom, vertexes, -inradius.z), trianglemesh.getAddIndexedLoop(polygonTop, vertexes, inradius.z)] trianglemesh.addPillarByLoops(faces, bottomTopPolygon)
def addCylinderByInradius(faces, inradius, topOverBottom, vertexes, xmlElement): 'Add cylinder by radius.' polygonBottom = [] polygonTop = [] sides = evaluate.getSidesMinimumThreeBasedOnPrecision( max(inradius.x, inradius.y), xmlElement) sideAngle = 2.0 * math.pi / sides for side in xrange(int(sides)): angle = float(side) * sideAngle unitComplex = euclidean.getWiddershinsUnitPolar(angle) pointBottom = complex(unitComplex.real * inradius.x, unitComplex.imag * inradius.y) polygonBottom.append(pointBottom) if topOverBottom > 0.0: polygonTop.append(pointBottom * topOverBottom) if topOverBottom <= 0.0: polygonTop.append(complex()) bottomTopPolygon = [ trianglemesh.getAddIndexedLoop(polygonBottom, vertexes, -inradius.z), trianglemesh.getAddIndexedLoop(polygonTop, vertexes, inradius.z) ] trianglemesh.addPillarByLoops(faces, bottomTopPolygon)