diff --git a/main.py b/main.py index 0c85b3a..1624859 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,7 @@ import pygame import numpy as np import matplotlib.pyplot as plt from particle import Particle +from sensor import Sensor pygame.init() @@ -12,8 +13,7 @@ SCREEN_HEIGHT = 600 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) -sensor1 = pygame.Rect(200, 200, 50, 200) - +sensor = Sensor(width = 50, distance = 200, space = 200) silica = Particle(speed = 1, size = 20, perm = 4) @@ -22,11 +22,12 @@ time_data = [] volume_data = [] + plt.ion() fig, ax = plt.subplots() line, = ax.plot([], [], 'r-') -ax.set_xlim(0, 1) -ax.set_ylim(0, 30000) +ax.set_xlim(0, 400) +ax.set_ylim(0, 40000) ax.set_xlabel('Time (s)') ax.set_ylabel('Volume') ax.set_title('Volume/time') @@ -45,7 +46,7 @@ while run: screen.fill((0,0,0)) - pygame.draw.rect(screen, (255,0,0), sensor1) + sensor.generate(SCREEN_WIDTH, SCREEN_HEIGHT, screen) pygame.draw.circle(screen, (255, 255, 255), (distance - silica.size, 300), silica.size) @@ -53,17 +54,7 @@ while run: if event.type == pygame.QUIT: run = False - if silica.size >= abs(200 - (distance - silica.size)): - pygame.draw.circle(screen, (0,255,0),(100, 100), 50) - volume = silica.partialVol(abs(200 - (distance - silica.size))) - elif silica.size >= abs(250 - (distance - silica.size)): - pygame.draw.circle(screen, (0,255,0),(100, 100), 50) - volume = silica.volume - silica.partialVol(abs(250 - (distance - silica.size))) - elif ((distance - silica.size) >= 200 and (distance - silica.size) <= 250): - pygame.draw.circle(screen, (0,255,0),(100, 100), 50) - volume = silica.volume - else: - volume = 0 + volume = sensor.testSensor1(distance, silica) time_data.append(time) volume_data.append(volume) @@ -79,7 +70,7 @@ while run: time = time + 1 - print(volume_data) + print(volume) diff --git a/sensor.py b/sensor.py new file mode 100644 index 0000000..61ce981 --- /dev/null +++ b/sensor.py @@ -0,0 +1,34 @@ +import pygame + +class Sensor: + def __init__(self, width, distance, space): + self.width = width + self.distance = distance + self.space = space + + def generate(self, screenWidth, screenHeight, screen): + self.sensor1_x = (screenWidth / 2) - (self.space / 2) + self.sensor1_y = 0 + self.sensor1_x_size = self.width + self.sensor1_y_size = (screenHeight / 2) - (self.distance / 2) + + self.inner1 = self.sensor1_x + self.outer1 = self.inner1 + self.width + + sensor1a = pygame.Rect(self.sensor1_x, self.sensor1_y, self.sensor1_x_size, self.sensor1_y_size) + sensor1b = pygame.Rect(self.sensor1_x, self.sensor1_y + self.sensor1_y_size + self.distance, self.sensor1_x_size, self.sensor1_y_size) + pygame.draw.rect(screen, (0, 0, 255), sensor1a) + pygame.draw.rect(screen, (0, 0, 255), sensor1b) + + def testSensor1(self, partCenter, particle): + if particle.size >= abs(self.inner1 - (partCenter - particle.size)): + volume = particle.partialVol(particle.size - (self.inner1 - (partCenter - particle.size))) + return volume + elif particle.size >= abs(self.outer1 - (partCenter - particle.size)): + volume = particle.volume - particle.partialVol(particle.size - (self.outer1 - (partCenter - particle.size))) + return volume + elif ((partCenter - particle.size) >= self.inner1 and (partCenter - particle.size) <= self.outer1): + volume = particle.volume + return volume + else: + return 0 \ No newline at end of file