diff --git a/app/plot_app/templates/3d.html b/app/plot_app/templates/3d.html
index db48b513..f816847d 100644
--- a/app/plot_app/templates/3d.html
+++ b/app/plot_app/templates/3d.html
@@ -259,7 +259,8 @@
// Rotate the model to point east
var m = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(heading_rotation_deg));
- rotation_matrix = Cesium.Matrix3.multiply(rotation_matrix, m, new Cesium.Matrix3());
+ var q_heading_rotation = Cesium.Quaternion.fromRotationMatrix(m);
+
// rotation quaterion from ENU to ECEF
var q_enu_to_ecef = Cesium.Quaternion.fromRotationMatrix(rotation_matrix);
@@ -279,7 +280,8 @@
Cesium.Quaternion.multiply(tmp, q_ned_to_enu_inv, q);
var orientation = new Cesium.Quaternion();
- Cesium.Quaternion.multiply(q_enu_to_ecef, q, orientation);
+ Cesium.Quaternion.multiply(q, q_heading_rotation, orientation);
+ Cesium.Quaternion.multiply(q_enu_to_ecef, orientation, orientation);
//orientationProperty.addSample(time_att, orientation); // this uses interpolation
// avoid using iterpolation (which causes problems)