Exemple #1
0
 def loopMain(self, _points, _xMax, _xMin, _yMax, _yMin):
     firstPoint_ = Point(_xMin, _yMin)
     secondPoint_ = Point(_xMax + _xMax - _xMin, _yMin)
     thirdPoint_ = Point(_xMin, _yMax + _yMax - _yMin)
     superTriangle_ = Triangle(firstPoint_, secondPoint_, thirdPoint_)
     self.triangles.append(superTriangle_)
     for c in _points:
         self.enveloppe.pts.append(c)
         badTriangles_ = self.filterTriangles2(c)
         edges_ = Delaunay.getEdgesFromBadTriangles(badTriangles_)
         for t in badTriangles_:
             self.triangles.remove(t)
         for e in edges_:
             self.tryAddTriangle(e.x, e.y, c)
     badTriangles_ = self.filterTriangles(superTriangle_)
     for b in badTriangles_:
         self.triangles.remove(b)
Exemple #2
0
 def getExtendedEdge(_points):
     xMax_ = _points[0].x
     xMin_ = _points[0].x
     yMax_ = _points[0].y
     yMin_ = _points[0].y
     for c in _points:
         if (c.x < xMin_):
             xMin_ = c.x
         if (c.x > xMax_):
             xMax_ = c.x
         if (c.y < yMin_):
             yMin_ = c.y
         if (c.y > yMax_):
             yMax_ = c.y
     xMin_ -= 1
     yMin_ -= 1
     xMax_ += 1
     yMax_ += 1
     return Arete(Point(xMin_, yMin_), Point(xMax_, yMax_))
Exemple #3
0
 def centreCirconscrit(self):
     bpx_ = self.two.x - self.one.x
     cpx_ = self.three.x - self.one.x
     bpy_ = self.two.y - self.one.y
     cpy_ = self.three.y - self.one.y
     dp_ = 2 * (bpx_ * cpy_ - bpy_ * cpx_)
     x_ = cpy_ * (bpx_ * bpx_ + bpy_ * bpy_)
     x_ -= bpy_ * (cpx_ * cpx_ + cpy_ * cpy_)
     y_ = bpx_ * (cpx_ * cpx_ + cpy_ * cpy_)
     y_ -= cpx_ * (bpx_ * bpx_ + bpy_ * bpy_)
     x_ += self.one.x * dp_
     y_ += self.one.y * dp_
     return Point(Fraction(x_, dp_), Fraction(y_, dp_))
Exemple #4
0
                    if currentSide_ == LinearDirection.LEFT :
                        endPoint_ = self.pts[j]
            cust_ = endPoint_
        return _sortie


    @staticmethod
    def hasToRedef(_cust,_p) :
        return _p.x < _cust.x or (_p.x == _cust.x and _p.y < _cust.y)

    @staticmethod
    def getSide(_a,_b):
        x_ = _a.det(_b)
        if x_ < 0 :
            return LinearDirection.LEFT
        if x_ > 0 :
            return LinearDirection.RIGHT
        return LinearDirection.NONE
    def __repr__(self):
        return str(self.pts)


if __name__ == "__main__":
    polygone=Polygone()
    polygone.pts.append(Point(0, 0))
    polygone.pts.append(Point(0, 1))
    polygone.pts.append(Point(1, 1))
    polygone.pts.append(Point(1, 2))
    polygone.pts.append(Point(2, 2))
    polygone.pts.append(Point(2, 0))
    print(polygone.getConvex())
Exemple #5
0
from delaunay import Delaunay
from cust_points import Point
import matplotlib.pyplot as plt

if __name__ == "__main__":
    liste = []
    liste.append(Point(0, 0))
    liste.append(Point(0, 1))
    liste.append(Point(1, 1))
    liste.append(Point(1, 2))
    liste.append(Point(2, 2))
    liste.append(Point(2, 0))
    delaunay = Delaunay()
    delaunay.appliquer(liste)
    first = []
    second = []
    for p in liste:
        first.append(p.x)
        second.append(p.y)
    firstCenter = []
    secondCenter = []
    for t in delaunay.triangles:
        pt = t.centreCirconscrit()
        firstCenter.append(pt.x)
        secondCenter.append(pt.y)
        trix = [t.one.x, t.two.x, t.three.x, t.one.x]
        triy = [t.one.y, t.two.y, t.three.y, t.one.y]
        plt.plot(trix, triy, color='#004000')
    for (k, v) in delaunay.aretes.items():
        for a in v:
            arx = [a.x.x, a.y.x]
Exemple #6
0
 def dansCercleStrict(self, pt):
     omega = self.centreCirconscrit()
     return Point.distanceCarree(self.one, omega) > Point.distanceCarree(
         pt, omega)
Exemple #7
0
 def centreGravite(self):
     x_ = self.one.x + self.two.x + self.three.x
     y_ = self.one.y + self.two.y + self.three.y
     return Point(Fraction(x_, 3), Fraction(y_, 3))
Exemple #8
0
        l_.append(Arete(self.three, self.one))
        return l_

    def pts(self):
        l_ = []
        l_.append(self.one)
        l_.append(self.two)
        l_.append(self.three)
        return l_

    def __repr__(self):
        return str(self.one) + ";" + str(self.two) + ";" + str(self.three)


if __name__ == "__main__":
    tri = Triangle(Point(Fraction(1, 1), Fraction(1, 1)),
                   Point(Fraction(3, 1), Fraction(2, 1)),
                   Point(Fraction(2, 1), Fraction(4, 1)))
    pt = tri.centreCirconscrit()
    print(pt.x)
    print(pt.y)
    print(tri.dansCercle(Point(Fraction(-1, 1), Fraction(3, 1))))
    print(tri.dansCercle(Point(Fraction(2, 1), Fraction(3, 1))))
    print(tri.dansCercleStrict(Point(Fraction(0, 1), Fraction(3, 1))))
    print(tri.dansCercleStrict(Point(Fraction(2, 1), Fraction(3, 1))))
    print(
        Arete(Point(Fraction(2, 1), Fraction(3, 1)),
              Point(Fraction(2, 1), Fraction(2, 1))).egal(
                  Arete(Point(Fraction(2, 1), Fraction(3, 1)),
                        Point(Fraction(2, 1), Fraction(2, 1)))))  #2
    print(
Exemple #9
0
from cust_polygon import Polygone
from cust_points import Point
from fractions import Fraction
import matplotlib.pyplot as plt

if __name__ == "__main__":
    polygone = Polygone()
    polygone.pts.append(Point(1, 1))
    polygone.pts.append(Point(1, 2))
    polygone.pts.append(Point(2, 2))
    polygone.pts.append(Point(2, 3))
    polygone.pts.append(Point(3, 3))
    polygone.pts.append(Point(3, 1))
    polygone.pts.append(Point(2, Fraction(1, 2)))
    polygone.pts.append(Point(Fraction(7, 2), 2))
    polygone.pts.append(Point(3, 2))
    first = []
    second = []
    for p in polygone.pts:
        first.append(p.x)
        second.append(p.y)
    conv = polygone.getConvex()
    firstConv = []
    secondConv = []
    for p in conv.pts:
        firstConv.append(p.x)
        secondConv.append(p.y)
    firstConv.append(conv.pts[0].x)
    secondConv.append(conv.pts[0].y)

    plt.plot(first, second, 'ro')