var viewer = new Cesium.Viewer('cesiumContainer');
var entities = viewer.entities;
var center = Cesium.Cartesian3.fromDegrees(5, 2.5);// The center of the polygon
var heading = Cesium.Math.toRadians(30); var pitch = Cesium.Math.toRadians(0); var roll = Cesium.Math.toRadians(0);
// create the transformation matrix based on a specific value of heading, pitch and roll var rotation = Cesium.Transforms.headingPitchRollToFixedFrame(center, heading, pitch, roll);
// add the polygon without any rotation
entities.add({ polygon: { hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray([0, 0, 10, 0, 10, 5, 0, 5])), material: Cesium.Color.GREEN } });
// compute the coordinates of each vertex of the rotated polygon var p1 = new Cesium.Cartesian3.fromDegrees(0, 0); Cesium.Matrix4.multiplyByPoint(rotation,p1,p1); var a1 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(p1);
var p2 = new Cesium.Cartesian3.fromDegrees(10, 0); Cesium.Matrix4.multiplyByPoint(rotation,p2,p2); var a2 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(p2);
var p3 = new Cesium.Cartesian3.fromDegrees(10, 5); Cesium.Matrix4.multiplyByPoint(rotation,p3,p3); var a3 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(p3);
var p4 = new Cesium.Cartesian3.fromDegrees(0, 5); Cesium.Matrix4.multiplyByPoint(rotation,p4,p4); var a4 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(p4);
// add the rotated polygon entities.add({ polygon: { hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray([ Cesium.Math.toDegrees(a1.longitude), Cesium.Math.toDegrees(a1.latitude), Cesium.Math.toDegrees(a2.longitude), Cesium.Math.toDegrees(a2.latitude), Cesium.Math.toDegrees(a3.longitude), Cesium.Math.toDegrees(a3.latitude), Cesium.Math.toDegrees(a4.longitude), Cesium.Math.toDegrees(a4.latitude)])), material: Cesium.Color.RED } });
viewer.zoomTo(viewer.entities);
Could you please provide me sample piece of code to compute rotated polygon coordinates?
Thanks,
Gowtham.