Ejemplo n.º 1
0
def pie(t,n,lenth):

    r=lenth/math.sin(math.pi/n)/2
    print r
    for i in range(n):
        rectangle(bob,r,360/n)
        bob.lt(360/n)
    bob.rt((180-360/n)/2)
    pg.polygon(t,n,lenth)
Ejemplo n.º 2
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")
Ejemplo n.º 3
0
def draw(ver, win):
    ver2d = []
    for i in ver:
        ver2d.append((i[0] - int(i[2] * (math.cos(math.pi / 4))),
                      i[1] - int(i[2] * (math.sin(math.pi / 4)))))
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    polygon(ver2d[:4], win, color_rgb(r, g, b))
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    polygon(ver2d[4:], win, color_rgb(r, g, b))
    for i in range(4):
        l(*ver2d[i], *ver2d[i + 4], win, "black")
Ejemplo n.º 4
0
    def click_polygon(self):
        self.check_click()
        print('click polygon')
        self.do_polygon += 1
        if (self.do_polygon == 1):
            self.click_vec = []
        if (self.do_polygon == 2):

            poly_id = self.graphic_id
            max_id = 0
            for i in self.graphics:
                max_id = max(max_id, i.graphic_id)
            self.graphic_id = max_id + 1
            algorithm = 'DDA'
            print(self.click_vec, self.R, self.G, self.B)
            new_poly = polygon.polygon(self.canvas_image, poly_id,
                                       self.canvas_width, self.canvas_height,
                                       self.R, self.G, self.B)
            xy_vec = []
            for i in range(len(self.click_vec)):
                xy_vec.append(self.click_vec[i][0])
                xy_vec.append(self.click_vec[i][1])
            new_poly.draw_poly(xy_vec, algorithm)
            self.do_polygon = 0
            self.graphics.append(new_poly)
            self.refresh()
            self.click_vec = []
            self.text2.setText('绘制多边形完毕,点击的所有点为\n' + self.last_click_info)
            return
        self.text2.setText('开始绘制多边形')
Ejemplo n.º 5
0
    def __init__(self ,input):
        

        f = open(input,"r")
        lines = f.readlines()
        
        temp = lines[0].split(',')
        self.M = int(temp[0])
        self.N = int(temp[1])

        temp =lines[1].split(',')
        
        self.Start = point(float(temp[0]),float(temp[1]))
        self.Goal = point(float(temp[2]),float(temp[3]))
        
        self.polygons = []
        self.pointsMap = []
        self.pointsMap.append(self.Start)
        self.pointsMap.append(self.Goal)
        self.wait_point = []

        n = int(lines[2])
        
        for i in range(n):
            p = polygon(lines[i+3])
            self.polygons.append(p)
            self.pointsMap = self.pointsMap + p.getPoints()
        if len(lines) > n+3:
            self.num_wait_point = int(lines[n+3])
            for i in range(self.num_wait_point):
                token_split = lines[n+3+i+1].split(',')
                tmp = point(float(token_split[0]),float(token_split[1]))
                self.pointsMap.append(tmp)
                self.wait_point.append(tmp)
        self.screen = pygame.display.set_mode(self.getSize())
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
Ejemplo n.º 7
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')
Ejemplo n.º 8
0
 def draw_poly(self,res_cmd):
     poly_id=int(res_cmd[0])
     n=int(res_cmd[1])
     algorithm=res_cmd[2]
     xy_vec=res_cmd[3:]
     new_poly= polygon.polygon(self.canvas_image,poly_id,self.canvas_width,self.canvas_height,self.R,self.G,self.B)
     new_poly.draw_poly(xy_vec,algorithm)
     self.graphics.append(new_poly)
Ejemplo n.º 9
0
	def test_area(self):
		area_polys= [[(0,0),(3,0),(3,4),(0,0)],
						[(0,0),(3,4),(3,6),(-1,9),(-1,0),(0,0)],
						[(0,0),(1,0),(1,1),(3,1),(3,0),(5,0),(5,5),(0,5),(0,0)]]
		area_values = [6,24,23]
		for na, poly in enumerate(area_polys):
				test_poly = polygon(poly)
				self.assertEqual(area_values[na],test_poly.area())
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 setVertices(self, verts):
		self.clear()
		self.vertices = verts
		if self.vertices[0] == self.vertices[len(self.vertices)-1]:
			self.polygonFinished = 1
			self.poly = polygon.polygon(self.vertices)
			self.poly.getBeams(self.beamLines)
			self.poly.getH(self.hLines)
		self.viewport().update()
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
Ejemplo n.º 13
0
	def test_perimeter(self):		
		perim_polys = [[(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)],
							[(0,0),(2,0),(5,4),(2,8),(-1,4),(0,4),(0,0)],
							[(0,0),(-4,-3),(-1,1),(0,0)]]
		perim_values = [4,22,10+np.sqrt(2)]

		for ni, poly in enumerate(perim_polys):
			test_poly = polygon(poly)
			self.assertEqual(perim_values[ni],test_poly.perimeter())
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 __init__(self, pCoord=QPointF(), eCoord=QPointF(), p=polygon.polygon(vertices), b=[], h=[]):
		self.pursuerCoord = pCoord
		self.evaderCoord = eCoord
		self.poly = p
		self.beams = b
		self.hCuts = h
		self.initiateBeamGraph()
		self.initiateHGraph()
		self.setCriticalBeam()
Ejemplo n.º 16
0
    def turnCircleIntoPoly(self, radius, center, numSides):
        xOffset, yOffset = center

        pts = list()
        for i in range(0, numSides):
            xPt = (np.sin(i / numSides * 2 * np.pi) * radius) + xOffset
            yPt = (np.cos(i / numSides * 2 * np.pi) * radius) + yOffset
            pts.append((xPt, yPt))

        return polygon.polygon(pts)
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
Ejemplo n.º 18
0
def main():
    
    # specify test case vertex points
    pointChain_1 = [[0,0],[1,0],[1,1],[0,1],[0,0]]
    pointChain_2 = [[-10.2,-6],[0,0],[1,-3],[1,-7],[0,-4],[-10.2,-6]]
    pointChain_3 = [[13.5,41.5],[42.5,56.5],[39.5,69.5],[42.5,84.5],[13.5,100],[6.0,70.5],[13.5,41.5]]
    
    # generate shape according to chain of points, display perimeter and area
    shape = plg.polygon(pointChain_1)
    print 'Polygon 1 perimeter:'
    print shape.getPerimeter()
    print
    
    shape = plg.polygon(pointChain_2)
    print 'Polygon 2 perimeter:'
    print shape.getPerimeter()
    print
    
    shape = plg.polygon(pointChain_3)
    print 'Polygon 3 perimeter:'
    print shape.getPerimeter()
    print
Ejemplo n.º 19
0
def main():

    # specify test case vertex points
    pointChain_1 = [[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]
    pointChain_2 = [[-10.2, -6], [0, 0], [1, -3], [1, -7], [0, -4],
                    [-10.2, -6]]
    pointChain_3 = [[13.5, 41.5], [42.5, 56.5], [39.5, 69.5], [42.5, 84.5],
                    [13.5, 100], [6.0, 70.5], [13.5, 41.5]]

    # generate shape according to chain of points, display perimeter and area
    shape = plg.polygon(pointChain_1)
    print 'Polygon 1 perimeter:'
    print shape.getPerimeter()
    print

    shape = plg.polygon(pointChain_2)
    print 'Polygon 2 perimeter:'
    print shape.getPerimeter()
    print

    shape = plg.polygon(pointChain_3)
    print 'Polygon 3 perimeter:'
    print shape.getPerimeter()
    print
	def clear(self):
		self.clickPos = QPointF()
		self.movePos = QPointF()
		self.clickEvent = 0
		self.moveEvent = 0
		self.initiated = 0
		self.polygonFinished = 0
		self.evaderSet = 0
		self.pursuerSet = 0
		self.evaderPos = QPointF()
		self.pursuerPos = QPointF()
		self.vertices=[]
		self.beamLines=[]
		self.hLines=[]
		self.poly = polygon.polygon(self.vertices)
		self.criticalBeam = QLineF()
		self.viewport().update()
	def startPursuitStrategy(self, pursuerCoord, evaderCoord, p, beams, h):
		vertices = []
		poly = polygon.polygon(vertices)
		pCoord = QPointF()
		eCoord = QPointF()
		pCoord = pursuerCoord/self.PIXELS_PER_UNIT_DISTANCE
		eCoord = evaderCoord/self.PIXELS_PER_UNIT_DISTANCE
		bLines = []
		hLines = []
		for vertex in p:
			vertices.append(QPointF(vertex.x()/self.PIXELS_PER_UNIT_DISTANCE, vertex.y()/self.PIXELS_PER_UNIT_DISTANCE))
			poly.append(QPointF(vertex.x()/self.PIXELS_PER_UNIT_DISTANCE, vertex.y()/self.PIXELS_PER_UNIT_DISTANCE))
		for beam in beams:
			bLines.append(QLineF(beam.p1().x()/self.PIXELS_PER_UNIT_DISTANCE, beam.p1().y()/self.PIXELS_PER_UNIT_DISTANCE, beam.p2().x()/self.PIXELS_PER_UNIT_DISTANCE, beam.p2().y()/self.PIXELS_PER_UNIT_DISTANCE))
		for cut in h:
			hLines.append(QLineF(cut.p1().x()/self.PIXELS_PER_UNIT_DISTANCE, cut.p1().y()/self.PIXELS_PER_UNIT_DISTANCE, cut.p2().x()/self.PIXELS_PER_UNIT_DISTANCE, cut.p2().y()/self.PIXELS_PER_UNIT_DISTANCE))
		
		self.strategy = pursuitStrategy.pursuitStrategy(pCoord, eCoord, poly, bLines, hLines)
Ejemplo n.º 22
0
def main():
    
    # specify test case vertex points - should be valid
    pointChain_1 = [[0,0],[1,0],[1,1],[0,1],[0,0]]
    pointChain_2 = [[-10.2,-6],[0,0],[1,-3],[1,-7],[0,-4],[-10.2,-6]]
    
    # specify test case vertex points - should not be valid
    pointChain_3 = [[0,0],[1,0],[0,0]]
    pointChain_4 = [[0,0],[1,0],[1,1],[0.5,1],[0.5,0],[0,0]]
    pointChain_5 = [[0,0],[1,0],[1,1],[0,0],[-1,0],[0,-1],[0,0]]
    pointChain_6 = [[-1,0],[1,0],[0,1],[0,-1],[-1,0]]
    
    # generate shape according to chain of points of nested iterables
    # change passed in points chain to pointChain_1, pointChain_2, and so on...
    shape = plg.polygon(pointChain_1)
    print 'Vertices for successfully created polygon:'
    print shape.vertices
    print
Ejemplo n.º 23
0
def triangulate(graph, enclosing_triangle):

    triangles = [enclosing_triangle]

    for node in graph:
        
        #Find bad triangles
        badTriangles = []
        
        for triangle in triangles:
            p, q, r = triangle
            
            if withinCircle(node, p, q, r):
                badTriangles.append(triangle)
        
        # Find the boundaries of the polygonal hole
        hole = polygon(badTriangles)
                
        # Remove bad triangles from triangles
        for triangle in badTriangles:
            triangles.remove(triangle)
        
        # Re-triangulate the polygonal hole
        for edge in hole:
            a, b = edge
            newTriangle = {a, b, node}
            triangles.append(newTriangle)
            
    # Clean up
    # If a triangle contains a vertex from the super-triangle, remove it

    scaffolding = []

    for triangle in triangles:
        for vertex in triangle:
            if vertex in enclosing_triangle:
                if triangle not in scaffolding:
                    scaffolding.append(triangle)
                    
    for triangle in scaffolding:
        triangles.remove(triangle)

    return triangles
Ejemplo n.º 24
0
def main():

    # specify test case vertex points
    pointChain = [[-10.2, -6], [0, 0], [1, -3], [1, -7], [0, -4], [-10.2, -6]]

    # generate shape according to chain of points
    shape = plg.polygon(pointChain)
    print 'Original polygon properties (vetices, perimeter, and area):'
    print shape.vertices
    print shape.getPerimeter()
    print shape.getArea()
    print

    # rotate polygon about origin by 30 degrees counterclockwise
    transArray1 = [[mth.cos(mth.pi / 6),
                    mth.sin(mth.pi / 6), 0],
                   [-mth.sin(mth.pi / 6),
                    mth.cos(mth.pi / 6), 0], [0, 0, 1]]
    newShape = shape.getNewTransformedPolygon(transArray1)
    print 'Transformation 1 properties (vetices, perimeter, and area):'
    print newShape.vertices
    print newShape.getPerimeter()
    print newShape.getArea()
    print

    # scale polygon about origin by one half
    transArray2 = [[0.5, 0, 0], [0, 0.5, 0], [0, 0, 1]]
    newShape = shape.getNewTransformedPolygon(transArray2)
    print 'Transformation 2 properties (vetices, perimeter, and area):'
    print newShape.vertices
    print newShape.getPerimeter()
    print newShape.getArea()
    print

    # translate polygon by [3,5]
    transArray3 = [[1, 0, 0], [0, 1, 0], [3, 5, 1]]
    newShape = shape.getNewTransformedPolygon(transArray3)
    print 'Transformation 3 properties (vetices, perimeter, and area):'
    print newShape.vertices
    print newShape.getPerimeter()
    print newShape.getArea()
    print
def cheb(points, show=False):

    # preprocessing points
    y = points[:, 1]

    ofs_y = (np.max(y) - np.min(y)) / 2 + abs(np.min(y))
    points[:, 1] = points[:, 1] - ofs_y

    p = polygon(points)

    c = ChebyshevCenter(p)

    c._transform()

    #c.showPolygon()

    center = c.solve(show=show)
    center[1] += ofs_y
    points[:, 1] = points[:, 1] + ofs_y

    return center
Ejemplo n.º 26
0
def main():
    
    # specify test case vertex points
    pointChain = [[-10.2,-6],[0,0],[1,-3],[1,-7],[0,-4],[-10.2,-6]]
    
    # generate shape according to chain of points
    shape = plg.polygon(pointChain)
    print 'Original polygon properties (vetices, perimeter, and area):'
    print shape.vertices
    print shape.getPerimeter()
    print shape.getArea()
    print
    
    # rotate polygon about origin by 30 degrees counterclockwise
    transArray1 = [[mth.cos(mth.pi/6),mth.sin(mth.pi/6),0],[-mth.sin(mth.pi/6),mth.cos(mth.pi/6),0],[0,0,1]]
    newShape = shape.getNewTransformedPolygon(transArray1)
    print 'Transformation 1 properties (vetices, perimeter, and area):'
    print newShape.vertices
    print newShape.getPerimeter()
    print newShape.getArea()
    print
    
    # scale polygon about origin by one half
    transArray2 = [[0.5,0,0],[0,0.5,0],[0,0,1]]
    newShape = shape.getNewTransformedPolygon(transArray2)
    print 'Transformation 2 properties (vetices, perimeter, and area):'
    print newShape.vertices
    print newShape.getPerimeter()
    print newShape.getArea()
    print
    
    # translate polygon by [3,5]
    transArray3 = [[1,0,0],[0,1,0],[3,5,1]]
    newShape = shape.getNewTransformedPolygon(transArray3)
    print 'Transformation 3 properties (vetices, perimeter, and area):'
    print newShape.vertices
    print newShape.getPerimeter()
    print newShape.getArea()
    print
Ejemplo n.º 27
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")
Ejemplo n.º 28
0
import numpy as np
import matplotlib.pyplot as plt
from polygon import polygon
from diskmap import diskmap

plt.figure(figsize=(6.4, 9.6))

r = np.arange(0.1, 1, 0.07)
theta = np.arange(0, 2 * np.pi, np.pi / 12)

p = polygon([0, 1j, -1 + 1j, -1 - 1j, 1 - 1j, 1])
m = diskmap(p, -0.5 - 0.5j)

plt.subplot(3, 2, 1)
p.plot('r')
m.plot(r, theta, 'b', lw=0.5)
plt.axis('equal')
plt.axis('off')
plt.axis([-1.02, 1.02, -1.02, 1.02])

############################################################

m = diskmap(p, 0.3 - 0.5j)

plt.subplot(3, 2, 2)
p.plot('r')
m.plot(r, theta, 'b', lw=0.5)
plt.axis('equal')
plt.axis('off')
plt.axis([-1.02, 1.02, -1.02, 1.02])
Ejemplo n.º 29
0
w = 0.5*(z + 1/z)
plt.plot(np.real(w), np.imag(w), 'b', lw=0.5)

s,t = np.meshgrid(np.linspace(0.01, 0.99, 100), theta)
z = s * np.exp(1j*t)
w = 0.5*(z + 1/z)
plt.plot(np.real(w.T), np.imag(w.T), 'b', lw=0.5)

plt.plot([-1,1], [0,0], 'r')
plt.axis('equal')
plt.axis('off')
plt.axis([-3,3,-3,3])

###############################################################

p = polygon([-0.5j, -2+0.5j, -0.5j, 1.5+1j])
m = extermap(p)

plt.subplot(4,2,2)
m.plot(r, theta, 'b', lw=0.5)
p.plot('r')
plt.axis('equal')
plt.axis('off')
plt.axis([-5,5,-5,5])

###############################################################

r = np.arange(0.3, 1, 0.04)
theta = 2*np.pi * np.arange(36)/36

p = polygon([1,1j,-1,-1j])
	def paintEvent(self, event):
		radius = 3
		p = QPainter(self.viewport())
		p.setPen(Qt.black)
		for i in range(len(self.vertices)-1):
			p.drawLine(self.vertices[i],self.vertices[i+1])
		if self.evaderSet:
			p.setBrush(Qt.gray)
			p.drawEllipse(self.evaderPos, radius, radius)
		if self.pursuerSet:
			p.setBrush(Qt.yellow)
			p.drawEllipse(self.pursuerPos, radius, radius)
		if not self.polygonFinished:
			if self.clickEvent:
				if len(self.vertices) > 1:
					if self.intersect(self.vertices[0], self.clickPos, radius):
						if not self.illegal(self.clickPos):
							self.vertices.append(self.vertices[0])
							self.poly.append(self.vertices[0])
							p.drawLine(self.vertices[len(self.vertices)-2],self.vertices[0])
							self.polygonFinished = 1
							self.poly = polygon.polygon(self.vertices)
							self.poly.getBeams(self.beamLines)
							self.poly.getH(self.hLines)
							return
				if not self.illegal(self.clickPos):
					self.vertices.append(self.clickPos)
					p.drawLine(self.vertices[len(self.vertices)-2],self.clickPos)
				else:
					self.clickPos = self.vertices[len(self.vertices)-1]
			if self.initiated:
				p.setBrush(QBrush(Qt.blue))
				p.drawEllipse(self.vertices[0], radius, radius)
				p.setBrush(QBrush(Qt.red))
				p.drawEllipse(self.clickPos, radius, radius)
				if self.illegal(self.movePos):
					p.setPen(Qt.red)
				p.drawLine(self.vertices[len(self.vertices)-1],self.movePos)
		else:
			if not self.evaderSet:
				p.setBrush(QBrush(Qt.gray))
				p.drawEllipse(self.movePos, radius, radius)
				if self.clickEvent:
					if self.poly.containsPoint(self.clickPos, Qt.OddEvenFill):
						p.drawEllipse(self.clickPos, radius, radius)
						self.evaderPos = self.clickPos
						self.evaderSet = 1
						return
			else:
				if not self.pursuerSet:
					p.setBrush(QBrush(Qt.yellow))
					p.drawEllipse(self.movePos,radius,radius)
					if self.clickEvent:
						if self.poly.containsPoint(self.clickPos, Qt.OddEvenFill):
							p.drawEllipse(self.clickPos, radius, radius)
							self.pursuerPos = self.clickPos
							self.pursuerSet = 1
							self.initiatePursuitStrategy()
							return
			if self.beams:
				for line in self.beamLines:
					p.setPen(Qt.DashLine)
					p.drawLine(line)
			if self.h:
				for line in self.hLines:
					p.setPen(Qt.DashLine)
					p.drawLine(line)
			if self.criticalBeam:
				p.setPen(Qt.red)
				p.drawLine(self.criticalBeam)
Ejemplo n.º 31
0
shape = 2048, 2048
#shape = 4096, 4096
print('Nb vertices: %d, image shape: %d, %d' %
      (nb_vertices, shape[0], shape[1]))

row = np.random.randint(-int(shape[0]/10), int(1.1 * shape[0]), nb_vertices).astype(np.float32)
col = np.random.randint(-int(shape[0]/10), int(1.1 * shape[1]), nb_vertices).astype(np.float32)


st = time.time()
skimg_row, skimg_col = skimg_polygon(row, col, shape)
dt = time.time() - st
print('skimage: %f s' % dt)

st = time.time()
result = polygon(row, col, shape)
dt = time.time() - st
assert np.all(np.equal(skimg_row, result[0]))
assert np.all(np.equal(skimg_col, result[1]))
print('using line buffer: %f s' % dt)

st = time.time()
result = polygon_mask(row, col, shape, asmask=False)
dt = time.time() - st
assert np.all(np.equal(skimg_row, result[0]))
assert np.all(np.equal(skimg_col, result[1]))
print('using mask buffer: %f s' % dt)

st = time.time()
mask = polygon_mask(row, col, shape, asmask=True)
dt = time.time() - st
Ejemplo n.º 32
0
import numpy as np
import matplotlib.pyplot as plt
from polygon import polygon
from diskmap import diskmap


def plot_cmplx(z, *a, **k):
    plt.plot(np.real(z), np.imag(z), *a, **k)


p = polygon([1, 1j, -1, -1j])
m = diskmap(p)

x, y = np.meshgrid(np.linspace(-0.8, 0.8, 9), np.linspace(-0.99, 0.99, 100))

z = (x + y * 1j) * (0.5 + 0.5j)
zi = z * 1j
theta = np.linspace(0, 2 * np.pi, 100)

plt.figure(figsize=(6.4, 3.2))

plt.subplot(1, 2, 1)
plt.axis('equal')
plt.axis('off')
plt.axis([-1, 1, -1, 1])
p.plot('r')
plot_cmplx(z, 'b')
plot_cmplx(zi, 'b')
plot_cmplx(p.vertex, '.y')

plt.subplot(1, 2, 2)
Ejemplo n.º 33
0
import numpy as np
import matplotlib.pyplot as plt
from polygon import polygon
from diskmap import diskmap

plt.figure(figsize=(6.4, 9.6))

r = np.arange(0.1, 1, 0.07)
theta = np.arange(0, 2 * np.pi, np.pi / 12)

p = polygon([1 - 0.5j, np.inf, 1j, np.inf, -1, np.inf, 1 - 1j],
            [3 / 2, -1 / 4, 3 / 2, 0, 3 / 2, -1 / 4, 1])
m = diskmap(p)

plt.subplot(3, 2, 1)
m.plot(r, theta, 'b', lw=0.5)
p.plot('r')
plt.axis('equal')
plt.axis('off')
plt.axis([-2.5, 2.5, -3, 2])

############################################################

p = polygon([
    1 - 1j, np.inf, 1 + 1j, np.inf, -0.3 + 1.3j, np.inf, -1 + 0.5j, np.inf,
    -1 - 1j
], [1, -1 / 6, 2, -1 / 3, 2, -1 / 4, 2, -1 / 4, 1])
m = diskmap(p)

plt.subplot(3, 2, 2)
m.plot(r, theta, 'b', lw=0.5)
	def setPolygon(self, vert):
		self.p = polygon.polygon(vert)
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")
Ejemplo n.º 36
0
import numpy as np
import matplotlib.pyplot as plt
from polygon import polygon
from hplmap import hplmap

plt.figure(figsize=(6, 6))

x = np.arange(-1, 4, 0.125)
y = np.arange(0.125, 2, 0.125)

p = polygon([-1, -0.5 + 0.5j, 0.5 - 0.5j, 1, np.inf], [0, 0, 0, 5 / 4, -1])
m = hplmap(p)

plt.subplot(3, 2, 1)
m.plot(x, y, 'b', lw=1)
p.plot('r')
plt.axis('equal')
plt.axis('off')
plt.axis([-1.5, 1.5, -0.53, 1.5])

####################################################

x = np.arange(-1, 4, 0.125)
y = np.arange(0.125, 2.25, 0.125)

p = polygon([0, 1j, 0.5j, 1 + 0.5j, 1, np.inf], [0, 0, 0, 0, 1 / 2, -1])
m = hplmap(p)

plt.subplot(3, 2, 2)
m.plot(x, y, 'b', lw=1)
p.plot('r')
Ejemplo n.º 37
0
 def add_poly(self, points, mat):
     poly = polygon(np.asarray(points), mat)
     poly.get_normal()
     self.objects.append(poly)