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
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
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
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])
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])