Example #1
0
	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 )
Example #2
0
	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)
Example #3
0
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)
Example #4
0
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)