import pygame as pg
import geometry as gm
from sys import exit

surface = gm.initGraphics("Triangulation Delaunay")

# setPts = gm.SetPoints("input.txt")
# setPts.draw(surface,(255,255,255))
lst = gm.inputPoints(surface, (255, 255, 255))
setPts = gm.SetPoints(lst)

ch = gm.convexHull(setPts)

gm.grid(surface)
setPts.draw(surface, (255, 255, 255), 1)
ch.draw(surface, (255, 0, 0))
pg.display.update()
surfaceOriginal = surface.copy()
gm.waiting()

chain = gm.Polygon()
if len(ch) <= 2:
    pg.quit()
    exit(0)

chain.insert(gm.Edge(ch[0].org, ch[0].dst))
triangles = []
while len(chain) > 0:
    e = chain.remove(0)

    s = gm.conjugate(e, setPts)
import pygame as pg
import geometry as gm
from sys import exit

surface = gm.initGraphics("Convex hull by Grakham")
pg.mixer.music.load("track.ogg")

# setPts = gm.SetPoints("input.txt")
# setPts.draw(surface,(255,255,255))
lst = gm.inputPoints(surface,(255,255,255))
setPts = gm.SetPoints(lst)
setPts.rearrange(lambda p1,p2: p1.x > p2.x)

surface.fill((0,0,0))
gm.grid(surface)
setPts.draw(surface,(255,255,255),1)
pg.display.update()
gm.waiting()

setPts.sortByPolar()

surface.fill((0,0,0))
gm.grid(surface)
setPts.draw(surface,(255,255,255),1)
pg.display.update()
surfaceOriginal = surface.copy()
gm.waiting()

ch = gm.Polygon()

if len(setPts) < 2:
import pygame as pg
import geometry as gm
from sys import exit

surface = gm.initGraphics("Creating of starlike polygone")

# setPts = gm.SetPoints("input.txt")
# setPts.draw(surface,(255,255,255))
lst = gm.inputPoints(surface,(255,255,255))
setPts = gm.SetPoints(lst)
idx = setPts.minX()

surface.fill((0,0,0))
gm.grid(surface)
setPts.draw(surface,(255,255,255),1)
pg.display.update()
surfaceOriginal = surface.copy()
gm.waiting()

if (len(setPts) < 2):
	pg.quit()
	exit(0)

poly = gm.Polygon()
if (idx != 0):
	poly.insert(gm.Edge(setPts[idx],setPts[0]))
	poly.insert(gm.Edge(setPts[0],setPts[idx]),1)
	startIdx = 1
else:
	poly.insert(gm.Edge(setPts[0],setPts[1]))
	poly.insert(gm.Edge(setPts[1],setPts[0]),1)
import pygame as pg
import geometry as gm
from sys import exit

surface = gm.initGraphics("Triangulation of monotone polygone")

# setPts = gm.SetPoints("input.txt")
# setPts.draw(surface,(255,255,255))
lst = gm.inputPoints(surface,(255,255,255))
setPts = gm.SetPoints(lst)
setPts.rearrange(lambda p1,p2: p1.x>p2.x)

mn = gm.monotone(setPts)

gm.grid(surface)
setPts.draw(surface,(255,255,255),1)
mn.draw(surface,(255,0,0))
pg.display.update()
surfaceOriginal = surface.copy()
gm.waiting()

triangles = []
stack = []
if len(mn) > 1:
	stack.append(setPts[0])
	stack.append(setPts[1])

	for i in range(2,len(setPts)):
		s = setPts[i]

		if (mn.haveEdge(gm.Edge(s,stack[0])) and not mn.haveEdge(gm.Edge(s,stack[len(stack)-1]))):