def initalize(self): self.spd = 0.1 self.wav = self.slid_wav.value self.point1 = physics.point_source(radius = 0.01, speed= self.spd, wavelength = self.wav) #self.point1.vel = physics.vector3(0.1,0) self.point2 = physics.point_source(radius = 0.01, speed= self.spd, wavelength = self.wav) self.points = [self.point1, self.point2] for point in self.points: point.mousedown = False
def initalize(self): self.spd = 0.1 self.wav = float(self.txt_wave.text) self.point1 = physics.point_source(radius = 0.01, speed= 0, wavelength = self.wav) self.point1.vel = physics.vector3(0.1,0) self.points = [self.point1] for point in self.points: point.mousedown = False
def initalize(self): self.spd = 0.1 self.wav = float(self.txt_wave.text) self.point1 = physics.point_source(radius=0.01, speed=0, wavelength=self.wav) self.point1.vel = physics.vector3(0.1, 0) self.points = [self.point1] for point in self.points: point.mousedown = False
def timer_tick(self, **event_args): canvas = self.canvas self.cw = canvas.get_width() self.ch = canvas.get_height() cw = self.cw ch = self.ch dt = self.dt if self.first: self.xu = self.cw self.initalize() self.init_pos(self.points) self.spd_slider = draw.slider(self.can_slid, mini=0.1, maxi=3, stepsize=0.1, start=0.6, colour=self.default_colour_wave) self.spd_slider.indicator = True for point in self.points: point.vel.x = self.spd_slider.value * 0.1 self.spd_slider.draw() self.draw_all() self.first = False if self.running: for point in self.points: point.move(dt) gap = int(float(self.wav) / (self.spd * dt)) #point.radiate(dt) if int(float(self.t) / dt) % gap == 0: new = physics.point_source(radius=0.0001, speed=self.spd, wavelength=self.wav) new.pos = point.pos * 1 self.pulses.append(new) for point in self.pulses: point.radiate(dt) self.draw_all() self.t += self.dt
def canvas_mouse_up(self, x, y, button, **event_args): # This method is called when a mouse button is released on this component self.mouse.x = x/(self.xu*1.0) self.mouse.y = (self.ch-y)/(self.xu*1.0) for point in self.points: point.mousedown = False detect = False #if mouse is within a ball, record it for point in self.points: if (self.mouse - point.pos).mag()<point.radius: detect = True if self.moved <=2: self.points.remove(point) if not detect: newpoint = physics.point_source(radius = 0.01, speed= self.spd, wavelength =self.wav) newpoint.pos = self.mouse*1.0 self.points.append(newpoint) self.draw_all()
def canvas_mouse_up (self, x, y, button, **event_args): # This method is called when a mouse button is released on this component self.mouse.x = x/(self.xu*1.0) self.mouse.y = (self.ch-y)/(self.xu*1.0) for point in self.points: point.mousedown = False detect = False #if mouse is within a ball, record it for point in self.points: if (self.mouse - point.pos).mag()<point.radius: detect = True if self.moved <=2: self.points.remove(point) if not detect: newpoint = physics.point_source(radius = 0.01, speed= self.spd, wavelength =self.wav) newpoint.pos = self.mouse*1.0 self.points.append(newpoint) self.draw_all()
def timer_tick (self, **event_args): canvas = self.canvas self.cw = canvas.get_width() self.ch = canvas.get_height() cw = self.cw ch = self.ch dt = self.dt if self.first: self.xu = self.cw self.initalize() self.init_pos(self.points) self.spd_slider = draw.slider(self.can_slid, mini= 0.1, maxi = 3, stepsize = 0.1, start=0.6, colour = self.default_colour_wave) self.spd_slider.indicator = True for point in self.points: point.vel.x = self.spd_slider.value*0.1 self.spd_slider.draw() self.draw_all() self.first = False if self.running: for point in self.points: point.move(dt) gap = int(float(self.wav)/(self.spd*dt)) #point.radiate(dt) if int(float(self.t)/dt) % gap ==0: new = physics.point_source(radius = 0.0001, speed= self.spd, wavelength = self.wav) new.pos = point.pos*1 self.pulses.append(new) for point in self.pulses: point.radiate(dt) self.draw_all() self.t += self.dt