def rectangle(l): p = Point(np.random.uniform(low=-l/2, high=l/2), np.random.uniform(low=0, high=l/2)) w = np.random.uniform(low=0, high=l/3) h = np.random.uniform(low=0, high=l/6) a = np.random.uniform(low=-np.pi/4, high=np.pi/4) p1 = p.translation(w, h).rotation(a, p) p2 = p.translation(w, -h).rotation(a, p) p3 = p.translation(-w, -h).rotation(a, p) p4 = p.translation(-w, h).rotation(a, p) return Polyline([Line(p1, p2), Line(p2, p3), Line(p3, p4), Line(p4, p1)])
def create_layer_points(self, point_distance, layer_distance, layer_size, layer_depth): layer_points = [] p = Point(layer_depth * layer_distance, float(layer_size - 1) / 2 * point_distance) for j in range(layer_size): layer_points.append(p) p = p.translation(0, -point_distance) return layer_points
def create_arm(angles, lengths): alpha = np.pi/2 A = Point(0, 0) lines = [] for i in range(len(angles)): B = A.translation(lengths[i], 0) alpha += angles[i] B = B.rotation(alpha, A) lines.append(Line(A, B)) A = B return Polyline(lines)