tregular star polygons and plot_all_to_all work - polygen - generative drawing … | |
git clone git://src.adamsgaard.dk/polygen | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 81f436d4572ead5ff4f86d0e89547527dc20fd5d | |
parent aadea4129d9099b7ae7bb74c8bb8ba32c75b631c | |
Author: Anders Damsgaard <[email protected]> | |
Date: Thu, 13 Mar 2014 20:49:11 +0100 | |
regular star polygons and plot_all_to_all work | |
Diffstat: | |
M polygen.py | 51 +++++++++++++++++++++++++----… | |
1 file changed, 42 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/polygen.py b/polygen.py | |
t@@ -2,15 +2,48 @@ | |
import numpy | |
import matplotlib.pyplot as plt | |
-class polygen: | |
- def __init__(): | |
- points = [] | |
+class polyplot: | |
+ def __init__(self): | |
+ self.points = [] | |
- def add_point(self, x, y): | |
- self.points.append(numpy.array(x, y)) | |
+ def add_point(self, xy_point): | |
+ self.points.append(numpy.asarray(xy_point)) | |
- def plot_all_to_all(self, line_color='k', line_width=2): | |
+ def set_points(self, points): | |
+ self.points = points | |
+ | |
+ def plot_all_to_all(self, line_color='k', line_width=2, | |
+ image_name='all_to_all', image_format='png'): | |
+ self.points = numpy.asarray(self.points) | |
fig = plt.figure() | |
- for point_a in self.points: | |
- for point_b in self.points: | |
- plt.plot(point_a, point_b, line_color + '-', lw=line_width) | |
+ for i in range(self.points.shape[0]): | |
+ for j in range(self.points.shape[0]): | |
+ if (i != j): | |
+ plt.plot([self.points[i,0], self.points[j,0]], | |
+ [self.points[i,1], self.points[j,1]], | |
+ line_color + '-', lw=line_width) | |
+ print(self.points) | |
+ plt.plot(self.points[:,0], self.points[:,1], 'ro') | |
+ plt.axis('equal') | |
+ fig.savefig(image_name + '.' + image_format) | |
+ fig.clf() | |
+ | |
+class regular_star_polygon: | |
+ def __init__(self, n=5): | |
+ | |
+ if (n < 3): | |
+ raise Exception('regular_star_polygon: Error, this function ' + | |
+ 'doesn\'t work with n < 3.') | |
+ | |
+ self.n = n | |
+ self.generate_regular_star_polygon() | |
+ | |
+ def generate_regular_star_polygon(self, radius=1.0): | |
+ self.points = numpy.empty((self.n, 2)) | |
+ | |
+ for i in range(self.n): | |
+ theta = i*(2.0*numpy.pi/self.n) | |
+ x = radius*numpy.cos(theta) | |
+ y = radius*numpy.sin(theta) | |
+ self.points[i,0] = x | |
+ self.points[i,1] = y |