def testBlocJonc(filename, show): # show=True debug(titre="testBlocJonc()") # filename = Path(VALIDATION_DIR,'blocjonc.spl') name = filename.name debug(paragraphe="Construction et dump '%s'"%name) with open(filename,'r') as f : dump = eval(f.read())['dmodel'] pprintSaufCpoints(dump) S = NSplineSimple(**dump) # debug(S) if show : S.plot(numbers=['1c']) filename = Path(VALIDATION_DIR,'blocjonc-compose.spl') Sc = NSplineComposee() # with open(filename,'r') as f : # dump = eval(f.read()) # debug('dump') # pprintSaufCpoints (dump) Sc.open(filename) dump['methode'] = ('ius',3) # Sc = NSplineComposee(**dump) # # for s in Sc.splines : # # s.methode = 'ius',3 # # s._update() # # Sc._update() debug(Sc) # exit() # Sc.plot(numbers=['1c']) debug(paragraphe="Split() et dump de '%s'"%name) # Sc.split([29,38,39,40,41,50,52,54,55,63,66,74,94,105]) # debug(Sc) if show : Sc.plot()#, numbers=['1c']) debug("dump de '%s' apres split()"%name) pprintSaufCpoints(Sc.toDump()) filename = Path(WORK_DIR,'blocjonc-compose-work.spl') Sc.save(filename) name = filename.name debug(paragraphe="Construction NSplineComposee a partir de '%s' (=le dump apres split)"%name) with open(filename,'r') as f : dump = eval(f.read()) debug('>>>yeap, lecture de dump') pprintSaufCpoints(dump) Sc = NSplineComposee(**dump) for i,S in enumerate(Sc.splines) : debug("%d-eme composante de '%s'"%(i,name)) print S if show : S.plot(titre='spline-%d'%i, numbers='c') if show : Sc.plot(numbers=['3c']) Sc.plotCourbure() debug(titre="Fin testBlocJonc()")
def testEchantillonnage(filename, trados, show=True): u"""echantillonnage entre ta et tb. [ta,tb]=[0,1] => echantillonnage complet""" # s = NSplineSimple(points=pointsFromFile(filename)) u"""Extraction intrados et extrados, normalisation""" debug(titre="testEchantillonnage %s-trados : %s" % (trados, filename.name)) points = pointsFromFile(filename) corde, nba = -1.0, np.nan bf = points[0] for k, point in enumerate(points): d = dist2(bf, point) if d > corde: corde, nba = d, k corde = math.sqrt(corde) debug(corde=corde, nba=nba) points *= (1000 / corde) #en mm corde = 1000 if trados == 'e': #Extrados methode = ('cubic', ((2, 0, 0), (1, 0, -corde / 2))) #extrados c0 = points[:1 + nba] elif trados == 'i': #Intrados methode = ('cubic', ((1, 0, -corde / 4), (2, 0, 0))) #intrados c0 = points[nba:] u"""Construction et élagage de la spline d'interpolation du trados""" precision = 1000 # T0 = linspace(0,1,precision) s0 = NSplineSimple(cpoints=c0, precision=precision, methode=methode, mode='courbure') # s0.elaguer(1, replace=True) ne, ta, tb = 30, 0.2, 0.8 s0.echantillonner(nbp=ne, ta=ta, tb=tb, mode='courbure') debug(Te=s0.tech) E = s0.epoints if show: s0.plot(more=[ (E[:, 0], E[:, 1], 'y^', 'echantillon \nn=%d, %.2f=>%.2f' % (ne, ta, tb)), ]) # plt.plot(E[:,0],E[:,1],'y^','echantillon') # plt.show() debug(titre="Fin testEchantillonnage %s-trados : %s" % (trados, filename.name))
def testMethodes(filename, show=True): debug(titre='testMethodes(%s)' % filename.name) k = 0 for methode in ( ('cubic', 'not-a-knot'), ('cubic', 'periodic'), ('cubic', 'natural'), ('cubic', ((1, 0, -5), (1, 0, -5))), ('cubic', ((2, 0, 0), (1, 0, -5))), #extrados ('cubic', ((1, 0, -5), (2, 0, 0))), #intrados ): k += 1 S = NSplineSimple(points=pointsFromFile(filename), methode=methode, mode='courbure', name='SPLINE%d' % (k + 1)) debug(S) if show: S.plot(titre=filename.name + str(methode)) if show: S.plotCourbure() # filename=Path(VALIDATION_DIR,'simple','simple2d2.gnu') for methode, mode in ( # (('ius',1),'linear'), # (('ius',2),'linear'), # (('ius',3),'courbure'), (('ius', 4), 'courbure'), (('ius', 7), 'courbure'), (('us', 1), 'linear'), (('us', 2), 'linear'), (('us', 3), 'courbure'), (('us', 4), 'courbure'), (('us', 7), 'courbure'), ): S = NSplineSimple(points=pointsFromFile(filename), methode=methode, mode=mode) debug(S) if show and methode[1] <= 5: #pour k=7 ca plante S.plot(titre=filename.name + str(methode)) debug(titre='Fin testMethodes(%s)' % filename.name)
def testConstructeurs(filename, show=False): debug(titre='testConstructeurs %s' % filename.name) p = NSplineSimple() debug(paragraphe='1. constructeur vide') debug(p=p) p = NSplineSimple(cpoints=np.zeros((1, 2)), parent=None, methode=('cubic', 'periodic'), mode='rayon', name='SPLINE1') debug(paragraphe='2. constructeur presque vide') print p # for point in p.qcpolygon : # print point # for point in p.qdpolygon : # print point debug(paragraphe='3. p vide => p.cpoints=points de %s' % filename.name) points = pointsFromFile(filename) p.cpoints = points if show: p.plot(titre='cpoints=pointsFromFile()') S0 = NSplineSimple( points=pointsFromFile(filename), methode=('cubic', 'periodic'), # mode='courbure', name=filename.name) debug(S0) if show: S0.plot(titre=filename.name) debug(paragraphe='4. S = NSplineSimple(**dump00) (points:%s)' % filename.name) dump00 = S0.toDump() debug("dump00") pprint(dump00) S = NSplineSimple(**dump00) dump01 = S.toDump() pprint(dump01) debug("dump00!=dump01 : %s" % dictsAreNotEqual(dump00, dump01)) debug(paragraphe='4. S1 = S0.copy() (points:%s)' % filename.name) S = S0.copy() dump02 = S.toDump() debug("dump00!=dump02 : %s" % dictsAreNotEqual(dump00, dump02)) filename = Path(RUNS_DIR, 'spline.npkl') S0.save(filename=filename) S0.open(filename) # debug('S0.toDump()') # pprint(S0.toDump()) debug(S0) debug('S0.toDump()!=dump00', dictsAreNotEqual(S0.toDump(), dump02)) if show: S0.plot(titre='open pkl') S1 = S0.copy() d0, d1 = dump00, S1.toDump() debug('d0!=d1', dictsAreNotEqual(d0, d1)) if show: S1.plot(titre='copy') debug(titre='Fin testConstructeurs %s' % filename.name)
def testSequenceBasique(filename, show=True): """Une séquence basique d'utilisation de spline""" debug(titre='testSequenceBasique %s' % filename.name) debug(show=show) # exit() debug(paragraphe='0. NSplineSimple() ') S = NSplineSimple() debug(S=S) c, d, knots = S.cpoints, S.dpoints, S.knots print 'cpoints =', c, type(c), c.shape print 'dpoints =', d, type(d), d.shape print ' knots =', knots, type(knots), knots.shape debug(titre='differentes methodes %s' % filename.name) for k, methode in enumerate(( ('us', 1), #'linear'), # ('us',2),#'linear'), ('us', 3), #'courbure'), # ('us',4),#'courbure'), # ('us',7),#'courbure'), ('ius', 1), #'courbure'), ('ius', 3), #'courbure'), # ('lsqus',1),#'linear'), # ('lsqus',2),#'linear'), # ('lsqus',3),#'courbure'), # ('lsqus',4),#'courbure'), ('cubic', 'not-a-knot'), ('cubic', 'periodic'), ('cubic', 'natural'), ('cubic', ((1, 0, -5), (1, 0, -5))), ('cubic', ((2, 0, 0), (1, 0, -5))), #extrados ('cubic', ((1, 0, -5), (2, 0, 0))), #intrados # ('ius',7),#'courbure'), )): debug(paragraphe='1. methode-%d=%s (fichier %s)' % (k, str(methode), filename.name)) S = NSplineSimple(cpoints=pointsFromFile(filename), methode=methode, name=str(methode)) debug(S) debug(u' Normal, S.dpoint est calcule', lendpoints=len(S.dpoints)) debug(paragraphe='2. S._update() methode-%d=%s (fichier %s)' % (k, str(methode), filename.name)) S._update() try: debug(S._dpoints) except AttributeError as msg: debug(u' Normal pas de S._dpoints : %s' % str(msg)) debug(u' Normal, S.dpoint est calcule', lendpoints=len(S.dpoints)) debug(S) if show: S.plot(show=True) debug(' Longueurs (c,d)=(%.5g,%.5g) ; nspline=%d' % (S.longueur('c'), S.longueur('d'), S.nbspline)) i, p = len(S) / 2, S.centregravite debug(paragraphe='3. S[%d]=[%.3g, %.3g], methode-%d=%s (fichier %s)' % (i, p[0], p[1], k, str(methode), filename.name)) oldp = S[i].copy() S[i] = p debug(S[i], oldp=oldp) debug(' Longueurs (c,d)=(%.5g,%.5g) ; nspline=%d' % (S.longueur('c'), S.longueur('d'), S.nbspline)) debug(' S(1)=%s' % S(1.0)) #ne donne pas tout a fait cpoints[-1] ac = absCurv(S._cpoints, normalise=True) print ' abscurv=', ac.shape, 'knots=', S.knots.shape, 'cpoints=', S._cpoints.shape print ' norm(S(ac)-S._cpoints)=', norm(S(ac) - S._cpoints) print ' norm(ac-S.knots)', norm(ac - S.knots) if show: S.plot(show=True, titre='%s : modif S[%d]=[%.3g, %.3g]' % (filename.name, i, p[0], p[1])) debug(S[i], oldp=oldp) S[i] = oldp debug(paragraphe='4. echantillonnage methode-%d=%s (fichier %s)' % (k, str(methode), filename.name)) S.nbpe = 120 print 'mode=', S.mode, ', epoints=', S.epoints.shape e0, mode0 = S.epoints, S.mode print 'mode=', S.mode, ', epoints=', e0.shape print 'T = %s' % S.tech.tolist() S.mode = 'cos' #efface tech et epoints e1, mode1 = S.epoints, S.mode print 'mode=', S.mode, ', epoints=', e0.shape print 'T = %s' % S.tech.tolist() #on regarde si ca se recalcule bien apres suppression epoints et tech del S._epoints, S._tech e2, mode2 = S.epoints, S.mode print 'mode=', S.mode, ', epoints=', e2.shape print 'T = %s' % S.tech.tolist() print 'epoints norme(e1-e2)=%.3g' % norm(e1 - e2) S.mode = 'x3' #efface tech et epoints e2, mode2 = S.epoints, S.mode print 'mode=', S.mode, ', epoints=', e2.shape print 'T = %s' % S.tech.tolist() S.mode = 'courbure' #efface tech et epoints mode3 = S.mode try: e3, mode3 = S.epoints, S.mode print 'mode=', S.mode, ', epoints=', e3.shape print 'T = %s' % S.tech.tolist() X3, Y3 = XY(e3) except ValueError as msg: #normal debug('normal', str(msg)) print 'methode %s, mode echantillonnage = %s : %s' % (str( S.methode), str(S.mode), str(msg)) X3, Y3 = zeros((0, )), zeros((0, )) X0, Y0 = XY(e0) X1, Y1 = XY(e1) X2, Y2 = XY(e2) # if show : S.plot(plt,show=True) if show: # plt.plot(X0,Y0,'r.-',label='%s : mode=%s'%(S.name,mode0)) plt.plot(X1, Y1, 'b.-', label='%s : mode=%s' % (S.name, mode1)) # plt.plot(X2,Y2,'k.-',label='%s : mode=%s'%(S.name,mode2)) plt.plot(X3, Y3, 'm.-', label='%s : mode=%s' % (S.name, mode3)) plt.legend() plt.axis('equal') plt.show() debug(titre='Fin testSequenceBasique %s' % filename.name)
def testDivers1(filename, show=True): # show=True debug(titre="testDivers1 : %s" % filename.name) msg = u""" On teste les methodes NSplineSimple.projectionObj(obj) et NSplineSimple.projection(obj). """ debug(msg) cpoints = pointsFromFile(filename)[::-1] #On recale le BA en 0,0 corde, nba = computeCordeAndNBA(cpoints) debug(corde=corde, nba=nba, len_cpoints=len(cpoints)) cpoints = cpoints - cpoints[nba] cpoints = cpoints[0:nba] # cpoints = cpoints[0:nba+1] debug(BA=cpoints[-1], BF=cpoints[0], extrados=cpoints[nba / 2]) # S0 = NSplineSimple(cpoints=cpoints, name=filename.name) # debug(S0) # if show : S0.plot(show=True) ######################################## # dump = {'cpoints': [[0.5279636979103088, 0.07332829385995865], [0.7137287259101868, 0.3275330364704132], [1.268811468596966, 0.3365727279966774], [1.1390328407287598, 0.07332829385995865], [1.2571670716747245, 0.2148051133421408], [1.2206038430660453, -0.0507648238639925], [1.5545598268508911, -0.0048885527066886425]], # # 'methode': ('cubic', 'not-a-knot'), # 'methode': ('ius', 3), # 'name': u'test', # 'nbpe': 30, # 'precision': 1000, # 'mode': 'linear'} dump = { 'classename': 'NSplineSimple', 'cpoints': cpoints, 'methode': ('cubic', 'not-a-knot'), 'mode': 'rayon', 'name': filename.name, 'nbpe': 30, 'precision': 1000, 'role': 'NSplineSimple' } S = NSplineSimple(**dump) # if show : S.plot(plt) # p1, p2, p3 = [0.0,0.25], S.barycentre[0], S.centregravite p1, p2, p3 = [0.0, 0.25], [1.0, -0.1], [1.0, 0.1], debug(p1=p1, p2=p2, p3=p3) (t1, d1, n1, m1), (t2, d2, n2, m2), (t3, d3, n3, m3) = S.projection(p1), S.projection(p2), S.projection(p3) pj1, pj2, pj3 = S(t1), S(t2), S(t3) debug(paragraphe="**** DISTANCE POINT-SPLINE discret=0 ****") print ' message=%-20s' % m1, 'd(S,p1)=%-10.3g' % d1, 't=%-10.3g' % t1, 'nb appels a fct=%d' % n1 print ' message=%-20s' % m2, 'd(S,p2)=%-10.3g' % d2, 't=%-10.3g' % t2, 'nb appels a fct=%d' % n2 print ' message=%-20s' % m3, 'd(S,p3)=%-10.3g' % d3, 't=%-10.3g' % t3, 'nb appels a fct=%d' % n3 more = [([p1[0], pj1[0]], [p1[1], pj1[1]], 'g-o', 'd(S,p1) : %.2g' % sqrt(d1)), ([p2[0], pj2[0]], [p2[1], pj2[1]], 'g-o', 'd(S,p2) : %.2g' % sqrt(d2)), ([p3[0], pj3[0]], [p3[1], pj3[1]], 'g-o', 'd(S,p3) : %.2g' % sqrt(d3))] if show: S.plot(more=more, titre='distance point-spline(continu)', show=True) (t1, d1, n1, m1) = S.projection(p1, discret=100) (t2, d2, n2, m2) = S.projection(p2, discret=100) (t3, d3, n3, m3) = S.projection(p3, discret=100) pj1, pj2, pj3 = S(t1), S(t2), S(t3) debug("paragraphe=**** DISTANCE POINT-SPLINE discret=100 ****") print ' message=%-20s' % m1, 'd(S,p1)=%-10.3g' % d1, 't=%-10.3g' % t1, 'nb appels a fct=%d' % n1 print ' message=%-20s' % m2, 'd(S,p2)=%-10.3g' % d2, 't=%-10.3g' % t2, 'nb appels a fct=%d' % n2 print ' message=%-20s' % m3, 'd(S,p3)=%-10.3g' % d3, 't=%-10.3g' % t3, 'nb appels a fct=%d' % n3 if show: more = [([p1[0], pj1[0]], [p1[1], pj1[1]], 'g-o', 'd(S,p1) : %.2g' % sqrt(d1)), ([p2[0], pj2[0]], [p2[1], pj2[1]], 'g-o', 'd(S,p2) : %.2g' % sqrt(d2)), ([p3[0], pj3[0]], [p3[1], pj3[1]], 'g-o', 'd(S,p3) : %.2g' % sqrt(d3))] S.plot(more=more, titre='distance point-spline (discret)', show=True) T, D, N, _ = S.projectionObj(S.epoints, discret=100) print ' S.projectionObj(S.epoints) : norm(D)=%.3g, max(D)=%.3g' % (sqrt( sum(D)), sqrt(max(D))) # P = asarray([p1,p2,p3]) P = (rand(5, 2) - 0.3) / 10 + S.centregravite # debug(P.tolist()) T, D, N, _ = S.projectionObj(P, discret=1000) S.nbpd = 1000 Pj = S(T) debug(paragraphe='Aleatoire : S.projectionObj(P,discret=%d)' % S.nbpd, T_D_N=zip(T, D, N)) # exit() if show: more = [([p[0], pj[0]], [p[1], pj[1]], 'g-o', 'd(S,p1) : %.2g' % sqrt(d)) for p, pj, d in zip(P, Pj, D)] S.plot(more=more, titre='distance point-spline', show=True) debug(paragraphe=u'Elagage') s1, d, (n0, n1) = S.elaguer(eps=1.0, debog=show) if show: S.plot(titre=u'avant élagage', show=False) s1.plot( titre= u"Après élagage, distance=%.3g ; nb points contrôle : %d => %d" % (d, n0, n1), show=True) debug(titre="Fin testDivers1 : %s" % filename.name) return
def testDivers(filename, show=True): name = filename.name debug(titre="testDivers : %s" % name) msg = u"""Dans cet exemple, on a des points doubles p4=p5=p6 et p8=p9, donc la spline x(t) ne peut pas être construite. Que faire ? - supprimer p[6] <=== Oui c'est la solution adoptée ici - déplacer légèrement le point - faire une spline composée, splittée en 6 """ debug(msg) cpoints = pointsFromFile(filename) S0 = NSplineSimple(cpoints=cpoints, name=filename.name) debug(S0) if show: S0.plot(show=True) ######################################## msg = u"""S est une NSplineSimple. Teste les méthodes : - S.absCurv(T) qui retourne les abscisses curvilignes VRAIES des points S(T) - S.longueur('x') = # longueur vraie(x=r) par intégration numérique # longueur du polyligne S.[cpoints,dpoints,epoints] 'x'=['c','d','e'] - S.projection(p) et affiche le résultat pour 3 points Calcule la distance du point 'p' à la spline 'S' et le point 'h' de la spline le plus proche de 'p'. Retourne également la precision et le nb d'appels à fonction Utilise : "https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize_scalar.html """ dump = { 'classename': 'NSplineSimple', 'cpoints': cpoints, 'methode': ('cubic', 'not-a-knot'), # 'mode': 'segment', # 'methode': ('ius', 1), 'mode': 'rayon', # 'mode': 'cpoints', 'name': filename.name, 'nbpe': 30, 'precision': 1000, 'role': 'NSplineSimple' } dump = { 'cpoints': [[0.5279636979103088, 0.07332829385995865], [0.7137287259101868, 0.3275330364704132], [1.268811468596966, 0.3365727279966774], [1.1390328407287598, 0.07332829385995865], [1.2571670716747245, 0.2148051133421408], [1.2206038430660453, -0.0507648238639925], [1.5545598268508911, -0.0048885527066886425]], # 'methode': ('cubic', 'not-a-knot'), 'methode': ('ius', 3), 'name': u'test', 'nbpe': 30, 'precision': 1000, 'mode': 'linear' } debug(msg) S = NSplineSimple(**dump) if show: S.plot() knots = S.knots acn = S.absCurv(knots) acr = S.absCurv(acn) debug('S.absCurv(None)', acn.tolist()) debug('S.knots', knots.tolist()) l = S.longueur() debug('(acr-acn)*longueur', (acr - acn * l).tolist()) debug('longueur=%.10g' % l) lr = acr[-1] debug('vraie abscurv[-1]=%.10g' % lr) ln = acn[-1] debug('abscurv[-1]=%.10g' % ln) S.nbpd = 100 ld3 = S.longueur('d') debug('S.dlongueur=%g' % ld3 + u"(calculé sur %d points)" % S.precision) S.nbpd = 1000 ld4 = S.longueur('d') debug('S.dlongueur=%g' % ld4 + u"(calculé sur %d points)" % S.precision) S.nbpd = 10000 ld5 = S.longueur('d') debug('S.dlongueur=%g' % ld5 + u"(calculé sur %d points)" % S.precision) le = S.longueur('e') debug('S.elongueur=%g' % le) lc = S.longueur('c') debug('S.clongueur=%g' % lc) if show: diff = [l - lr, l - ln, l - ld3, l - ld4, l - ld5, l - le, l - lc] plt.show() plt.bar(range(len(diff)), diff) plt.xticks(range(len(diff)), 'lr,ln,ld3,ld4,ld5,le,lc'.split(',')) plt.title('differentes longueurs calculees') p1, p2, p3 = [0.2, 0.01], [1.1, 0.2], [-0.1, 0.3] res1, res2, res3 = S.projection(p1), S.projection(p2), S.projection(p3) pj1, pj2, pj3 = S(res1[0]), S(res2[0]), S(res3[0]) # debug(str(res)) debug(paragraphe="**** DISTANCE POINT-SPLINE ****") debug('message="%s"' % res1[3], 'd(S,p1)=%g' % res1[1], 't=%g' % res1[0], 'nb appels a fct=%d' % res1[2]) debug('message="%s"' % res2[3], 'd(S,p2)=%g' % res2[1], 't=%g' % res2[0], 'nb appels a fct=%d' % res2[2]) debug('message="%s"' % res3[3], 'd(S,p3)=%g' % res3[1], 't=%g' % res3[0], 'nb appels a fct=%d' % res3[2]) if show: more = [([p1[0], pj1[0]], [p1[1], pj1[1]], 'g-o', 'd(S,p1) : %.2g' % sqrt(res1[1])), ([p2[0], pj2[0]], [p2[1], pj2[1]], 'g-o', 'd(S,p2) : %.2g' % sqrt(res2[1])), ([p3[0], pj3[0]], [p3[1], pj3[1]], 'g-o', 'd(S,p3) : %.2g' % sqrt(res3[1]))] projections = [(pj1[0], pj1[1], 'y.', ''), (pj2[0], pj2[1], 'y.', ''), (pj3[0], pj3[1], 'y.', '')] more += projections S.plot(more=more, titre='distance point-spline', show=True) # plt.plot(p1[0],p1[1],'go', label='p1 : %g'%res1[1]) # plt.legend() # if show : plt.show() # return debug('ORIGINAL', S=S) debug(rect=S.boundingRect()) # debug('CLONE', clone=S.clone()) debug('COPY', clone=S.copy()) S.hardScale((0.5, 0.5), S.centregravite) debug('APRES HARDSCALE', S=S) debug(rect=S.boundingRect()) S.hardMove((10, 10)) debug('APRES HARDMOVE', S=S) debug(rect=S.boundingRect()) # debug(top='%g'%rect.top(), left='%g'%rect.left(), width='%g'%rect.width(), height='%g'%rect.height(), ) # debug(bottom='%g'%rect.bottom(), top='%g'%rect.top()) if show: S.plot(titre="**dump") debug(titre="Fin testDivers : %s" % filename.name)
def testModifLocales(filename, show=True): debug(titre="testModifLocales : %s" % filename.name) # exit() S = NSplineSimple(points=pointsFromFile(filename), methode=('cubic', ((2, 0, 0), (1, 0, -5))), mode='courbure', name='SPLINE01') mesure = mesures(S) debug('mesures') for key, value in mesure.items(): exec('%s=%s' % (key, value)) exec("print '%20s = %s'%(key,value)") if show: S.plot(titre=filename.name) try: i0 = S.insertPoint((0, 0)) if show and isinstance(i0, int): S.plot(titre='insertPoint((0,0)) en position %d' % i0) except ValueError as msg: debug('normal', msg) try: i1 = S.appendPoint((2, 1.5)) if show and isinstance(i1, int): S.plot(titre='appendPoint((2,1.5)) num=%d' % i1) except ValueError as msg: debug(msg) raise try: i2 = S.insertPoint((-2, 0)) if show: S.plot(titre='insertPoint((2,-2)) en position %d' % i2) except ValueError as msg: debug(msg) raise try: i3 = S.insertPoint((6, 0), len(S) / 2) if show: S.plot(titre='insertPoint((6,0),%d) en position %d' % (len(S) / 2, i3)) except ValueError as msg: debug(msg) raise S.removePoint(i3) S.removePoint(i2) S.removePoint(i1) if show: S.plot(titre='removePoint(%d,%d,%d)' % (i3, i2, i1)) S[1] = (4, -0.1) if show: S.plot(titre='S[1] = (4,-0.1)', show=True) print S[1] S._update() pprint(S.__dict__) dump = S.toDump() dump['methode'] = ('cubic', 'natural') S.load(dump) S.name = 'SPLINE3' if show: S.plot(titre='load(toDump())', show=True) print S debug(titre="Fin testModifLocales : %s" % filename.name)
def testModifGlobales(filename, show=True): debug(titre="testModifGlobales : %s" % filename.name) # numfig = 0 # plt.figure(numfig) S0 = NSplineSimple(points=pointsFromFile(filename), methode=('cubic', ((2, 0, 0), (1, 0, -5))), precision=1000, mode='courbure', name='SPLINE01') if show: S0.plot(titre='NSplineSimple(points=pointsFromFile(filename),...') # numfig += 1 # plt.figure(numfig) S0.cpoints = pointsFromFile(filename) debug(initial=mesures(S0)) if show: S0.plot(titre=filename.name + 'cpoints = pointsFromFile()') # numfig += 1 # plt.figure(numfig) S0.symetriser(0) debug(symetriser_0=mesures(S0)) if show: S0.plot(titre='symetriser(0)') # numfig += 1 # plt.figure(numfig) S0.symetriser(1) debug(symetriser_1=mesures(S0)) if show: S0.plot(titre='symetriser(1)') # numfig += 1 # plt.figure(numfig) S0.hardRotate(30) #en degres par defaut debug(hardRotate_30=mesures(S0)) if show: S0.plot(titre='hardRotate(30)') # numfig += 1 # plt.figure(numfig) S0.hardScale((2, 0.5)) debug(hardScale_2_0point5=mesures(S0)) if show: S0.plot(titre='hardScale((2,0.5))') # numfig += 1 # plt.figure(numfig) S0.translate((2, 3)) debug(translate_2_3=mesures(S0)) if show: S0.plot(titre='translate((2,3))') # if show : plt.show() debug(titre="Fin testModifGlobales : %s" % filename.name)