void CalculateWorld(ShapeObject shapeA, ShapeObject shapeB, ShapeMatchType type)
        {
            Vector2   pointInWorld;
            Vector2D  pointInWorld2D = Vector2D.Zero();
            Polygon2D polyInWorld;

            foreach (Vector2D point in shapeA.pointsIn)
            {
                pointInWorld     = shapeA.transform.TransformPoint(point.ToVector2());
                pointInWorld2D.x = pointInWorld.x;
                pointInWorld2D.y = pointInWorld.y;

                polyInWorld = shapeB.GetWorldPolygon();

                if (polyInWorld.PointInPoly(pointInWorld2D))
                {
                    pointsIn++;
                }
            }

            foreach (Vector2D point in shapeB.pointsIn)
            {
                pointInWorld     = shapeB.transform.TransformPoint(point.ToVector2());
                pointInWorld2D.x = pointInWorld.x;
                pointInWorld2D.y = pointInWorld.y;

                polyInWorld = shapeA.GetWorldPolygon();

                if (polyInWorld.PointInPoly(pointInWorld2D))
                {
                    pointsIn++;
                }
            }
        }
Esempio n. 2
0
 public static bool PointInShapes(Vector2D point)
 {
     foreach (ShapeObject shape in ShapeObject.GetList())
     {
         if (shape.GetWorldPolygon().PointInPoly(point))
         {
             return(true);
         }
     }
     return(false);
 }
        public ShapeMatchResult(ShapeObject shapeA, ShapeObject shapeB, ShapeMatchType type)
        {
            allPoints = shapeA.pointsIn.Count + shapeB.pointsIn.Count;
            pointsIn  = 0;

            switch (type)
            {
            case ShapeMatchType.Local:
                CalculateLocal(shapeA, shapeB, type);
                break;

            case ShapeMatchType.World:
                CalculateWorld(shapeA, shapeB, type);
                break;
            }
            percentage = (float)pointsIn / allPoints;
        }
Esempio n. 4
0
        static public void DrawFill(ShapeFill shape)
        {
            Vector2  pointInWorld;
            Vector2D pointInWorld2D = Vector2D.Zero();

            foreach (Vector2D point in shape.pointsIn)
            {
                pointInWorld = shape.transform.TransformPoint(point.ToVector2());

                pointInWorld2D.x = pointInWorld.x;
                pointInWorld2D.y = pointInWorld.y;

                if (ShapeObject.PointInShapes(pointInWorld2D) == false)
                {
                    ShapeDraw.Draw(pointInWorld, shape.transform);
                }
            }
        }
		public ShapeFillResult(ShapeFill shapeFill) {
			allPoints = shapeFill.pointsIn.Count;

			pointsIn = 0;

			Vector2 pointInWorld;
			Vector2D pointInWorld2D = Vector2D.Zero();

			foreach(Vector2D point in shapeFill.pointsIn) {
				pointInWorld = shapeFill.transform.TransformPoint(point.ToVector2());

				pointInWorld2D.x = pointInWorld.x;
				pointInWorld2D.y = pointInWorld.y;

				if (ShapeObject.PointInShapes(pointInWorld2D) == false) {
					pointsIn ++;
				} 			
			}

			percentage = (float)pointsIn / allPoints;
		}
Esempio n. 6
0
        public static void DrawMatch(ShapeObject shapeA, ShapeObject shapeB)
        {
            Vector2   pointInWorld;
            Vector2D  pointInWorld2D = Vector2D.Zero();
            Polygon2D polyInWorld;

            foreach (Vector2D point in shapeA.pointsIn)
            {
                pointInWorld = shapeA.transform.TransformPoint(point.ToVector2());

                pointInWorld2D.x = pointInWorld.x;
                pointInWorld2D.y = pointInWorld.y;

                polyInWorld = shapeB.GetWorldPolygon();

                if (polyInWorld.PointInPoly(pointInWorld2D))
                {
                    ShapeDraw.Draw(pointInWorld, shapeA.transform);
                }
            }

            foreach (Vector2D point in shapeB.pointsIn)
            {
                pointInWorld = shapeB.transform.TransformPoint(point.ToVector2());

                pointInWorld2D.x = pointInWorld.x;
                pointInWorld2D.y = pointInWorld.y;

                polyInWorld = shapeA.GetWorldPolygon();

                if (polyInWorld.PointInPoly(pointInWorld2D))
                {
                    ShapeDraw.Draw(pointInWorld, shapeB.transform);
                }
            }
        }
Esempio n. 7
0
 public static ShapeMatchResult GetMatch(ShapeObject shapeA, ShapeObject shapeB, ShapeMatchType type = ShapeMatchType.World)
 {
     return(new ShapeMatchResult(shapeA, shapeB, type));
 }