SVG Point Detection

HTML

<div id="findme" style="position: absolute; left: 50%; margin-left:-20px">

</div>
<svg width="1000" height="1000" viewBox="0 0 1000 1000"
     xmlns="http://www.w3.org/2000/svg" version="1.1" style="position:absolute; top: -1px; left: -1px;">

  <polygon fill="#3BA3D5" stroke="#000" stroke-width="2" stroke-dasharray="5, 5"
            points="0,0  500,500  500,0  0,500" />
  
  <g transform="translate(200,80)">
    <ellipse rx="100" ry="50"
    style="fill:#3BA3D5;stroke:#000;stroke-width:2" stroke-dasharray="5, 5" transform="rotate(57)">
    
    </ellipse>
  </g>
</svg>

CSS

body {
  cursor: crosshair;
}

JavaScript

function isPointInPoly(polygon, pt){
    var 
                pointStrs = polygon.attr('points').trim().split(' '),
                poly = [];

            for(var k = 0; k < pointStrs.length; k++) {
            		if(pointStrs[k] !== '') {
                	var pointArr = pointStrs[k].split(',');
                	console.log(pointStrs);
                
                	poly.push({
                    x: parseInt(pointArr[0], 10),
                    y: parseInt(pointArr[1], 10)
                	});
                }
            }
    console.log(poly);
    for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
        ((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y))
        && (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x)
        && (c = !c);
    return c;
}
function isPointInOval(xp,yp,d,D,angle,pt){
	var cosa=Math.cos(angle);
  var sina=Math.sin(angle);
  var dd=d/2*d/2;
  var DD=D/2*D/2;

  var a =Math.pow(cosa*(xp-pt.x)+sina*(yp-pt.y),2);
  var b =Math.pow(sina*(xp-pt.x)-cosa*(yp-pt.y),2);
  var ellipse=(a/dd)+(b/DD);

  return (ellipse <= 1);
}
$("body").mousemove(function(e) {
	var poly = $("polygon");
  var elli = $("ellipse")[0];
  var pt = {x:e.clientX, y:e.clientY};
  $("#findme").html(((isPointInPoly(poly, pt) || isPointInOval(200, 80, elli.rx.baseVal.value*2, elli.ry.baseVal.value*2, 45, pt)) ? "Yes" : "No") + " (" + pt.x + " x " + pt.y + ")");
})