31 lines
737 B
Python
31 lines
737 B
Python
|
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)
|