 			return false;
 		}
 		
+		private static const _tempShape:Shape = new Shape();
+		private static function polygonOverlapsPoint2(polygon:Object, x:Number, y:Number):Boolean
+		{
+			// render the polygon on the shape
+			var graphics:Graphics = _tempShape.graphics;
+			graphics.clear();
+			graphics.lineStyle(0, 0, 0, true);
+			graphics.beginFill(0, 1);
+			var numPoints:int = polygon.length;
+			var firstX:Number, firstY:Number;
+			for (var vIndex:int = 0; vIndex < numPoints; ++vIndex)
+			{
+				var vertex:Object = polygon[vIndex];
+				if (vIndex == 0)
+				{
+					firstX = vertex.x; 
+					firstY = vertex.y;
+					graphics.moveTo(firstX, firstY);
+					continue;
+				}
+				graphics.lineTo(vertex.x, vertex.y);
+			}
+			
+			graphics.lineTo(firstX, firstY);
+			graphics.endFill();
+			_tempMatrix.identity();
+			_tempMatrix.translate(180, 90);
+			//_tempMatrix.scale(4, -4);
+			_tempBitmap.bitmapData.fillRect(_tempBitmap.bitmapData.rect, 0x00000000);
+			_tempBitmap.bitmapData.draw(_tempShape, _tempMatrix);
+			
+			x = (x + 180);
+			y = (y + 90);
+			var color:int = _tempBitmap.bitmapData.getPixel32(x, y);
+			if (color != 0x00000000)
+				return true;
+			
+			return false;
+		}
+		private static const _tempBitmap:Bitmap = new Bitmap(new BitmapData(360, 180, true));
+		private static const _tempMatrix:Matrix = new Matrix();
 		/**
 		 * polygonOverlapsPoint
 		 * @param polygon An array of objects representing vertices, each having x and y properties.


package weave.utils
{
	import flash.geom.Point;
	
	import mx.utils.ObjectUtil;
	
	import weave.api.primitives.IBounds2D;
	import weave.primitives.Bounds2D;

	/**

				return true;
			a = polygon1[0];
			return polygonOverlapsPoint(polygon2, a.x, a.y);

		}

		/**
		 * polygonIntersectsLine
		 * @param polygon An array of objects representing vertices, each having x and y properties.
