-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcurve.py
43 lines (31 loc) · 875 Bytes
/
curve.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from dataclasses import dataclass
from parameter import Parameter, Parameterized
from render import ElegantLine
@dataclass
class Curve(Parameterized):
subcurves = {}
algorithm: Parameter(
name="algorithm",
key="alg",
default=1,
)
def __init__(self):
super().__init__(name="")
self.algorithm = self.ALGORITHM
self.render = ElegantLine(linewidth=3, alpha=1)
@classmethod
def __init_subclass__(cls):
cls.subcurves[cls.ALGORITHM] = cls
@classmethod
def any_from_params(cls, params):
alg = int(params.pop("alg", 1))
subcls = cls.subcurves[alg]
return subcls.from_params(params)
def complexity(self):
return 0
def points(self, dims, dt=0.01):
pass
def draw_more(self, ctx):
pass
class ImpossibleCurve(Exception):
...