예제 #1
0
    def updatePoints(self, func = None):
        """
        recalculates points according to the function func
        @param func: a function  R -> R^3
        """
        if func is not None:
            self.function = fix_function(func,self.intervals[0][0])

        self.domainPoints = []
        for it, line in zip(self.intervals, self.lines):
            domain, points = refine(self.function, it, self.max_angle, self.max_distance)
            self.domainPoints += domain
            line.setPoints(points)

        for f in self.fields.values():
            f.updatePoints(self.domainPoints, self.points)
예제 #2
0
 def __init__(self, func, interval, color=(1, 1, 1), width=1, nvertices= -1, max_distance = None, max_angle = None):
     super(Curve3D, self).__init__()
     self.__derivative = None
     self.fields = {}
     self.lines = []
     self.intervals = normalize_interval(interval)
     self.domainPoints = []
     self.max_distance = max_distance
     self.max_angle = max_angle
     ## self.interval[0][0] is the start of the first interval
     ## should be a valid value, anyway
     self.function = fix_function(func, self.intervals[0][0])
     for it in self.intervals:
         domain, points = refine(self.function, it, max_angle, max_distance)
         self.domainPoints += domain
         self.lines.append(Line(points, color, width, nvertices))
         self.separator.addChild(self.lines[-1].root) ## <--- container feature!!
     self.lengths = map(len, self.lines)
     self.animation = Animation(self.setNumVertices, (4000, 1, len(self)-1))