예제 #1
0
파일: Main.py 프로젝트: marbibu/myCad
 def __init__(s):
       #Dane:
       win=Window("Point",0,0,600,600)
       master=win.getMaster()
       desk=Desk(master)
       C=desk.getC()
       
       
       p1=Point(100,100)
       p2=Point(200,100)
       p3=Point(200,200)
       p4=Point(100,200)
       
       desk.addPoint(p1)
       desk.addPoint(p2)
       desk.addPoint(p3)
       desk.addPoint(p4)
       
       path=Path()
       path.addPoint(p1)
       path.addPoint(p2)
       path.addPoint(p3)
       path.addPoint(p4)
       
       desk.addPath(path)
       
       
       win.loop()
예제 #2
0
 def testValid(self):
     validPath = Path()
     validPath.addPoint(self.p0)
     validPath.addPoint(self.p1)
     validPath.addPoint(self.p2)
     validPath.addPoint(self.p0)
     self.assertTrue(validPath.isConnected())
예제 #3
0
    def testLength(self):
        p = Path()
        p.addPoint(self.p0)
        p.addPoint(self.p1)

        l0 = Line(self.p0, self.p1)
        l1 = Line(self.p1, self.p2)
        self.assertEquals(p.length(), l0.length())
        p.addPoint(self.p2)
        self.assertEquals(p.length(), l0.length() + l1.length())
예제 #4
0
def jarviswalk(points):
    """Implementation of Jarvis Walk aka Gift wrapping algorithm.
    Based on the article http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
    """
    hull = Path()
    xsorted = sorted(points, key=lambda point: point.x)
    hull.addPoint(xsorted[0])
    while True:
        nextP = None
        maxLinearPoint = None
        maxLinearDistance = -1.0
        possiblePoints = filter(lambda p: p not in hull.points[1:], xsorted) 
        for p in possiblePoints:
            if p is hull.points[-1]: continue
            line = Line(hull.points[-1], p)
            allright, localMaxLinear, localMaxLinearDistance = allrightAndMaxLinearPoint(line, xsorted)
            if allright:
                nextP = p
                break
            if localMaxLinear is not None and localMaxLinearDistance != -1.0 and localMaxLinearDistance > maxLinearDistance:
                maxLinearPoint, maxLinearDistance = (localMaxLinear, localMaxLinearDistance)
        assert(nextP is not None or (maxLinearPoint is not None and maxLinearDistance > 0.0))
        if nextP is not None:
            hull.addPoint(nextP)
        else:
            hull.addPoint(maxLinearPoint)
        if hull.isConnected():
            break
    return hull
예제 #5
0
 def testDisconnected(self):
     disconnectedPath = Path()
     disconnectedPath.addPoint(self.p0)
     disconnectedPath.addPoint(self.p1)
     disconnectedPath.addPoint(self.p2)
     self.assertFalse(disconnectedPath.isConnected())