[symfont] Fixup for 1fe8d9f0d149d571626dd3f9121953fd71ebcc2c

This commit is contained in:
Behdad Esfahbod 2017-02-20 17:43:38 -06:00
parent 621759b3a8
commit ba4d63ea1c

View File

@ -14,7 +14,9 @@ n = 3 # Max Bezier degree; 3 for cubic, 2 for quadratic
t, x, y = sp.symbols('t x y', real=True) t, x, y = sp.symbols('t x y', real=True)
c = sp.symbols('c', real=False) # Complex representation instead of x/y c = sp.symbols('c', real=False) # Complex representation instead of x/y
P = tuple(zip(*(sp.symbols('P:%d[%s]'%(n+1,w), real=True) for w in '01'))) X = tuple(sp.symbols('x:%d'%(n+1), real=True))
Y = tuple(sp.symbols('y:%d'%(n+1), real=True))
P = tuple(zip(*(sp.symbols('p:%d[%s]'%(n+1,w), real=True) for w in '01')))
C = tuple(sp.symbols('c:%d'%(n+1), real=False)) C = tuple(sp.symbols('c:%d'%(n+1), real=False))
# Cubic Bernstein basis functions # Cubic Bernstein basis functions
@ -98,7 +100,9 @@ class %s(BasePen):
x2,y2 = p2 x2,y2 = p2
x3,y3 = p3 x3,y3 = p3
''', file=file) ''', file=file)
defs, exprs = sp.cse([green(f, BezierCurve[n]) for name,f in funcs], subs = {P[i][j]: [X, Y][j][i] for i in range(n+1) for j in range(2)}
greens = [green(f, BezierCurve[n]).subs(subs) for name,f in funcs]
defs, exprs = sp.cse(greens,
optimizations='basic', optimizations='basic',
symbols=(sp.Symbol('r%d'%i) for i in count())) symbols=(sp.Symbol('r%d'%i) for i in count()))
for name,value in defs: for name,value in defs:
@ -123,7 +127,7 @@ class BezierFuncs(dict):
self._bezfuncs = {} self._bezfuncs = {}
def __missing__(self, i): def __missing__(self, i):
args = ['P%d'%d for d in range(i+1)] args = ['p%d'%d for d in range(i+1)]
return sp.lambdify(args, green(self._symfunc, BezierCurve[i])) return sp.lambdify(args, green(self._symfunc, BezierCurve[i]))
class GreenPen(BasePen): class GreenPen(BasePen):