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')
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')
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()
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')
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
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")
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()