def drawnObject(points,mode='point'): """Return the geometric object resulting from draw2D points""" minor = None if '_' in mode: mode,minor = mode.split('_') closed = minor=='closed' if mode == 'point': return points elif mode == 'polyline': return PolyLine(points,closed=closed) elif mode == 'curve' and points.ncoords() > 1: curl = obj_params.get('curl',None) closed = obj_params.get('closed',None) return BezierSpline(points,curl=curl,closed=closed) elif mode == 'nurbs': degree = obj_params.get('degree',None) if points.ncoords() <= degree: return None closed = obj_params.get('closed',None) return NurbsCurve(points,degree=degree,closed=closed) elif mode == 'circle' and points.ncoords() % 3 == 0: R,C,N = triangleCircumCircle(points.reshape(-1,3,3)) circles = [circle(r=r,c=c,n=n) for r,c,n in zip(R,C,N)] if len(circles) == 1: return circles[0] else: return circles else: return None
def __init__(self,coords): """Create a circular arc. The arc is specified by 3 non-colinear points. """ self.coords = Coords(coords) self.nparts = 1 self.closed = False if self.coords.shape != (3,3): raise ValueError,"Expected 3 points" r,C,n = triangleCircumCircle(self.coords.reshape(-1,3,3)) self.radius,self.center,self.normal = r[0],C[0],n[0] self.angles = vectorPairAngle(Coords([1.,0.,0.]),self.coords-self.center) print("Radius %s, Center %s, Normal %s" % (self.radius,self.center,self.normal)) print("ANGLES=%s" % (self.angles))