# Instance rotation?

**URL:** <https://community.cesium.com/t/instance-rotation/10163>\
**Category:** CesiumJS\
**Created:** [July 8, 2020, 1:50pm UTC](https://community.cesium.com/t/instance-rotation/10163 "2020-07-08T13:50:53Z")\
**Posts on this page:** 1\
**Page:** 2

<div class="post-metadata">

**Author:** ![Hyper\_Sonic](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/hyper_sonic/32/2255_2.png) [@Hyper\_Sonic](https://community.cesium.com/u/Hyper_Sonic)\
**Post date:** [July 22, 2020, 4:20pm UTC](https://community.cesium.com/t/instance-rotation/10163/21 "2020-07-22T16:20:20Z")

</div>

Awesome, I’m glad it provided the desired results! I’ve rotated each of the 3 vectors (east,north,up) to get that matrix. Here’s a sandcastle example rotating the east vector. Can do the same with the north vector. No point in rotating the up vector around itself, it won’t change.

```auto
var viewer = new Cesium.Viewer("cesiumContainer");
var mypos = new Cesium.Cartesian3.fromDegrees(-75.6132, 40.0416);
var mymat = new Cesium.Matrix4();
mymat = Cesium.Transforms.eastNorthUpToFixedFrame(mypos, viewer.scene.globe.ellipsoid, mymat);

var CC3=Cesium.Cartesian3;
var rotatee=new CC3(mymat[0],mymat[1],mymat[2]); //east/right
var rotater=new CC3(mymat[8],mymat[9],mymat[10]); //up
var result= new CC3();
result=rotateVector(rotatee,rotater,Math.PI/4); //rotate east +90deg around up
console.log(result);

function rotateVector(rotatee,rotater,angleRad)
{
var CC3 = Cesium.Cartesian3;var rotated=new CC3();
var dotS = CC3.dot(rotatee,rotater);
var base = CC3.multiplyByScalar(rotater,dotS,new CC3());
var vpa = CC3.subtract(rotatee,base,new CC3());
var cx = CC3.multiplyByScalar(vpa,Math.cos(angleRad),new CC3());
var vppa = CC3.cross(rotater,vpa,new CC3());
var cy = CC3.multiplyByScalar(vppa,Math.sin(angleRad),new CC3());
var temp = CC3.add(base,cx,new CC3());
var rotated = CC3.add(temp,cy,new CC3());
return rotated;
}

```

[Previous page](https://community.cesium.com/t/instance-rotation/10163.md?page=1)
