From b9b0f63d09df60a694c7dbd680eaf647407e6c90 Mon Sep 17 00:00:00 2001 From: Haldrup-tech Date: Thu, 26 Sep 2024 16:13:43 -0400 Subject: [PATCH] Created pygame simulation base --- .../__pycache__/particle.cpython-312.pyc | Bin 0 -> 1156 bytes Research/pygameSim/main.py | 88 ++++++++++++++++++ Research/pygameSim/particle.py | 18 ++++ 3 files changed, 106 insertions(+) create mode 100644 Research/pygameSim/__pycache__/particle.cpython-312.pyc create mode 100644 Research/pygameSim/main.py create mode 100644 Research/pygameSim/particle.py diff --git a/Research/pygameSim/__pycache__/particle.cpython-312.pyc b/Research/pygameSim/__pycache__/particle.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25b743f5b2021b96ec0811b11ada049bfa90632a GIT binary patch literal 1156 zcmZWoO=uHQ5T5->jBR5~(zJr21--0?hKd#oVh;wZ6;iR*Lk=!W_BGkC+obPp3kfOY z5Dz_xr?yaN4<0IB>P=5x1uyPF2PZ_-eNo}BkKoBlYk-+S}k%$xaUX1~Yd1Ay{= z{b+Gh0{G39P}JV0JBFJLFu{~;D1ZzzV9ISUm5*{@QIP7ArXFx5Ukr`{#21Bhuj8@- z1PYP~1=*C^P*C_A1=Um#BXw1a__5~(b*-XJieY5#%ws6{b!!M4(3F~><1UbeU0{T=Y{{UMxNi25Z7@by_61?Y zpv7{wRxcS2nYWy5tyhroTHTN7y0v7vy52~Jbs7(k_}gp}p#`1fNGsQ#?OYzl7^$2b6)CxEBEGE7d@faFB~fUqTfOViw+fTa!#5OFW#Em zl;=T{@|q+lYYH7gLtk|*hxjqmVy>}NB#ieE>C?ElbgHYQ5$_Y>Dj!6aK|m6T^xMXI zV>9O^##&E0gXz{BP2kO$9QlJ{Fka&Z$5V1~4Wx3KOYclHT4WsLZQ|%uc;U`T&knOW z#ZC#w;OF!KkBKBN;zD`OqQ@cYXqi~0vg;3s)*1Gzs(pqz9Yv2ux=;MX>=ItE2?V5{ z%4`qsjBbs-yRkdzCAGcBUh>ZV^5?r>r@l;mTKg9DCi7l$t~J{k%=}O@qBMCNPaKgY zoE%;E2Xx)3nkzQn59#{yieU#gl!u{d4m^_&Ae=>0C@+Qp&X6S$+HfeV%GBYItPFQ! zvN94_b3;uIDj=M$a!=kM@z8PXK@j{Qy@qG}_hc!AKZ+ztzhLmM8ka^60YUiu1H5(f AKmY&$ literal 0 HcmV?d00001 diff --git a/Research/pygameSim/main.py b/Research/pygameSim/main.py new file mode 100644 index 0000000..0c85b3a --- /dev/null +++ b/Research/pygameSim/main.py @@ -0,0 +1,88 @@ +import pygame +import numpy as np +import matplotlib.pyplot as plt +from particle import Particle + +pygame.init() + +SCREEN_WIDTH = 800 +SCREEN_HEIGHT = 600 + + + +screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) + +sensor1 = pygame.Rect(200, 200, 50, 200) + + +silica = Particle(speed = 1, size = 20, perm = 4) + +time = .1 +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_xlabel('Time (s)') +ax.set_ylabel('Volume') +ax.set_title('Volume/time') + + + +run = True +while run: + + + distance = silica.move(time) + if distance > SCREEN_WIDTH + (silica.size * 2): + time =.1 + time_data = [] + volume_data = [] + + screen.fill((0,0,0)) + + pygame.draw.rect(screen, (255,0,0), sensor1) + + pygame.draw.circle(screen, (255, 255, 255), (distance - silica.size, 300), silica.size) + + for event in pygame.event.get(): + 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 + + time_data.append(time) + volume_data.append(volume) + + line.set_xdata(time_data) + line.set_ydata(volume_data) + ax.relim() + ax.autoscale_view() + plt.draw() + plt.pause(0.01) + + pygame.display.update() + + time = time + 1 + + print(volume_data) + + + +pygame.quit() + + diff --git a/Research/pygameSim/particle.py b/Research/pygameSim/particle.py new file mode 100644 index 0000000..7162884 --- /dev/null +++ b/Research/pygameSim/particle.py @@ -0,0 +1,18 @@ +import math + +class Particle: + def __init__(self, speed, size, perm): + self.speed = speed + self.size = size + self.perm = perm + self.volume = (4/3.0) * math.pi * size * size * size + + def move(self, time): + distance = self.speed * time + return distance + + def partialVol(self, height): + partialVol = (1/3) * math.pi * height * height * ((3 * self.size) - height) + return partialVol + +