second and third circle

This commit is contained in:
2024-09-10 21:54:07 +02:00
parent 054384ca85
commit 46daf9ec93
3 changed files with 43 additions and 11 deletions

View File

@@ -1,3 +1,7 @@
import math
from typing import List, Tuple
from PySide6.QtWidgets import QGraphicsItemGroup
from random import randint
@@ -20,16 +24,12 @@ class Pattern(QGraphicsItemGroup):
self.addToGroup(SphereGraphicsItem(center_x, center_y))
# first cercle
self.addToGroup(SphereGraphicsItem(center_x, center_y - self.SPACE_BETWEEN_SPHERE))
self.addToGroup(SphereGraphicsItem(center_x, center_y + self.SPACE_BETWEEN_SPHERE))
self.addToGroup(SphereGraphicsItem(center_x - self.SPACE_BETWEEN_SPHERE, center_y))
self.addToGroup(SphereGraphicsItem(center_x + self.SPACE_BETWEEN_SPHERE, center_y))
sphere_on_circle = 4
points = self.generate_circle_points(center_x, center_y, self.SPACE_BETWEEN_SPHERE, sphere_on_circle)
for x,y in points:
self.addToGroup(SphereGraphicsItem(x, y))
for i in range(sphere_on_circle):
self.addToGroup(ArcGraphicsItem(center_x, center_y, self.SPACE_BETWEEN_SPHERE, (i*360/sphere_on_circle)%360, ((i+1)*360/sphere_on_circle)%360, self))
print(center_x-self.SPACE_BETWEEN_SPHERE+i*self.SPACE_BETWEEN_SPHERE)
self.addToGroup(SphereGraphicsItem(center_x, center_y - self.SPACE_BETWEEN_SPHERE))
line_start_x = int(center_x + self.SPACE_BETWEEN_SPHERE/2)
@@ -40,5 +40,37 @@ class Pattern(QGraphicsItemGroup):
# second cercle
sphere_on_circle = 8
points = self.generate_circle_points(center_x, center_y, self.SPACE_BETWEEN_SPHERE*2, sphere_on_circle)
for x,y in points:
self.addToGroup(SphereGraphicsItem(x, y))
#for i in range(sphere_on_circle):
# self.addToGroup(ArcGraphicsItem(center_x, center_y, self.SPACE_BETWEEN_SPHERE*2, int(i*360/sphere_on_circle/4)%360, int((i+1)*360/sphere_on_circle)%360, self))
# self.addToGroup(ArcGraphicsItem(center_x, center_y, self.SPACE_BETWEEN_SPHERE*2, int(i*360/sphere_on_circle/4)%360, int((i+1)*360/sphere_on_circle)%360, self))
# third cercle
sphere_on_circle = 8
points = self.generate_circle_points(center_x, center_y, self.SPACE_BETWEEN_SPHERE*3, sphere_on_circle)
for x,y in points:
self.addToGroup(SphereGraphicsItem(x, y))
def generate_circle_points(self, center_x: int, center_y: int, radius: int, n_points: int) -> List[Tuple[int, int]]:
"""generate coordinates of points on a circle equally spaced
Args:
center_x (int): center x coordinate
center_y (int): center y coordinate
radius (int): circle radius
n_points (int): number of points on the circle to generate
Returns:
List[Tuple[int, int]]: list of points coordinates, (x,y)
"""
points = []
angle_step = 2 * math.pi / n_points
for i in range(n_points):
theta = i * angle_step
x = int(center_x + radius * math.cos(theta))
y = int(center_y + radius * math.sin(theta))
points.append((x, y))
return points