Exemplo n.º 1
0
 def __init__(self, fname, Isect=7):
     self.Isect = Isect  # Fix the section all rectangle unwrapping is relative to
     self.sections, self.zvals = loadwinggeometry(fname, 0.001)
     self.nsections = len(self.zvals)
     assert self.nsections == len(self.sections)
     self.nchorddivs = len(self.sections[0])
     assert self.nchorddivs == len(self.sections[-1])
     self.sectionchordlengths = [ ]
     self.sectionchordranges = [ ]
     for section in self.sections:
         chordlengths = [ 0 ]
         for p0, p1 in zip(section, section[1:]):
             chordlengths.append(chordlengths[-1] + (p0-p1).Len())
         self.sectionchordlengths.append(chordlengths)
         self.sectionchordranges.append((-chordlengths[-1]*0.5, chordlengths[-1]*0.5))
     self.leadingedgelengths = [ 0 ]
     for i in range(1, self.nsections):
         p0 = P3.ConvertGZ(self.sectionchordeval(i-1, 0), self.zvals[i-1])
         p1 = P3.ConvertGZ(self.sectionchordeval(i, 0), self.zvals[i])
         self.leadingedgelengths.append(self.leadingedgelengths[-1] + (p0-p1).Len())
     self.urange = (self.leadingedgelengths[0], self.leadingedgelengths[-1])
     self.vrange = self.sectionchordranges[self.Isect]
Exemplo n.º 2
0
 def sevalI(self, p):
     i = max(0, min(self.nsections-2, int(p[0])))
     m = p[0] - i
     p0 = P3.ConvertGZ(self.sectionchordevalI(i, p[1]), self.zvals[i])
     p1 = P3.ConvertGZ(self.sectionchordevalI(i+1, p[1]), self.zvals[i+1])
     return p0*(1-m) + p1*m