More whitespace around binary operators

This is very subjective, but my preference is more whitespace.
Generally the only place I didn't put in whitespace was for
multiplication within statements that also contained additions,
without parentheses.
This commit is contained in:
James Godfrey-Kittle 2016-07-28 11:31:47 -07:00
parent 847d12180b
commit 746873233b

View File

@ -28,7 +28,7 @@ def calcCubicPoints(a, b, c, d):
return _1, _2, _3, _4
def calcCubicParameters(pt1, pt2, pt3, pt4):
c = (pt2 -pt1) * 3.0
c = (pt2 - pt1) * 3.0
b = (pt3 - pt2) * 3.0 - c
d = pt1
a = pt4 - d - c - b
@ -37,13 +37,13 @@ def calcCubicParameters(pt1, pt2, pt3, pt4):
def splitCubicIntoN(pt1, pt2, pt3, pt4, n):
a, b, c, d = calcCubicParameters(pt1, pt2, pt3, pt4)
segments = []
dt = 1/n
delta_2 = dt*dt
dt = 1 / n
delta_2 = dt * dt
delta_3 = dt * delta_2
for i in range(n):
t1 = i * dt
t1_2 = t1*t1
t1_3 = t1*t1_2
t1_2 = t1 * t1
t1_3 = t1 * t1_2
# calc new a, b, c and d
a1 = a * delta_3
b1 = (3*a*t1 + b) * delta_2
@ -53,19 +53,19 @@ def splitCubicIntoN(pt1, pt2, pt3, pt4, n):
return segments
def splitCubicIntoTwo(pt1, pt2, pt3, pt4):
mid = (pt1+3*(pt2+pt3)+pt4)*.125
deriv3 = (pt4+pt3-pt2-pt1)*.125
return ((pt1, (pt1+pt2)*.5, mid-deriv3, mid),
(mid, mid+deriv3, (pt3+pt4)*.5, pt4))
mid = (pt1 + 3 * (pt2 + pt3) + pt4) * .125
deriv3 = (pt4 + pt3 - pt2 - pt1) * .125
return ((pt1, (pt1 + pt2) * .5, mid - deriv3, mid),
(mid, mid + deriv3, (pt3 + pt4) * .5, pt4))
def splitCubicIntoThree(pt1, pt2, pt3, pt4, _27=1/27):
mid1 = (pt1*8+pt2*12+pt3*6+pt4)*_27
deriv1 = (pt4+pt3*3-pt1*4)*_27
mid2 = (pt1+pt2*6+pt3*12+pt4*8)*_27
deriv2 = (pt4*4-pt2*3-pt1)*_27
return ((pt1, (pt1*2+pt2)/3, mid1-deriv1, mid1),
(mid1, mid1+deriv1, mid2-deriv2, mid2),
(mid2, mid2+deriv2, (pt3+pt4*2)/3, pt4))
mid1 = (pt1*8 + pt2*12 + pt3*6 + pt4) * _27
deriv1 = (pt4 + pt3*3 - pt1*4) * _27
mid2 = (pt1 + pt2*6 + pt3*12 + pt4*8) * _27
deriv2 = (pt4*4 - pt2*3 - pt1) * _27
return ((pt1, (pt1*2 + pt2) / 3, mid1 - deriv1, mid1),
(mid1, mid1 + deriv1, mid2 - deriv2, mid2),
(mid2, mid2 + deriv2, (pt3 + pt4*2) / 3, pt4))
class Cu2QuError(Exception):
@ -81,16 +81,16 @@ class ApproxNotFoundError(Cu2QuError):
def dot(v1, v2):
"""Return the dot product of two vectors."""
return (v1*v2.conjugate()).real
return (v1 * v2.conjugate()).real
def cubic_approx_control(p, t):
"""Approximate a cubic bezier curve with a quadratic one.
Returns the candidate control point."""
p1 = p[0]+(p[1]-p[0])*1.5
p2 = p[3]+(p[2]-p[3])*1.5
return p1+(p2-p1)*t
p1 = p[0] + (p[1] - p[0]) * 1.5
p2 = p[3] + (p[2] - p[3]) * 1.5
return p1 + (p2 - p1) * t
def calc_intersect(a, b, c, d):
@ -106,7 +106,7 @@ def calc_intersect(a, b, c, d):
return c + cd * h
def _cubic_farthest_fit(pt1,pt2,pt3,pt4,tolerance):
def _cubic_farthest_fit(pt1, pt2, pt3, pt4, tolerance):
"""Returns True if the cubic Bezier p entirely lies within a distance
tolerance of origin, False otherwise."""
@ -114,14 +114,14 @@ def _cubic_farthest_fit(pt1,pt2,pt3,pt4,tolerance):
return True
# Split.
mid = (pt1+3*(pt2+pt3)+pt4)*.125
mid = (pt1 + 3 * (pt2 + pt3) + pt4) * .125
if abs(mid) > tolerance:
return False
deriv3 = (pt4+pt3-pt2-pt1)*.125
return (_cubic_farthest_fit(pt1, (pt1+pt2)*.5, mid-deriv3, mid,tolerance) and
_cubic_farthest_fit(mid, mid+deriv3, (pt3+pt4)*.5, pt4,tolerance))
deriv3 = (pt4 + pt3 - pt2 - pt1) * .125
return (_cubic_farthest_fit(pt1, (pt1 + pt2) * .5, mid - deriv3, mid, tolerance) and
_cubic_farthest_fit(mid, mid + deriv3, (pt3 + pt4) * .5, pt4, tolerance))
def cubic_farthest_fit(pt1,pt2,pt3,pt4,tolerance):
def cubic_farthest_fit(pt1, pt2, pt3, pt4, tolerance):
"""Returns True if the cubic Bezier p entirely lies within a distance
tolerance of origin, False otherwise."""
@ -132,12 +132,12 @@ def cubic_farthest_fit(pt1,pt2,pt3,pt4,tolerance):
return True
# Split.
mid = (pt1+3*(pt2+pt3)+pt4)*.125
mid = (pt1 + 3 * (pt2 + pt3) + pt4) * .125
if abs(mid) > tolerance:
return False
deriv3 = (pt4+pt3-pt2-pt1)*.125
return (_cubic_farthest_fit(pt1, (pt1+pt2)*.5, mid-deriv3, mid,tolerance) and
_cubic_farthest_fit(mid, mid+deriv3, (pt3+pt4)*.5, pt4,tolerance))
deriv3 = (pt4 + pt3 - pt2 - pt1) * .125
return (_cubic_farthest_fit(pt1, (pt1 + pt2) * .5, mid - deriv3, mid, tolerance) and
_cubic_farthest_fit(mid, mid + deriv3, (pt3 + pt4) * .5, pt4, tolerance))
def cubic_approx_spline(p, n, tolerance):
@ -153,11 +153,11 @@ def cubic_approx_spline(p, n, tolerance):
return None
p0 = p[0]
p3 = p[3]
p1 = p0+(qp1-p0)*(2/3)
p2 = p3+(qp1-p3)*(2/3)
p1 = p0 + (qp1 - p0) * (2/3)
p2 = p3 + (qp1 - p3) * (2/3)
if not cubic_farthest_fit(0,
p1-p[1],
p2-p[2],
p1 - p[1],
p2 - p[2],
0, tolerance):
return None
return p0, qp1, p3
@ -173,18 +173,18 @@ def cubic_approx_spline(p, n, tolerance):
spline.append(cubic_approx_control(segments[i], i / (n - 1)))
spline.append(p[3])
for i in range(1,n+1):
for i in range(1, n + 1):
if i == 1:
p0,p1,p2 = (spline[0],spline[1],(spline[1]+spline[2])*.5)
p0, p1, p2 = (spline[0], spline[1], (spline[1] + spline[2]) * .5)
elif i == n:
p0,p1,p2 = (spline[-3]+spline[-2])*.5,spline[-2],spline[-1]
p0, p1, p2 = (spline[-3] + spline[-2]) * .5, spline[-2], spline[-1]
else:
p0,p1,p2 = (spline[i-1]+spline[i])*.5, spline[i], (spline[i]+spline[i+1])*.5
p0, p1, p2 = (spline[i - 1] + spline[i]) * .5, spline[i], (spline[i] + spline[i + 1]) * .5
pt1, pt2, pt3, pt4 = segments[i-1]
pt1, pt2, pt3, pt4 = segments[i - 1]
if not cubic_farthest_fit(p0 - pt1,
p0+(p1-p0)*(2/3) - pt2,
p2+(p1-p2)*(2/3) - pt3,
p0 + (p1 - p0) * (2/3) - pt2,
p2 + (p1 - p2) * (2/3) - pt3,
p2 - pt4,
tolerance):
return None
@ -208,7 +208,7 @@ def curve_to_quadratic(p, max_err):
else:
# no break: approximation not found
raise ApproxNotFoundError(p)
return [(s.real,s.imag) for s in spline]
return [(s.real, s.imag) for s in spline]
def curves_to_quadratic(curves, max_errors):
@ -224,7 +224,7 @@ def curves_to_quadratic(curves, max_errors):
splines = [None] * num_curves
for n in range(1, MAX_N + 1):
splines = [cubic_approx_spline(c, n, e) for c,e in zip(curves,max_errors)]
splines = [cubic_approx_spline(c, n, e) for c, e in zip(curves, max_errors)]
if all(splines):
break
else:
@ -232,4 +232,4 @@ def curves_to_quadratic(curves, max_errors):
for c, s in zip(curves, splines):
if s is None:
raise ApproxNotFoundError(c)
return [[(s.real,s.imag) for s in spline] for spline in splines]
return [[(s.real, s.imag) for s in spline] for spline in splines]