Estoy tratando de dibujar una elipse en el lado del cliente usando openlayers con algunas funciones matemáticas de dibujar elipse con svg . He logrado dibujarlo pero no la rotación lo que he escrito para el parámetro y no estoy seguro de la longitud del eje también.
Cuando mido la longitud del eje semi-mayor o semi-minor, no estoy obteniendo la verdadera longitud que he dado para 4,8 * 1000 metros.
Sé que PostGIS 2.1 tiene ST_MakeEllipse para esto pero lo quiero en el lado del cliente.
Comparto con vosotros el código javascript, la imagen de referencia y la imagen de resultado. Cualquier ayuda se agradece.
Imagen de referencia:
Códigos:
var radiusX= 4,8 * 2 // Semi-major axis length - km
var radiusY= 2,5 * 2 // Semi-minor axis length -km
var rot = 125 //Rotation
var xCent = 14.7495;
var yCent = 47.4640;
var z = [];
var list = [];
for (var i = 0 * Math.PI; i < 2 * Math.PI; i += 0.01 ) {
xPos = xCent - (radiusX* Math.sin(i)) * Math.sin(rot * Math.PI) + (radiusY* Math.cos(i)) * Math.cos(rot * Math.PI);
yPos = yCent + (radiusY* Math.cos(i)) * Math.sin(rot * Math.PI) + (radiusX* Math.sin(i)) * Math.cos(rot * Math.PI);
if(i == 0 ) {
z.push( new OpenLayers.Geometry.Point(xPos, yPos).transform(map.displayProjection, map.projection));
} else {
list.push(new OpenLayers.Geometry.Point(xPos, yPos).transform(map.displayProjection, map.projection));
}
};
var linear_ring = new OpenLayers.Geometry.LinearRing(list);
var polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linear_ring]), null, null);
vector.addFeatures([polygonFeature ])
Resultado: