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