Testing new scale and sensor desgin

This commit is contained in:
Haldrup-tech 2024-10-24 15:24:07 -04:00
parent 99fb1a3e74
commit a47e6f7fed
6 changed files with 38 additions and 29 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -9,9 +9,10 @@ from slider import Slider
SCREEN_WIDTH = 1352
SCREEN_HEIGHT = 878
scale = 1 * pow(10, -8)
scale = 1 * pow(10, -6)
unit_scale = -3
sensor = Sensor((50*pow(10, -9)) / scale, (200 * pow(10,-9)) / scale, (300 * pow(10, -9)) / scale)
sensor = Sensor( 50 * pow(10, -6), 30 * pow(10, -6), 20 * pow(10, -6))
pygame.init()
pygame.display.set_caption("CytoSim")
@ -32,16 +33,33 @@ while True:
scale = scale / 1.1
elif event.y == -1:
scale = scale * 1.1
if event.type == pygame.KEYDOWN:
print("Button")
if event.key == pygame.K_UP:
scale = scale / 1.1
elif event.key == pygame.K_DOWN:
scale = scale * 1.1
x, y = screen.get_size()
scale_bar_size = abs((x - (x * .1)) - (x - (x * .1)) - (1 * pow(10, unit_scale) / scale))
print(scale_bar_size)
if int(scale_bar_size) < 40:
unit_scale += 1
elif int(scale_bar_size) > 100:
unit_scale -= 1
scale_bar_end_point = (x - (x * .1)) - (1 * pow(10, unit_scale) / scale)
screen.fill((200,100,5))
sensor.generate(x, y, screen)
sensor.display(x, y, screen, scale)
pygame.draw.circle(screen, (150,255,10), (x / 2, y /2), 3 * pow(10, -6) / scale)
pygame.draw.line(screen, (255,255,255), (x - (x * .1), y - (y * .1)), ((x - (x * .1)) - (1 * pow(10, -6) / scale), y - (y * .1)))
pygame.draw.line(screen, (255,255,255), (x - (x * .1), y - (y * .1)), (scale_bar_end_point, y - (y * .1)))
print(scale)
#print((1 *pow(10, -6)) / scale)

View File

@ -8,8 +8,8 @@ class Particle:
self.rest = rest
self.volume = (4/3.0) * math.pi * size * size * size
def move(self, time):
distance = self.speed * time
def move(self, time, scale):
distance = (self.speed * time) / scale
return distance
def partialVol(self, height):

View File

@ -6,33 +6,24 @@ class Sensor:
self.distance = distance
self.space = space
self.volume = width * pow(distance, 2)
self.total_width = (4 * width) + space
self.total_height = 100 * pow(10, -6) - distance
def generate(self, screenWidth, screenHeight, screen):
self.sensor1_x = (screenWidth / 2) - (self.space / 2) - self.width
self.sensor1_y = 0
self.sensor1_x_size = self.width
self.sensor1_y_size = (screenHeight / 2) - (self.distance / 2)
def display(self, screenWidth, screenHeight, screen, scale):
center_x = screenWidth / 2
center_y = screenHeight / 2
scaled_half_x = self.total_width / (2 * scale)
scaled_half_y = self.total_height / (2 * scale)
self.right_limit = center_x + scaled_half_x
self.left_limit = center_x - scaled_half_x
self.inner1 = self.sensor1_x
self.outer1 = self.inner1 + self.width
pygame.draw.line(screen, (255,255,255), (center_x - scaled_half_x, center_y - scaled_half_y), (center_x + scaled_half_x, center_y - scaled_half_y), 7)
pygame.draw.line(screen, (255,255,255), (center_x + scaled_half_x, center_y - scaled_half_y), (center_x + scaled_half_x, center_y + scaled_half_y), 7)
pygame.draw.line(screen, (255,255,255), (center_x + scaled_half_x, center_y + scaled_half_y), (center_x - scaled_half_x, center_y + scaled_half_y), 7)
pygame.draw.line(screen, (255,255,255), (center_x - scaled_half_x, center_y + scaled_half_y), (center_x - scaled_half_x, center_y - scaled_half_y), 7)
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)
self.sensor2_x = (screenWidth / 2) + (self.space / 2)
self.sensor2_y = 0
self.sensor2_x_size = self.width
self.sensor2_y_size = (screenHeight / 2) - (self.distance / 2)
self.inner2 = self.sensor2_x
self.outer2 = self.inner2 + self.width
sensor2a = pygame.Rect(self.sensor2_x, self.sensor2_y, self.sensor2_x_size, self.sensor2_y_size)
sensor2b = pygame.Rect(self.sensor2_x, self.sensor2_y + self.sensor2_y_size + self.distance, self.sensor2_x_size, self.sensor2_y_size)
pygame.draw.rect(screen, (0, 0, 255), sensor2a)
pygame.draw.rect(screen, (0, 0, 255), sensor2b)
return 0
def testSensor1(self, partCenter, particle):
if (particle.size >= abs(self.inner1 - (partCenter - particle.size))) and (particle.size >= abs(self.outer1 - (partCenter - particle.size))):