示例#1
0
 def apply_to_curve(self, verts, u_set, set_len=None, inc_pos=None):
     """
     Apply this color scheme to a
     set of vertices over a single
     independent variable u.
     """
     bounds = create_bounds()
     cverts = list()
     if callable(set_len): set_len(len(u_set) * 2)
     # calculate f() = r,g,b for each vert
     # and find the min and max for r,g,b
     for _u in xrange(len(u_set)):
         if verts[_u] is None:
             cverts.append(None)
         else:
             x, y, z = verts[_u]
             u, v = u_set[_u], None
             c = self(x, y, z, u, v)
             if c is not None:
                 c = list(c)
                 update_bounds(bounds, c)
             cverts.append(c)
         if callable(inc_pos): inc_pos()
     # scale and apply gradient
     for _u in xrange(len(u_set)):
         if cverts[_u] is not None:
             for _c in xrange(3):
                 # scale from [f_min, f_max] to [0,1]
                 cverts[_u][_c] = rinterpolate(bounds[_c][0], bounds[_c][1],
                                               cverts[_u][_c])
             # apply gradient
             cverts[_u] = self.gradient(*cverts[_u])
         if callable(inc_pos): inc_pos()
     return cverts
示例#2
0
 def apply_to_curve(self, verts, u_set, set_len=None, inc_pos=None):
     """
     Apply this color scheme to a
     set of vertices over a single
     independent variable u.
     """
     bounds = create_bounds()
     cverts = list()
     if callable(set_len): set_len(len(u_set)*2)
     # calculate f() = r,g,b for each vert
     # and find the min and max for r,g,b
     for _u in xrange(len(u_set)):
         if verts[_u] is None:
             cverts.append(None)
         else:
             x,y,z = verts[_u]
             u,v = u_set[_u], None
             c = self(x,y,z,u,v)
             if c is not None:
                 c = list(c)
                 update_bounds(bounds, c)
             cverts.append(c)
         if callable(inc_pos): inc_pos()
     # scale and apply gradient
     for _u in xrange(len(u_set)):
         if cverts[_u] is not None:
             for _c in xrange(3):
                 # scale from [f_min, f_max] to [0,1]
                 cverts[_u][_c] = rinterpolate(bounds[_c][0], bounds[_c][1], cverts[_u][_c])
             # apply gradient
             cverts[_u] = self.gradient(*cverts[_u])
         if callable(inc_pos): inc_pos()
     return cverts
示例#3
0
 def _interpolate_axis(self, axis, v):
     i = self._find_interval(v)
     v = rinterpolate(self.intervals[i - 1], self.intervals[i], v)
     return interpolate(self.colors[i - 1][axis], self.colors[i][axis], v)
示例#4
0
 def _interpolate_axis(self, axis, v):
     i = self._find_interval(v)
     v = rinterpolate(self.intervals[i-1], self.intervals[i], v)
     return interpolate(self.colors[i-1][axis], self.colors[i][axis], v)