def testTriangleCentroid(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) v4 = (v1+v2+v3)*(1.0/3.0) a = triangle([v1,v2,v3]) self.assertAlmostEqual(a.Centroid().length(),v4.length())
def testTriangleCentroid(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) v4 = (v1 + v2 + v3) * (1.0 / 3.0) a = triangle([v1, v2, v3]) self.assertAlmostEqual(a.Centroid().length(), v4.length())
def testTriangleInit(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) v4 = vect_3D(1.0, 1.0) a = triangle([v1,v2,v3,v4]) self.assertEqual(len(a.pts),3)
def testbPolygonCentroid(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) v4 = (v1+v2+v3)*(1.0/3.0) a = base_polygon([v1,v2,v3]) self.assertAlmostEqual(a.Centroid().length(),v4.length())
def testbPolygonCentroid(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) v4 = (v1 + v2 + v3) * (1.0 / 3.0) a = base_polygon([v1, v2, v3]) self.assertAlmostEqual(a.Centroid().length(), v4.length())
def testPolyArea(self): v0 = vect_3D(0, 1) v1 = vect_3D(1, 1) v2 = vect_3D(1, 0) v3 = vect_3D(0, 0) a = base_polygon([v0, v1, v2, v3]) self.assertAlmostEqual(a.Area(), 1.0)
def testCircleRotate(self): a = circle(vect_3D(), 1.0) center = vect_3D(1.0, 0.0) angle = pi a.Rotate(angle, center) self.assertAlmostEqual((a.Centroid() - vect_3D(2.0, 0.0)).length(), 0.0)
def testPolyArea(self): v0 = vect_3D(0,1) v1 = vect_3D(1,1) v2 = vect_3D(1,0) v3 = vect_3D(0,0) a = base_polygon([v0,v1,v2,v3]) self.assertAlmostEqual(a.Area(),1.0)
def testTriangleInit(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) v4 = vect_3D(1.0, 1.0) a = triangle([v1, v2, v3, v4]) self.assertEqual(len(a.pts), 3)
def testPolyRotatecentroid(self): v0 = vect_3D(0,1) v1 = vect_3D(1,1) v2 = vect_3D(1,0) v3 = vect_3D(0,0) a = base_polygon([v0,v1,v2,v3]) a.Rotate(pi/2.0) self.assertEqual(a.Centroid(),vect_3D(0.5,0.5))
def testPolyRotateCorner(self): v0 = vect_3D(0, 1) v1 = vect_3D(1, 1) v2 = vect_3D(1, 0) v3 = vect_3D(0, 0) a = base_polygon([v0, v1, v2, v3]) a.Rotate(pi / 2.0) self.assertEqual(a.vertices()[0], vect_3D(1, 1))
def testPolyRotatecentroid(self): v0 = vect_3D(0, 1) v1 = vect_3D(1, 1) v2 = vect_3D(1, 0) v3 = vect_3D(0, 0) a = base_polygon([v0, v1, v2, v3]) a.Rotate(pi / 2.0) self.assertEqual(a.Centroid(), vect_3D(0.5, 0.5))
def testPolyTriangulate(self): v0 = vect_3D(0,1) v1 = vect_3D(1,0.5) v2 = vect_3D(0.7,-0.5) v3 = vect_3D(-0.7,-0.5) v4 = vect_3D(-1,0.5) a = base_polygon([v0,v1,v2,v3,v4]) self.assertEqual(len(a.Triangulate()),3)
def testPolyArea2(self): v0 = vect_3D(-1, 0) v1 = vect_3D(-1, -1) v2 = vect_3D(0, 0.5) v3 = vect_3D(1, 1) v4 = vect_3D(1, 0) a = base_polygon([v0, v1, v2, v3, v4]) self.assertAlmostEqual(a.Area(), 1.5)
def testPolyTriangulate(self): v0 = vect_3D(0, 1) v1 = vect_3D(1, 0.5) v2 = vect_3D(0.7, -0.5) v3 = vect_3D(-0.7, -0.5) v4 = vect_3D(-1, 0.5) a = base_polygon([v0, v1, v2, v3, v4]) self.assertEqual(len(a.Triangulate()), 3)
def testPolyRotateCorner(self): v0 = vect_3D(0,1) v1 = vect_3D(1,1) v2 = vect_3D(1,0) v3 = vect_3D(0,0) a = base_polygon([v0,v1,v2,v3]) a.Rotate(pi/2.0) self.assertEqual(a.vertices()[0],vect_3D(1,1))
def testPolyArea2(self): v0 = vect_3D(-1,0) v1 = vect_3D(-1,-1) v2 = vect_3D(0,0.5) v3 = vect_3D(1,1) v4 = vect_3D(1,0) a = base_polygon([v0,v1,v2,v3,v4]) self.assertAlmostEqual(a.Area(),1.5)
def testPolyScale(self): v0 = vect_3D(0, 1) v1 = vect_3D(1, 1) v2 = vect_3D(1, 0) v3 = vect_3D(0, 0) a = base_polygon([v0, v1, v2, v3]) a.Scale(2.0) ct = a.Centroid() self.assertAlmostEqual((ct - vect_3D(0.5, 0.5)).length(), 0.0)
def testConvexSquare(self): # Should return the same square v = [] v.append(vect_3D(-1, -1)) v.append(vect_3D(-1, 1)) v.append(vect_3D(1, 1)) v.append(vect_3D(1, -1)) self.assertEqual(len(geometry_rubberband().Solve(v).vertices()), 4)
def testPolyScale(self): v0 = vect_3D(0,1) v1 = vect_3D(1,1) v2 = vect_3D(1,0) v3 = vect_3D(0,0) a = base_polygon([v0,v1,v2,v3]) a.Scale(2.0) ct = a.Centroid() self.assertAlmostEqual((ct-vect_3D(0.5,0.5)).length(),0.0)
def testConvexSquare(self): # Should return the same square v = [] v.append(vect_3D(-1,-1)) v.append(vect_3D(-1,1)) v.append(vect_3D(1,1)) v.append(vect_3D(1,-1)) self.assertEqual(len(geometry_rubberband().Solve(v).vertices()),4)
def testAlignToSelf(self): a = base_polygon([vect_3D(1,1),vect_3D(1,-1),vect_3D(-1,-1)]) b = base_polygon([vect_3D(1,1),vect_3D(1,-1),vect_3D(1,-3),vect_3D(0,-3),vect_3D(-1,-1)]) x = morphable_polygon(a,b) x.SetDelta(0.5) self.assertTrue(True)
def Centroid(self): '''! \brief Runtime computation of the centroid. ''' out = vect_3D() for i in self.pts: out = out + i return out * (1.0/len(self.pts))
def testConvexSquare6(self): # Test the kernelization v = [] for i in xrange(100): v.append(vect_3D(gauss(0.0, 1.0), gauss(0.0, 1.0))) self.assert_(len(geometry_rubberband().Solve(v).vertices()))
def Centroid(self): '''! \brief Runtime computation of the centroid. ''' out = vect_3D() for i in self.pts: out = out + i return out * (1.0 / len(self.pts))
def testConvexSquare6(self): # Test the kernelization v = [] for i in xrange(100): v.append(vect_3D(gauss(0.0,1.0), gauss(0.0,1.0))) self.assert_(len(geometry_rubberband().Solve(v).vertices()))
def SetupFlatLand(flat, coord): # Get the first coordinate if type(coord) == type([]): x = coord[0] else: x = coord flat.Bind(vect_3D(), x)
def testConvexSquare4(self): # Should return the same square v = [] v.append(vect_3D(0, 1)) v.append(vect_3D(.7, .7)) v.append(vect_3D(1, 0)) v.append(vect_3D(.7, -.7)) v.append(vect_3D(0, -1)) v.append(vect_3D(-0.7, -0.7)) v.append(vect_3D(-1, 0)) v.append(vect_3D(-.7, 0.7)) self.assertEqual(len(geometry_rubberband().Solve(v).vertices()), 8)
def testConvexSquare5(self): # Test the kernelization v = [] for x in xrange(13): for y in xrange(13): X = -6 + x Y = -6 + y if (X**2 + Y**2)**0.5 <= 6.01: v.append(vect_3D(float(X), float(Y))) self.assertEqual(len(geometry_rubberband().Solve(v).vertices()), 12)
def testAlignToSelf(self): a = base_polygon([vect_3D(1, 1), vect_3D(1, -1), vect_3D(-1, -1)]) b = base_polygon([ vect_3D(1, 1), vect_3D(1, -1), vect_3D(1, -3), vect_3D(0, -3), vect_3D(-1, -1) ]) x = morphable_polygon(a, b) x.SetDelta(0.5) self.assertTrue(True)
def testConvexSquare5(self): # Test the kernelization v = [] for x in xrange(13): for y in xrange(13): X = -6 + x Y = -6 + y if (X**2 + Y**2)**0.5 <= 6.01: v.append(vect_3D( float(X), float(Y))) self.assertEqual(len(geometry_rubberband().Solve(v).vertices()),12)
def testOverlapPosCase1(self): A = base_polygon([vect_3D(0, 0), vect_3D(1, 0), vect_3D(0, 1)]) B = base_polygon( [vect_3D(0.1, 0.1), vect_3D(1.1, 0.1), vect_3D(0.1, 1.1)]) self.assertEqual(A.Overlaps(B), True)
def testOverlapNegCase1(self): A = base_polygon([vect_3D(0, 0), vect_3D(1, 0), vect_3D(0, 1)]) B = base_polygon( [vect_3D(0.6, 0.6), vect_3D(1.6, 0.6), vect_3D(0.6, 1.6)]) self.assertEqual(A.Overlaps(B), False)
def testOverlapPosCase3(self): A = base_polygon([vect_3D(0, 0), vect_3D(1, 0), vect_3D(0, 1)]) B = base_polygon( [vect_3D(0.6, 0.6), vect_3D(0.7, 0.7), vect_3D(0.65, -10.0)]) self.assertEqual(A.Overlaps(B), True)
def RandomTriangleOnCircle(self): center = vect_3D(0.5 - random(), 0.5 - random()) radius = abs(gauss(1.0, 2.0)) angles = [] for i in xrange(3): angles.append(random() * 2 * pi) pt = [] for i in angles: pt.append(center.ToBearing([i, radius])) return triangle(pt), center, radius
def RandomTriangleOnCircle(self): center = vect_3D(0.5 - random(), 0.5 - random()) radius = abs(gauss(1.0,2.0)) angles = [] for i in xrange(3): angles.append(random()*2*pi) pt = [] for i in angles: pt.append(center.ToBearing([i,radius])) return triangle(pt), center, radius
def testPolyTranslate(self): v0 = vect_3D(0, 1) v1 = vect_3D(1, 1) v2 = vect_3D(1, 0) v3 = vect_3D(0, 0) a = base_polygon([v0, v1, v2, v3]) a.Translate(vect_3D(-0.5, -0.5)) self.assertEqual(a.Centroid(), vect_3D())
def testConvexSquare4(self): # Should return the same square v = [] v.append(vect_3D(0,1)) v.append(vect_3D(.7,.7)) v.append(vect_3D(1,0)) v.append(vect_3D(.7,-.7)) v.append(vect_3D(0,-1)) v.append(vect_3D(-0.7,-0.7)) v.append(vect_3D(-1, 0)) v.append(vect_3D(-.7, 0.7)) self.assertEqual(len(geometry_rubberband().Solve(v).vertices()),8)
def testPolyTranslate(self): v0 = vect_3D(0,1) v1 = vect_3D(1,1) v2 = vect_3D(1,0) v3 = vect_3D(0,0) a = base_polygon([v0,v1,v2,v3]) a.Translate(vect_3D(-0.5, -0.5)) self.assertEqual(a.Centroid(),vect_3D())
def SituationalAwareness(self, E): # Prepare the two vectors of units and send to the entity eny = [] fr = [] for i in self.OOB.keys(): e = self.sim.AsEntity(i) if e == E: continue # Get contact cnt = E['agent'].GetContact(e) if cnt != None: if cnt.GetField('side') != E['side']: eny.append(e) else: fr.append(e) return vect_3D(E.SituationalAwareness(eny),E.SituationalAwareness(fr))
def SituationalAwareness(self, E): # Prepare the two vectors of units and send to the entity eny = [] fr = [] for i in self.OOB.keys(): e = self.sim.AsEntity(i) if e == E: continue # Get contact cnt = E['agent'].GetContact(e) if cnt != None: if cnt.GetField('side') != E['side']: eny.append(e) else: fr.append(e) return vect_3D(E.SituationalAwareness(eny), E.SituationalAwareness(fr))
def Circumcenter(self): self.Circumradius() a = array([[0, 0, 1.], [0, 0, 1.], [0, 0, 1.]]) myarray = array([[0, 0, 1.], [0, 0, 1.], [0, 0, 1.]]) for i in range(len(self.pts)): myarray[i][0] = (self.pts[i].x**2) + (self.pts[i].y**2) myarray[i][1] = self.pts[i].y a[i][0] = self.pts[i].x a[i][1] = self.pts[i].y # index 2 is already set to 1 a = det(a) bx = -1.0 * det(myarray) for i in range(len(self.pts)): myarray[i][0] = (self.pts[i].x**2) + (self.pts[i].y**2) myarray[i][1] = self.pts[i].x # index 2 is already set to 1 by = det(myarray) self.circumcenter = vect_3D(-bx / (2 * a), -by / (2 * a)) a = 1 '''
def Circumcenter(self): self.Circumradius() a = array([[0,0,1.],[0,0,1.],[0,0,1.]]) myarray = array([[0,0,1.],[0,0,1.],[0,0,1.]]) for i in range(len(self.pts)): myarray[i][0] = (self.pts[i].x**2) + (self.pts[i].y**2) myarray[i][1] = self.pts[i].y a[i][0] = self.pts[i].x a[i][1] = self.pts[i].y # index 2 is already set to 1 a = det(a) bx = -1.0 * det(myarray) for i in range(len(self.pts)): myarray[i][0] = (self.pts[i].x**2) + (self.pts[i].y**2) myarray[i][1] = self.pts[i].x # index 2 is already set to 1 by = det(myarray) self.circumcenter = vect_3D(-bx/(2*a),-by/(2*a)) a = 1 '''
def testRelocateTask1step(self): # Set stance to transit self.GetUnit().SetStance('transit') # Redeploy task import sandbox_tasks task = sandbox_tasks.taskRelocate() task['destination'] = vect_3D(20, 20) # Make and opord opord = self.GetOPORD() # Add a task opord.AddTask(task) # Issue Order self.GetUnit().IssueOrder(opord) # 1 hour simulate self.W.Simulate(datetime.timedelta(hours=2.0)) self.assertEqual(self.GetUnit()['position'].x, 20.0)
def testRelocateTask3step(self): # Redeploy task import sandbox_tasks task = sandbox_tasks.taskRelocate() task['destination'] = vect_3D(20, 20) task['final_stance'] = 'deliberate defense' task['stance'] = 'transit' # Make and opord opord = self.GetOPORD() # Add a task opord.AddTask(task) # Issue Order self.GetUnit().IssueOrder(opord) # 1 hour simulate self.W.Simulate(datetime.timedelta(hours=3.0)) self.assertEqual(self.GetUnit()['position'].x, 20.0)
def testRelocateTask1step(self): # Set stance to transit self.GetUnit().SetStance("transit") # Redeploy task import sandbox_tasks task = sandbox_tasks.taskRelocate() task["destination"] = vect_3D(20, 20) # Make and opord opord = self.GetOPORD() # Add a task opord.AddTask(task) # Issue Order self.GetUnit().IssueOrder(opord) # 1 hour simulate self.W.Simulate(datetime.timedelta(hours=2.0)) self.assertEqual(self.GetUnit()["position"].x, 20.0)
def testRelocateTask3step(self): # Redeploy task import sandbox_tasks task = sandbox_tasks.taskRelocate() task["destination"] = vect_3D(20, 20) task["final_stance"] = "deliberate defense" task["stance"] = "transit" # Make and opord opord = self.GetOPORD() # Add a task opord.AddTask(task) # Issue Order self.GetUnit().IssueOrder(opord) # 1 hour simulate self.W.Simulate(datetime.timedelta(hours=3.0)) self.assertEqual(self.GetUnit()["position"].x, 20.0)
def testTrianglePointOut(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = triangle([v1, v2, v3]) self.assertEqual(a.PointInside(vect_3D(-0.1, 0.1)), False)
def testTrianglePointOnLine(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = triangle([v1,v2,v3]) self.assert_(a.PointInside(vect_3D(0.5,0.0)))
def testTrianglePointOut(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = triangle([v1,v2,v3]) self.assertEqual(a.PointInside(vect_3D(-0.1,0.1)), False)
def testTrianglePointOnLine(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = triangle([v1, v2, v3]) self.assert_(a.PointInside(vect_3D(0.5, 0.0)))
def testbPolygonPointOut(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = base_polygon([v1, v2, v3]) self.assertEqual(a.PointInside(vect_3D(-0.1, 0.1)), False)
def testbPolygonPointOnPoint(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = base_polygon([v1,v2,v3]) self.assert_(a.PointInside(vect_3D(0.0,0.0)))
def testbPolygonPointOut(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = base_polygon([v1,v2,v3]) self.assertEqual(a.PointInside(vect_3D(-0.1,0.1)), False)
def Normalize(self): '''! Bring center to origin. ''' self.center = vect_3D()
def testCircleScale2radius(self): a = circle(vect_3D(),1.0) a.Scale(2.0, vect_3D(1,1)) self.assertAlmostEqual(a.radius,2.0)
def testLineIntersect2(self): l1 = [vect_3D(-1,-1),vect_3D(-0.01,0.01)] l2 = [vect_3D(-1,1),vect_3D(-10,1)] self.assertEqual(Intersect(l1, l2), None)
def testLineIntersect1(self): l1 = [vect_3D(-1,-1),vect_3D(1,1)] l2 = [vect_3D(-1,-1),vect_3D(-10,1)] self.assertEqual(Intersect(l1, l2), vect_3D(-1,-1))
def testbPolygonPointOnPoint(self): v1 = vect_3D(0.0, 0.0) v2 = vect_3D(1.0, 0.0) v3 = vect_3D(0.0, 1.0) a = base_polygon([v1, v2, v3]) self.assert_(a.PointInside(vect_3D(0.0, 0.0)))
def testCircleScale2center(self): a = circle(vect_3D(),1.0) a.Scale(2.0, vect_3D(1,1)) center = (a.center-vect_3D(-1,-1)).length() self.assertAlmostEqual(center,0.0)