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)
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_))
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_))
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())
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]
def dansCercleStrict(self, pt): omega = self.centreCirconscrit() return Point.distanceCarree(self.one, omega) > Point.distanceCarree( pt, omega)
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))
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(
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')