コード例 #1
0
def makePolyList(v):
    xlines = [[],[],[],[],[],[],[],[],[],[],[],[]]
    segs = []
    for corner, edges, planes in polyTab:
        linx = []
        for i in range(3):
            l,s,r = planes[2*i:2*i+3]
            e = remainder(i+1,3)
            p1 = planepoint(v,corner,l,r)
            if abs(dot(p1,polyMat[s])) <= abs(v[s]):
                p2 = planepoint(v,l,s,r)
                linx += [p1]
                xlines[edges[i]] += [p2]
                xlines[edges[e]] += [p2]
                segs += [p1,p2]
            else:
                p1 = planepoint(v,corner,l,s)
                p2 = planepoint(v,corner,r,s)
                linx += [p1,p2]
                xlines[edges[i]] += [p1]
                xlines[edges[e]] += [p2]
        e=edges[0]
        xlines[e] = xlines[e][:-2] + [xlines[e][-1],xlines[e][-2]]
        for p1,p2 in zip(linx, linx[1:]+[linx[0]]):
            segs += [p1,p2]
    
    ctl = 12
    for lis in xlines[:ctl]:
        segs += [lis[0],lis[3],lis[1],lis[2]]

    assert type(segs) == type([]) #bruce 041119
    return segs
コード例 #2
0
def makePolyList(v):
    xlines = [[], [], [], [], [], [], [], [], [], [], [], []]
    segs = []
    for corner, edges, planes in polyTab:
        linx = []
        for i in range(3):
            l, s, r = planes[2 * i:2 * i + 3]
            e = remainder(i + 1, 3)
            p1 = planepoint(v, corner, l, r)
            if abs(dot(p1, polyMat[s])) <= abs(v[s]):
                p2 = planepoint(v, l, s, r)
                linx += [p1]
                xlines[edges[i]] += [p2]
                xlines[edges[e]] += [p2]
                segs += [p1, p2]
            else:
                p1 = planepoint(v, corner, l, s)
                p2 = planepoint(v, corner, r, s)
                linx += [p1, p2]
                xlines[edges[i]] += [p1]
                xlines[edges[e]] += [p2]
        e = edges[0]
        xlines[e] = xlines[e][:-2] + [xlines[e][-1], xlines[e][-2]]
        for p1, p2 in zip(linx, linx[1:] + [linx[0]]):
            segs += [p1, p2]

    ctl = 12
    for lis in xlines[:ctl]:
        segs += [lis[0], lis[3], lis[1], lis[2]]

    assert type(segs) == type([])  #bruce 041119
    return segs
コード例 #3
0
ファイル: VQT.py プロジェクト: elfion/nanoengineer
 def setangle(self, theta):
     """
     Set the quaternion's rotation to theta (destructive modification).
     (In the same direction as before.)
     """
     theta = Numeric.remainder(theta / 2.0, math.pi)
     self.vec[1:] = norm(self.vec[1:]) * Numeric.sin(theta)
     self.vec[0] = Numeric.cos(theta)
     self.__reset()
     return self
コード例 #4
0
    def drawLines(self):
        # angle has to be provided in radians
        angle = self.angle

        self.circlePtsAngles = self.circlePtsAngles + angle
        self.circlePtsAngles = Numeric.remainder(self.circlePtsAngles,
                                                 2 * math.pi)
        xcoords = Numeric.cos(self.circlePtsAngles)
        xsin = Numeric.sin(self.circlePtsAngles)
        if self.orient == 'horizontal':
            w = self.innerbox[2] - self.innerbox[0]
            r = w / 2
            c = self.innerbox[0] + r
            y1 = self.innerbox[1]
            y2 = self.innerbox[3]
        else:
            w = self.innerbox[3] - self.innerbox[1]
            r = w / 2
            c = self.innerbox[1] + r
            y1 = self.innerbox[0]
            y2 = self.innerbox[2]

        cl = self.canvas.create_line
        setCoords = self.canvas.coords
        setOpt = self.canvas.itemconfigure
        pi2 = math.pi / 2.
        drawLines = 0
        co = Numeric.take(xcoords,
                          Numeric.nonzero(Numeric.greater_equal(xsin, 0.0)))
        co = Numeric.sort(co)
        co = [-1] + list(co)
        for i in range(len(co)):
            x = c - int(co[i] * r)
            if self.orient == 'horizontal':
                setCoords(self.linesIds[i], x, y1, x, y2)
            else:
                setCoords(self.linesIds[i], y1, x, y2, x)
            shopt = self.shadowLinesOptions[i]
            x = x + shopt[0]
            if self.orient == 'horizontal':
                setCoords(self.shLinesIds[i], x, y1, x, y2)
            else:
                setCoords(self.shLinesIds[i], y1, x, y2, x)
            setOpt(self.shLinesIds[i], fill=shopt[1], width=shopt[2])
コード例 #5
0
ファイル: thumbwheel.py プロジェクト: damjanmk/Raccoon2
 def drawLines(self):
     # angle has to be provided in radians
     angle = self.angle
         
     self.circlePtsAngles = self.circlePtsAngles+angle
     self.circlePtsAngles = Numeric.remainder(self.circlePtsAngles,
                                              2*math.pi)
     xcoords = Numeric.cos(self.circlePtsAngles)
     xsin = Numeric.sin(self.circlePtsAngles)
     if self.orient=='horizontal':
         w = self.innerbox[2] - self.innerbox[0]
         r = w/2
         c = self.innerbox[0] + r
         y1 = self.innerbox[1]
         y2 = self.innerbox[3]
     else:
         w = self.innerbox[3] - self.innerbox[1]
         r = w/2
         c = self.innerbox[1] + r
         y1 = self.innerbox[0]
         y2 = self.innerbox[2]
         
     cl = self.canvas.create_line
     setCoords = self.canvas.coords
     setOpt = self.canvas.itemconfigure
     pi2 = math.pi/2.
     drawLines = 0
     co = Numeric.take(xcoords,
                       Numeric.nonzero(Numeric.greater_equal(xsin, 0.0)))
     co = Numeric.sort(co)
     co = [-1]+list(co)
     for i in range(len(co)):
         x = c - int(co[i]*r)
         if self.orient=='horizontal':
             setCoords(self.linesIds[i], x, y1, x, y2)
         else:
             setCoords(self.linesIds[i], y1, x, y2, x)
         shopt = self.shadowLinesOptions[i]
         x = x + shopt[0]
         if self.orient=='horizontal':
             setCoords(self.shLinesIds[i], x, y1, x, y2)
         else:
             setCoords(self.shLinesIds[i], y1, x, y2, x)
         setOpt(self.shLinesIds[i], fill = shopt[1], width=shopt[2])