From 7540609fc128d7a1ac118498b059410cbcf25b5e Mon Sep 17 00:00:00 2001 From: Cameron Neville Date: Sun, 25 Feb 2018 21:07:56 -0500 Subject: [PATCH] first commit --- bezier.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 bezier.py diff --git a/bezier.py b/bezier.py new file mode 100644 index 0000000..260f590 --- /dev/null +++ b/bezier.py @@ -0,0 +1,50 @@ +class Bezier: + def __init__(self, *args, **kwargs): + if len(args) == 1: + inp = list(args) + self.x = [i[0] for i in inp] + self.y = [i[1] for i in inp] + if len(args) == 2: + self.x = args[0] + self.y = args[1] + else: + #TODO find proper exception + raise RuntimeError('') + if 'step' in kwargs: + self.step = kwargs[step] + else: + self.step = 1e-3 + + def __getitem__(self, t): + def stepper(start, stop, step): + t = start + c = lambda x,y: x>y if stop > start else lambda x,y: y>x + while c(t, stop): + yield t + t += step + + if isinstance(t, slice): + start = t.start + step = t.step + stop = t.stop + if start is None: + if step is None or step == 0: + step = self.step + if step > 0: + start = 0 + else: + start = 1 + if stop is None: + if step is None or step == 0: + step = self.step + if step > 0: + stop = 1 + else: + stop = 0 + if step is None or step == 0: + step = abs(self.step) if stop > step else -abs(step) + start = min(start, 1) + start = max(start, 0) + stop = min(stop, 1) + stop = max(stop, 0) + \ No newline at end of file