Cesium之矩阵变换

齐次变换

齐次变换看,这里

2. Cesium矩阵变换

2.1 创建矩阵

  1. 创建一个矩阵的一些方法
// 创建一个3X3 的旋转矩阵
let m3 = new Cesium.Matrix3(
1,0,0,
0,1,0,
0,0,1
)
// 通过一个旋转角度创建一个3X3的旋转矩阵
let m3 = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(60));

// 创建一个4X4 旋转平移变换矩阵
let m4 = new Cesium.Matrix4(
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
)

// 通过一个平移向量Cartesian3,创建一个4X4矩阵
let translation =  new Cesium.Cartesian3( 20, 15, 0 );
let m4 = Cesium.Matrix4.fromTranslation(translation);


// 通过一个3X3的旋转矩阵创建一个4x4的矩阵
let rotationZ = Cesium.Matrix4.fromRotationTranslation(m3);

  1. 使对象模型绕某轴旋转一个角度
let anglex = 60
// 获取模型当前的变换矩阵
let m = tilesetModel.modelMatrix;
// 获取计算绕某轴旋转的3X3变换矩阵
let rotationM = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(anglex));
// 计算矩阵4的变换矩阵(在原变换中,累加变换)
let newMatrix4 = Cesium.Matrix4.multiplyByMatrix3(m, rotationM, new Cesium.Matrix4());
// 开始变换模型
tilesetModel.modelMatrix = newMatrix4 

2.2 本地坐标与世界坐标的转换

  1. 本地坐标转为世界坐标
// 获取一个WGS84点的坐标点对应的世界坐标
let pos =  Cesium.Cartesian3.fromDegrees(-114.0, 50.0, 50.0);
// 本地坐标在世界坐标中的变换矩阵
let _LocalToWorldMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(pos);
// 在本地坐标
let _localPos = new Cesium.Cartesian3(0, 10, 20);
// 将本地坐标转世界坐标
let _worldPointX = Cesium.Matrix4.multiplyByPoint(_LocalToWorldMatrix , _localPos, new Cesium.Cartesian3());

其它矩阵相关

  1. 两个4X4矩阵的叉乘
Cesium.Matrix4.multiply(mm, rotationZ, mm);
// mm 为原变换矩阵,ratationZ为累加的变换矩阵
  1. 两个向量的相减
var oldCart = new Cesium.Cartesian3(0,0,0);
var newCart = new Cesium.Cartesian3( 20, 15, 0 );
var translation = Cesium.Cartesian3.subtract(oldCart, newCart, new Cesium.Cartesian3());
// translation = (-20, -15, 0)
  1. 一个4X4矩阵与一个点(平移向量)的叉乘
Cesium.Matrix4.multiplyByPoint(matrix4 , pos ); // 结果是一个变换后的新点
  1. 一个4X4的旋转矩阵与3X3的矩阵的叉乘
Cesium.Matrix4.multiplyByMatrix3(m, rotationM)
var getRotation = Cesium.Matrix4.getRotation(multiply, new Cesium.Matrix3());

Cesium.Cartesian3.ZERO
Cesium.Cartesian3.UNIT_X
Cesium.Cartesian3.UNIT_Y
Cesium.Cartesian3.UNIT_Z
发布了88 篇原创文章 · 获赞 3 · 访问量 5501

猜你喜欢

转载自blog.csdn.net/youlinhuanyan/article/details/103242162
今日推荐