def _plot_sample(self): if not optimised.a_count: return (x1, y1, x2, y2) = self.parameters['density_rectangle'] density_c = 0 density = 0.0 density_area = (y2-y1)*(x2-x1) velocities = list() for i in xrange(optimised.a_count): (x,y) = optimised.a_property(i, "position") r = optimised.a_property(i, "radius") velocities.append(optimised.a_property(i, "velocity")) if x+r >= x1 and x-r <= x2 and y+r >= y1 and y-r <= y2: density_c += 1 flowrates = [] for i in xrange(len(self.parameters["flowrate_lines"])): (x1,y1,x2,y2) = self.parameters["flowrate_lines"][i][:4] flow_length = math.sqrt((x2-x1)**2+(y2-y1)**2) flow_count = optimised.flow_count(i) flowrate = flow_count/constants.plot_sample_frequency/flow_length flowrates.append(flowrate) density = density_c / density_area self.plots.add_sample(self.time, density=density, velocities=velocities, flowrate=flowrates)
def _draw(self): self._canvas("clear_screen") for i in xrange(optimised.a_count): (x,y) = optimised.a_property(i, "position") r = optimised.a_property(i, "radius") t = optimised.a_property(i, "target") self._canvas("draw_pedestrian", x,y,r,t) self._canvas("draw_text", "t = %.2f" % self.time, not self.create_images) for t in self.parameters['targets']: self._canvas("draw_target", *t) for w in self.parameters['walls']: self._canvas("draw_wall", w) if self.options.show_simulation: self.show_canvas.update() if self.create_images: self.image_canvas.create_image(self.frames)