Exemplo n.º 1
0
 def generate(self):
     p = PNMImage(self.size, self.size, num_channels=2)
     for y in range(self.size):
         ry = (y - self.half_size + 0.5) / self.size
         for x in range(self.size):
             rx = (x - self.half_size + 0.5) / self.size
             dist = sqrt(rx * rx + ry * ry)
             value = min(1.0, pow(self.factor, dist))
             v = value * self.max_value
             p.set_xel_a(x, y, v, v, v, v)
     return p
Exemplo n.º 2
0
 def generate(self):
     p = PNMImage(self.size, self.size, num_channels=2)
     sigma = self.fwhm / (2 * sqrt(2 * log(2)))
     inv_sig2 = 1.0 / (2 * sigma * sigma)
     inv_factor = 1.0 / (sigma * sqrt(2.0 * pi))
     for y in range(self.size):
         ry = y - self.half_size + 0.5
         for x in range(self.size):
             rx = x - self.half_size + 0.5
             dist2 = rx*rx + ry*ry
             value = min(1.0, exp(- dist2 * inv_sig2) * inv_factor * self.fwhm)
             v = value * self.max_value
             p.set_xel_a(x, y, v, v, v, v)
     return p
Exemplo n.º 3
0
 def generate(self):
     p = PNMImage(self.size, self.size, num_channels=2, maxval=65535)
     for y in range(self.size):
         ry = (y - self.half_size + 0.5) / (self.half_size - 1)
         for x in range(self.size):
             rx = (x - self.half_size + 0.5) / (self.half_size - 1)
             r = sqrt(rx * rx + ry * ry)
             if r > 1.0:
                 r = 0.0
             elif r > 0.5:
                 r = 2 * (1 - r)
             else:
                 r = 1.0
             r *= self.max_value
             p.set_xel_a(x, y, r, r, r, r)
     return p
Exemplo n.º 4
0
 def generate(self):
     pt = self.top.generate()
     pb = self.bottom.generate()
     p = PNMImage(self.size, self.size, num_channels=2)
     for y in range(self.size):
         yt = y - self.size / 2 + self.top.size / 2
         yb = y - self.size / 2 + self.bottom.size / 2
         for x in range(self.size):
             xt = x - self.size / 2 + self.top.size / 2
             xb = x - self.size / 2 + self.bottom.size / 2
             if xt < 0 or xt >= self.top.size or yt < 0 or yt >= self.top.size:
                 c = pb.get_xel_a(xb, yb)
             elif xb < 0 or xb >= self.bottom.size or yb < 0 or yb >= self.bottom.size:
                 c = pt.get_xel_a(xt, yt)
             else:
                 ct = pt.get_xel_a(xt, yt)
                 cb = pb.get_xel_a(xb, yb)
                 c = ct + cb * (1 - ct[3])
                 c[3] = ct[3] + cb[3] * (1 - ct[3])
             p.set_xel_a(x, y, c)
     return p