Exemplo n.º 1
0
def main():
	win=GraphWin('line',400,400)
	setaxis(win)
	n=int(input("Enter the number of vertices"))
	ver=[]
	for i in range(n):
		x,y=map(int,input().split())
		ver+=[[x,y]]
	pixel=polygon(ver,win,"green")
	filled={}
	#print(pixel)
	bound={}
	for i in pixel:
		bound[i]=1
	
	print("Click inside polygon")
	p=win.getMouse()
	stack=[(int(p.getX()),int(p.getY()))]
	while len(stack)!=0:
		i=stack.pop()
		#print(stack)
		if i not in filled and i not in bound:
			win.plot(*i,"grey")
			filled[i]=1
			x,y=i
			stack+=[(x+1,y),(x,y+1),(x-1,y),(x,y-1)]
	input('exit')
Exemplo n.º 2
0
def main():
    win = GraphWin('line', 400, 400)
    setaxis(win)
    n = int(input('no of vertices'))
    ver = []
    ymax = -10000
    ymin = 10000
    for i in range(n):
        x, y = map(int, input().split())
        ver += [[x, y]]
        ymax = max(ymax, y)
        ymin = min(ymin, y)
    print(ver)
    ver += [ver[0]]
    #polygon(ver,win,'black')
    edgeTable = {}
    for i in range(n):
        x1, y1, x2, y2 = *ver[i], *ver[i + 1]
        if y1 > y2:
            x1, y1, x2, y2 = x2, y2, x1, y1
        if y1 == y2:
            continue
        if x1 == x2:
            slope = 0
        else:
            slope = (x2 - x1) / (y2 - y1)
        if y1 in edgeTable:
            edgeTable[y1] += [[x1, x1, y2, slope]]
        else:
            edgeTable[y1] = [[x1, x1, y2, slope]]
    print(edgeTable)
    fill(edgeTable, ymin, ymax, win)
    input('exit')
Exemplo n.º 3
0
def main():
	x,y,r0,r1=map(int,input().split())
	win=GraphWin("ellipse",400,400)
	setaxis(win)
	pixel=ellipse(x,y,r0,r1)
	for i in pixel:
		x,y= i
		win.plot(*i)
	input()
Exemplo n.º 4
0
def main():
    win = GraphWin('line', 400, 400)
    setaxis(win)
    n = int(input('no of vertices'))
    ver = []
    for i in range(n):
        x, y = map(int, input().split())
        ver += [[x, y]]
    print(ver)
    polygon(ver, win, 'green')
    input('exit')
Exemplo n.º 5
0
def main():
    win = GraphWin('line', 400, 400)
    setaxis(win)
    bxmin, bymin = map(int, input("enter the lower vertex").split())
    bxmax, bymax = map(int, input("enter the upper vertex").split())
    x1, y1 = map(int, input("Enter the first vertex").split())
    x2, y2 = map(int, input("Enter the second vertex").split())
    l(x1, y1, x2, y2, win, 'red')
    l(*clip(bxmin, bymin, bxmax, bymax, x1, y1, x2, y2), win, 'blue')
    polygon([(bxmin, bymin), (bxmax, bymin), (bxmax, bymax), (bxmin, bymax)],
            win, 'green')
    input("exit")
def doScale(ver, x, y, sx, sy, win):
    scal = [[sx, 0, 0], [0, sy, 0], [0, 0, 1]]
    #input()
    polygon(ver, win, color_rgb(240, 240, 240))
    setaxis(win)
    for i in range(len(ver)):
        ver[i].append(1)
    result = [[
        int(sum(a * b for a, b in zip(A_row, B_col))) for B_col in zip(*scal)
    ] for A_row in ver]
    #print(result)
    for i in range(len(result)):
        result[i] = result[i][:2]
    #print(result)
    polygon(result, win, 'green')
    return result
Exemplo n.º 7
0
def main():
    win = GraphWin('line', 400, 400)
    setaxis(win)
    n = int(input("Enter thr number of vertices in polygon"))
    poly = []
    for i in range(n):
        poly.append(list(map(int, input().split())))
    print(poly)
    m = int(input("Enter thr number of vertices in polygon_clipper"))
    clipper = []
    for i in range(n):
        clipper.append(list(map(int, input().split())))
    clipped = polyClip(poly, clipper).copy()
    polygon(poly, win, 'yellow')
    polygon(clipper, win, 'red3')
    polygon(clipped, win, 'black')
    input("exit")
def translation(ver, x, y, win):
    #input()
    polygon(ver, win, color_rgb(240, 240, 240))
    setaxis(win)
    #print(ver)
    for i in range(len(ver)):
        ver[i].append(1)
    #print(ver)
    trans = [[1, 0, 0], [0, 1, 0], [-x, -y, 1]]
    result = [[
        int(sum(a * b for a, b in zip(A_row, B_col))) for B_col in zip(*trans)
    ] for A_row in ver]
    #print(result)
    for i in range(len(result)):
        result[i] = result[i][:2]
    #print(result)
    polygon(result, win, 'green')
    return result
def doRotation(ver, x, y, angle, win):
    angle = (math.pi * angle / 180)
    rot = [[math.cos(angle), math.sin(angle), 0],
           [-math.sin(angle), math.cos(angle), 0], [0, 0, 1]]
    #input()
    polygon(ver, win, color_rgb(240, 240, 240))
    setaxis(win)
    for i in range(len(ver)):
        ver[i].append(1)
    result = [[
        int(sum(a * b for a, b in zip(A_row, B_col))) for B_col in zip(*rot)
    ] for A_row in ver]
    #print(result)
    for i in range(len(result)):
        result[i] = result[i][:2]
    #print(result)
    polygon(result, win, 'green')
    return result
def shearY(ver, shy, win):
    shry = [[1, shy, 0], [0, 1, 0], [0, 0, 1]]
    #input()
    polygon(ver, win, color_rgb(240, 240, 240))
    setaxis(win)
    #print(ver)
    for i in range(len(ver)):
        ver[i].append(1)
    #print(ver)
    result = [[
        int(sum(a * b for a, b in zip(A_row, B_col))) for B_col in zip(*shry)
    ] for A_row in ver]
    #print(result)
    for i in range(len(result)):
        result[i] = result[i][:2]
    #print(result)
    polygon(result, win, 'green')
    return result
def reflection(ver, x, y, angle, win):
    ver = translation(ver, x, y, win)
    ver = doRotation(ver, x, y, angle, win)
    ref = [[-1, 0, 0], [0, 1, 0], [0, 0, 1]]
    #input()
    polygon(ver, win, color_rgb(240, 240, 240))
    setaxis(win)
    for i in range(len(ver)):
        ver[i].append(1)
    result = [[
        int(sum(a * b for a, b in zip(A_row, B_col))) for B_col in zip(*ref)
    ] for A_row in ver]
    #print(result)
    for i in range(len(result)):
        result[i] = result[i][:2]
    #print(result)
    polygon(result, win, 'green')
    ver = doRotation(result, x, y, -angle, win)
    ver = translation(ver, -x, -y, win)
    return ver
def main():
    win = GraphWin('line', 400, 400)
    win.setBackground(color_rgb(240, 240, 240))
    setaxis(win)
    n = int(input('no of vertices'))
    ver = []
    for i in range(n):
        x, y = map(int, input().split())
        ver += [[x, y]]
    #print(ver)
    polygon(ver, win, 'green')
    '''print("1:translation 2: rotation 3: scale")
    print("4: reflection 5:shear in X 6: shear in Y")
    while(1):
        flag=int(input("Enter the number"))
        if(flag==1):
            par=list(map(int,input("Enter Point x y").split()))
            ver=translation(ver,*par,win)
        elif flag==2:
            par=list(map(int,input("Enter Point x y and angle").split()))
            ver=rotation(ver,*par,win)
        elif flag==3:
            par=list(map(int,input("Enter Point x y and sx sy").split()))
            ver=scale(ver,*par,win)
        elif(flag==4):
            par=list(map(int,input("Enter Point x y and angle of line from y").split()))
            ver=reflection(ver,*par,win)
        elif(flag==5):
            par=list(map(int,input("Enter shx").split()))
            ver=shearX(ver,*par,win)
        elif(flag==6):
            par=list(map(int,input("Enter shy").split()))
            ver=shearY(ver,*par,win)
        else:
            break'''
    while (1):
        k = win.getKey()
        #print(k)
        if k == "Left":
            ver = translation(ver, 5, 0, win)
        elif k == "Right":
            ver = translation(ver, -5, 0, win)
        elif k == "Up":
            ver = translation(ver, 0, -5, win)
        elif k == "Down":
            ver = translation(ver, 0, 5, win)
        elif k == "r":
            ver = doRotation(ver, 0, 0, 15, win)
        elif k == "R":
            ver = doRotation(ver, 0, 0, -15, win)
        elif k == "s":
            ver = doScale(ver, 0, 0, .5, .5, win)
        elif k == "S":
            ver = doScale(ver, 0, 0, 2, 2, win)
        elif k == "x":
            ver = shearX(ver, 1, win)
        elif k == "X":
            ver = shearX(ver, -1, win)
        elif k == "y":
            ver = shearY(ver, 1, win)
        elif k == "Y":
            ver = shearY(ver, -1, win)
        elif k == "q":
            break
    input("exit")
Exemplo n.º 13
0
def main():
	x1,y1,x2,y2 = map(int,input().split())
	win=GraphWin('line',400,400)
	setaxis(win)
	pixel=bresenham(x1,y1,x2,y2,win,'blue')
	input()