Files
fmatray-ComfyUI_BattlemapGrid/point.py
T

39 lines
1.1 KiB
Python

from dataclasses import dataclass
import math
@dataclass
class Point:
x: int
y: int
def __add__(self, value):
if isinstance(value, (int, float)):
return Point(self.x + value, self.y + value)
elif isinstance(value, (tuple, list)):
return Point(self.x + value[0], self.y + value[1])
return Point(self.x + value.x, self.y + value.y)
def __sub__(self, value):
if isinstance(value, (int, float)):
return Point(self.x - value, self.y - value)
elif isinstance(value, (tuple, list)):
return Point(self.x - value[0], self.y - value[1])
return Point(self.x - value.x, self.y - value.y)
def __iter__(self):
yield self.x
yield self.y
def coord(self):
return (self.x, self.y)
def add_polar(self, length, angle):
return self + (
math.ceil(length * math.cos(angle * math.pi / 180)),
-math.ceil(length * math.sin(angle * math.pi / 180)))
def angle_between(self, target):
return math.degrees(math.atan2(self.y - target.y, target.x - self.x))