diff --git a/UI/Objects/nr_objects/Ellipse.py b/UI/Objects/nr_objects/Ellipse.py new file mode 100644 index 0000000..b75659d --- /dev/null +++ b/UI/Objects/nr_objects/Ellipse.py @@ -0,0 +1,19 @@ +import pygame + + +class Ellipse: + def __init__(self, center, a, b, color, scene): + self.center = center + self.a = a + self.b = b + self.color = color + self.scene = scene + + def blit(self): + a_ = self.a * self.scene.pd_ + b_ = self.b * self.scene.pd_ + center_ = self.scene.matrix @ self.center + center_ = [center_[0] - a_, center_[1] - b_] + + pygame.draw.ellipse(self.scene.s, self.color, + pygame.Rect(center_, [a_ * 2, b_ * 2])) diff --git a/UI/Objects/nr_objects/Line.py b/UI/Objects/nr_objects/Line.py index e3e4760..b0b42a8 100644 --- a/UI/Objects/nr_objects/Line.py +++ b/UI/Objects/nr_objects/Line.py @@ -11,4 +11,4 @@ class Line: def blit(self): pygame.draw.line(self.scene.s, self.color, self.scene.matrix @ self.a, self.scene.matrix @ self.b, - int(self.width * self.scene.pd)) + max(1, int(self.width * self.scene.pd))) diff --git a/UI/Scenes/BasicScene.py b/UI/Scenes/BasicScene.py index 9943232..412199b 100644 --- a/UI/Scenes/BasicScene.py +++ b/UI/Scenes/BasicScene.py @@ -3,6 +3,7 @@ from Objects.r_objects import * from numpy import array as a import numpy as np +from UI.Objects.nr_objects.Ellipse import Ellipse from UI.Objects.nr_objects.Circle import Circle from UI.Objects.nr_objects.Line import Line from UI.Objects.r_objects.Rect import Rect @@ -23,3 +24,6 @@ class BasicScene(Scene): c0 = Circle(a([400, 200]), 40, (100, 100, 255), self) self.nr_objects.append(c0) + + e0 = Ellipse(a([150, 360]), 60, 20, (100, 255, 100), self) + self.nr_objects.append(e0) diff --git a/UI/main.py b/UI/main.py index 9a398a2..10e380a 100644 --- a/UI/main.py +++ b/UI/main.py @@ -3,9 +3,19 @@ from numpy import array as a import time -scene = BasicScene(10, [600, 500]) +screen_size = a([200, 500]) -while True: +for i in range(400): + scene = BasicScene(10, screen_size) scene.redraw() + #scene.save(f"Render/{i}.png") + + if i < 150: + screen_size[0] += 3 + elif i < 250: + screen_size[1] += 2 + else: + screen_size -= 4 + time.sleep(0.01)