1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#############################################################
## ##
## Copyright (c) 2003-2011 by The University of Queensland ##
## Earth Systems Science Computational Centre (ESSCC) ##
## http://www.uq.edu.au/esscc ##
## ##
## Primary Business: Brisbane, Queensland, Australia ##
## Licensed under the Open Software License version 3.0 ##
## http://www.opensource.org/licenses/osl-3.0.php ##
## ##
#############################################################
"""Defines the L{Cone} base class"""
from esys.lsm.vis import core
from Modifier import Modifiable
class TruncatedCone(core.TruncatedCone, Modifiable):
def __init__(self, endPt1, endPt2, radius1, radius2 = 0):
core.TruncatedCone.__init__(
self,
endPt1,
endPt2,
radius1,
radius2
)
Modifiable.__init__(self)
def writeSdl(self, f):
f.write("cone {")
f.write(
"\n<"
+
",".join(
map(
str,
core.Vec3(self.getEndPt1())-core.Vec3(self.getCenter())
)
)
+
"> "
)
f.write(" %s" % self.getRadius1())
f.write(
"\n<"
+
",".join(
map(
str,
core.Vec3(self.getEndPt2())-core.Vec3(self.getCenter())
)
)
+
"> "
)
f.write(str(self.getRadius2()))
f.write(" ")
Modifiable.writeSdl(self, f)
f.write("\ntranslate <")
f.write(",".join(map(str,self.getCenter())))
f.write(">\n")
f.write("}")
class Cone(TruncatedCone):
"""
Objects of this class represent cones.
"""
def __init__(self, basePt, tipPt, radius):
"""
Initialises cone with center-end-point coordinates and
corresponding radii.
@type basePt: sequence of 3 floats
@param basePt: Center coordinate of one end.
@type tipPt: sequence of 3 floats
@param tipPt: Center coordinate of other end.
@type radius: float
@param radius: Radius at C{basePt}.
"""
TruncatedCone.__init__(self, basePt, tipPt, radius, 0)
def getBasePt(self):
return self.getEndPt1()
def getTipPt(self):
return self.getEndPt2()
def getRadius(self):
return self.getRadius1()
|