run ruff in CI
All checks were successful
CI/CD / build (push) Successful in 9m20s

This commit is contained in:
2024-11-28 20:23:54 +01:00
parent f5308f06ab
commit 36a31f1a06
10 changed files with 164 additions and 90 deletions

View File

@@ -3,17 +3,16 @@ import math
from typing import List, Tuple
from PySide6.QtWidgets import QGraphicsItemGroup
from random import randint
from grid.ui.items import SphereGraphicsItem, ArcGraphicsItem, LineGraphicsItem
class Pattern(QGraphicsItemGroup):
"""Common pattern on the sphere grid
"""
"""Common pattern on the sphere grid"""
PATTERN_WIDTH = 250
SPACE_BETWEEN_SPHERE = 60
def __init__(self, top_left_corner_x: int, top_left_corner_y: int) -> None:
super().__init__()
# center coordinates of the pattern
@@ -26,35 +25,66 @@ class Pattern(QGraphicsItemGroup):
# first cercle
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:
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))
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,
)
)
line_start_x = int(center_x + self.SPACE_BETWEEN_SPHERE/2)
line_start_y = int(center_y + self.SPACE_BETWEEN_SPHERE/2)
line_end_x = int(center_x + self.SPACE_BETWEEN_SPHERE/2)
line_end_y = int(center_y + self.SPACE_BETWEEN_SPHERE*1.5)
self.addToGroup(LineGraphicsItem(line_start_x, line_start_y, line_end_x, line_end_y, self))
line_start_x = int(center_x + self.SPACE_BETWEEN_SPHERE / 2)
line_start_y = int(center_y + self.SPACE_BETWEEN_SPHERE / 2)
line_end_x = int(center_x + self.SPACE_BETWEEN_SPHERE / 2)
line_end_y = int(center_y + self.SPACE_BETWEEN_SPHERE * 1.5)
self.addToGroup(
LineGraphicsItem(line_start_x, line_start_y, line_end_x, line_end_y, self)
)
# 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:
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, 0, 90, 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,
)
)
self.addToGroup(
ArcGraphicsItem(
center_x, center_y, self.SPACE_BETWEEN_SPHERE * 2, 0, 90, 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:
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]]:
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:
@@ -74,5 +104,5 @@ class Pattern(QGraphicsItemGroup):
x = int(center_x + radius * math.cos(theta))
y = int(center_y + radius * math.sin(theta))
points.append((x, y))
return points