Beispiel #1
0
    def testString(self):
        p1 = geo2d.Path([geo2d.P(i,i) for i in range(100)])
        s = p1.tostring()
        self.assertEqual(list(p1), list(geo2d.Path.fromstring(s)))

        p1 = geo2d.Path(geo2d.circle(geo2d.P(15,34), 89))
        s = p1.tostring()
        self.assertEqual(list(p1), list(geo2d.Path.fromstring(s)))
 def setUp(self):
     # Lista dei poligoni da testare
     self.polys = []
     
     # Pentagono in senso ORARIO con primo e ultimo punto ripetuto
     self.polys.append(geo2d.Path([P(0,5), P(0,5), P(5,10), P(10, 5), P(7.5,0), P(2.5, 0), P(0,5), P(0,5)]))
     
     # Pentagono con punta rigirata verso l'interno (concavita') con ultimo punto ripetuto
     self.polys.append(geo2d.Path([P(0,5), P(5,2.5), P(10, 5), P(7.5,0), P(2.5, 0), P(0,5), P(0,5)]))
     
     # Cerchio
     self.polys.append(geo2d.Path(geo2d.circle(P(0,0), 30, maxerr=.0001)))
Beispiel #3
0
 def testHalfCircleOverHalfCircle(self):
     """
     La funzione deve sovrapporre due semicerchi identici, dopo che uno di questi e'
     stato traslato e ruotato
     """
     O1 = P(0,0)
     O2 = P(100,100)
     c1 = Path( circle(O1, 100, minpts= 100, maxerr=100)[0:50] )
     c2 = Path( c1 ) * rot(random.random()*2*math.pi) * xlate(O2)
     mr = pathOverPath(c2, c1, 10)
     self.assertAlmostEquals(mr.sse/mr.n, 0.0)
     A = X(mr.A)
     for p1, p2 in zip(c1, c2): # controllo della distanza punto-path
         self.assertAlmostEquals(c1.project(p2*A).dist, 0, tollerance)
Beispiel #4
0
    def testQuarterCircleOverHalfCircle(self):
        """
        La funzione deve sovrapporre un quarto-di-cerchio a un semicerchio, dopo che
        il quarto-di-cerchio e' stato traslato e ruotato
        """
        O1 = P(0,0)
        O2 = P(100,100)
        c1 = Path( circle(O1, 100, minpts= 100, maxerr=100)[0:50] )
        c2 = Path( c1[0:25] ) * rot(random.random()*2*math.pi) * xlate(O2)
        mr = pathOverPath(c2, c1, 10)

        self.assertAlmostEquals(mr.sse/mr.n, 0.0)
        A = X(mr.A)
        for p2 in c2: # controllo della distanza punto-path
            self.assertAlmostEquals(c1.project(p2*A).dist, 0, tollerance)
Beispiel #5
0
    def testReverseQuarterCircleOverHalfCircle(self):
        """
        La funzione deve sovrapporre un quarto-di-cerchio a un semicerchio, dopo che
        il quarto-di-cerchio e' stato traslato e ruotato.
        L'ordine dei punti del quarto di cerchio viene invertito (senso antiorario).

        Si nota che l'errore di accostamento dei due path sale a causa di una non piu' perfetta
        corrispondenza nella scelta dei punti (dato che i path "cominciano" da due punti differenti)
        """
        O1 = P(0,0)
        O2 = P(100,100)
        c1 = Path( circle(O1, 100, minpts= 100, maxerr=100)[0:50] )
        tmp = c1[25:50]
        tmp.reverse()
        c2 = Path( tmp ) * rot(random.random()*2*math.pi) * xlate(O2)
        # Per passare questo test e' necessario alzare la risoluzione a 1mm
        mr = pathOverPath(c2, c1, 1)

        self.assertAlmostEquals(mr.sse/mr.n, 0.0)
        A = X(mr.A)
        for p2 in c2: # controllo della distanza punto-path
            # Per passare questo test e' necessario alzare la tolleranza
            self.assertAlmostEquals(c1.project(p2*A).dist,0, tollerance)
Beispiel #6
0
 def setUp(self):
     self.linea_chiusa = Path(geo2d.circle(P(0, 0), 100))
     self.linea_aperta = Path([p for p in self.linea_chiusa if p.x <= 0])
     self.assertGeo2dNotSame(self.linea_aperta[0], self.linea_aperta[-1])