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 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)