aboutsummaryrefslogtreecommitdiff
path: root/AutopyExtended/Curve/test.py
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2020-08-22 16:02:17 +0200
committerLeonard Kugis <leonard@kug.is>2020-08-22 16:02:17 +0200
commitf43f909bf20dafb2c10520815282046cffe495f2 (patch)
tree5be52b3a048c0b2755a670de4269460353bc9760 /AutopyExtended/Curve/test.py
parent3b47fad88c8b714c83c1c90cf6726d85688b300f (diff)
Refactoring, Bezier
Refactored module layout. Added missing dependencies to setup. Added time scaling to curves.
Diffstat (limited to 'AutopyExtended/Curve/test.py')
-rw-r--r--AutopyExtended/Curve/test.py55
1 files changed, 0 insertions, 55 deletions
diff --git a/AutopyExtended/Curve/test.py b/AutopyExtended/Curve/test.py
deleted file mode 100644
index ab9ee6c..0000000
--- a/AutopyExtended/Curve/test.py
+++ /dev/null
@@ -1,55 +0,0 @@
-import numpy as np
-from scipy.special import comb
-
-def bernstein_poly(i, n, t):
- """
- The Bernstein polynomial of n, i as a function of t
- """
-
- return comb(n, i) * ( t**(n-i) ) * (1 - t)**i
-
-
-
-def bezier_curve(points, nTimes=1000):
- """
- Given a set of control points, return the
- bezier curve defined by the control points.
- points should be a list of lists, or list of tuples
- such as [ [1,1],
- [2,3],
- [4,5], ..[Xn, Yn] ]
- nTimes is the number of time steps, defaults to 1000
- See http://processingjs.nihongoresources.com/bezierinfo/
- """
-
- nPoints = len(points)
- xPoints = np.array([p[0] for p in points])
- yPoints = np.array([p[1] for p in points])
-
- t = np.linspace(0.0, 1.0, nTimes)
-
- polynomial_array = np.array([ bernstein_poly(i, nPoints-1, t) for i in range(0, nPoints) ])
-
- xvals = np.dot(xPoints, polynomial_array)
- yvals = np.dot(yPoints, polynomial_array)
-
- return xvals, yvals
-
-
-
-if __name__ == "__main__":
- from matplotlib import pyplot as plt
-
- nPoints = 4
- points = np.random.rand(nPoints,2)*200
- xpoints = [p[0] for p in points]
- ypoints = [p[1] for p in points]
-
- xvals, yvals = bezier_curve(points, nTimes=1000)
- plt.plot(xvals, yvals)
- plt.plot(xpoints, ypoints, "ro")
- for nr in range(len(points)):
- plt.text(points[nr][0], points[nr][1], nr)
-
-
- plt.show()