Skip to content

Instantly share code, notes, and snippets.

@PatrickKalkman
Created June 12, 2021 20:20
Show Gist options
  • Save PatrickKalkman/f0dbea5605093fdba9bcc33210ad598e to your computer and use it in GitHub Desktop.
Save PatrickKalkman/f0dbea5605093fdba9bcc33210ad598e to your computer and use it in GitHub Desktop.
Calculating the points of the bezier curve
class PathPointCalculator():
@staticmethod
def calculate_path_point(control_point_quartet: ControlPointQuartet,
time_to_calculate: float):
time: float = time_to_calculate - int(time_to_calculate)
cx: float = 3.0 * (control_point_quartet.get_point(1).x -
control_point_quartet.get_point(0).x)
cy: float = 3.0 * (control_point_quartet.get_point(1).y -
control_point_quartet.get_point(0).y)
bx: float = 3.0 * (control_point_quartet.get_point(2).x -
control_point_quartet.get_point(1).x) - cx
by: float = 3.0 * (control_point_quartet.get_point(2).y -
control_point_quartet.get_point(1).y) - cy
ax: float = control_point_quartet.get_point(
3).x - control_point_quartet.get_point(0).x - cx - bx
ay: float = control_point_quartet.get_point(
3).y - control_point_quartet.get_point(0).y - cy - by
cube: float = time * time * time
square: float = time * time
resx: float = (ax * cube) + (bx * square) + \
(cx * time) + control_point_quartet.get_point(0).x
resy: float = (ay * cube) + (by * square) + \
(cy * time) + control_point_quartet.get_point(0).y
return PathPoint(resx, resy)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment