Add an alternate constructor for axis-aligned 2D grids

This commit is contained in:
Jan Petykiewicz 2023-01-04 22:37:26 -08:00
parent 457d1fc2f9
commit a713967911

View File

@ -3,7 +3,7 @@
instances of an object . instances of an object .
""" """
from typing import Union, Dict, Optional, Sequence, Any from typing import Union, Dict, Optional, Sequence, Any, Type
import copy import copy
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
@ -106,6 +106,28 @@ class Grid(LockableImpl, Repetition, metaclass=AutoSlots):
self.b_count = b_count self.b_count = b_count
self.locked = locked self.locked = locked
@classmethod
def aligned(
cls: Type,
x: float,
y: float,
x_count: int,
y_count: int,
) -> 'Grid':
"""
Simple constructor for an axis-aligned 2D grid
Args:
x: X-step
y: Y-step
x_count: count of columns
y_count: count of rows
Returns:
An Grid instance with the requested values
"""
return cls(a_vector=(x, 0), b_vector=(0, y), a_count=x_count, b_count=y_count)
def __copy__(self) -> 'Grid': def __copy__(self) -> 'Grid':
new = Grid(a_vector=self.a_vector.copy(), new = Grid(a_vector=self.a_vector.copy(),
b_vector=copy.copy(self.b_vector), b_vector=copy.copy(self.b_vector),