train-journey-visuals/path.py

31 lines
737 B
Python
Raw Normal View History

2024-04-15 19:18:52 +00:00
from vec import Vec2
class Path:
def __init__(self, points: list[Vec2], extra_data: list):
self.points: list[Vec2] = points
self.extra_data = extra_data
self.vecs: list[Vec2] = []
self._init_vecs()
def _init_vecs(self) -> None:
for i in range(1, len(self.points) - 1):
pt1 = self.points[i-1]
pt2 = self.points[i]
pt3 = self.points[i+1]
d1 = pt1 - pt2
d2 = pt3 - pt2
l1 = d1.mag
l2 = d2.mag
d1 = d1.normalized()
d2 = d1.normalized()
d = d1 + d2
d = d.normalized()
if d2.cross(d) < 0:
d = -d
self.vecs.append(d)