Exemplo n.º 1
0
 def camera(i, j):
     # int, int -> vector a
     alpha = math.tan(fovx/2)*((i - (width/2))/(width/2))
     beta = math.tan(fovy/2)*(((height/2) - j)/(height/2))
     dirn = vr.add_vector(vr.add_vector(vr.scale_mul(alpha, side(geo)),
                                        vr.scale_mul(beta, up(geo))),
                          forward(geo))
     dirn = vr.normalize(dirn)
     return ry.make_ray(eye, dirn)
Exemplo n.º 2
0
 def process(self, message, pipeline):
     for i in xrange(len(message.population)):
         diff_count = len(message.difference_solutions[i])
         diff_vector = message.difference_solutions[i][0].genes
         for k in range(1, diff_count // 2):
             diff_vector = vector.add_vector(diff_vector, \
                 message.difference_solutions[i][k].genes)
         for k in range(diff_count // 2, diff_count):
             diff_vector = vector.subtract_vector(diff_vector,
                 message.difference_solutions[i][k].genes)
         trial = representations.Solution()
         trial.genes = vector.add_vector(message.base_solutions[i].genes,
             vector.multiply_scalar(diff_vector, self.f))
         trial.generation = message.generation
         message.trials[i] = trial
     return message
Exemplo n.º 3
0
 def process(self, message, pipeline):
     for i in xrange(len(message.population)):
         diff_count = len(message.difference_solutions[i])
         diff_vector = message.difference_solutions[i][0].genes
         for k in range(1, diff_count // 2):
             diff_vector = vector.add_vector(diff_vector, \
                 message.difference_solutions[i][k].genes)
         for k in range(diff_count // 2, diff_count):
             diff_vector = vector.subtract_vector(
                 diff_vector, message.difference_solutions[i][k].genes)
         trial = representations.Solution()
         trial.genes = vector.add_vector(
             message.base_solutions[i].genes,
             vector.multiply_scalar(diff_vector, self.f))
         trial.generation = message.generation
         message.trials[i] = trial
     return message
Exemplo n.º 4
0
def get_color(scene, lights, ray):
    # scene, lights, ray -> int
    t, normal = intersect_scene(scene, ray)
    ep = 1

    if not t or t <= 0:
        return 0
    if t:
        # calulate new pos...
        new_pos = ry.at_t(ray, t)
        new_pos = vr.add_vector(new_pos, vr.scale_mul(ep, normal))
        return intersect_lights(scene, lights, new_pos, normal)
Exemplo n.º 5
0
 def process(self, message, pipeline):
     assert len(message.base_solutions) == \
         len(message.difference_solutions) == \
         len(message.population), \
         "population, base solutions and difference solutions must" \
         "have equal length"
     for i in xrange(len(message.population)):
         diff_count = len(message.difference_solutions[i])
         diff_vector = message.difference_solutions[i][0].genes
         for k in range(1, diff_count // 2):
             diff_vector = vector.add_vector(
                 diff_vector, message.difference_solutions[i][k].genes)
         for k in range(diff_count // 2, diff_count):
             diff_vector = vector.subtract_vector(
                 diff_vector, message.difference_solutions[i][k].genes)
         trial = representations.Solution()
         trial.genes = vector.add_vector(
             message.base_solutions[i].genes,
             vector.multiply_scalar(diff_vector, self.f))
         trial.generation = message.generation
         message.trials[i] = trial
     assert len(message.population) == len(message.trials), \
         "population and trials must be of equal length"
     return message
Exemplo n.º 6
0
def at_t(ray, t):
    # ray, float -> vector
    pos = get_pos(ray)
    dirn = get_dirn(ray)
    new_pos = vr.add_vector(pos, vr.scale_mul(t, dirn))
    return new_pos