cesium 缩放_Cesium 中的图形变换:局部平移、缩放、旋转思路及代码实现

本文介绍了Cesium中对tileset进行局部平移、缩放和旋转的方法,通过坐标变换矩阵实现。首先,通过tileset.modelMatrix进行坐标变换,然后分别展示了平移、旋转和缩放的逻辑和代码实现,包括平移向量的计算和平移矩阵的构造。文章提供了图形学中的变换思路,并给出了实际操作效果。
摘要由CSDN通过智能技术生成

开门见山:tileset.modelMatrix

这个属性可以在数据本身的基础上再进行坐标变换,不熟悉转换矩阵各个部分的含义的可参考图形学有关资料。

此文不一定是最佳算法,但是提供一种思路。转载请注明出处 全网@秋意正寒 。

平移思路

获取当前瓦片数据集的包裹范围(boundingSphere)中心(此时参考系是世界坐标)

计算当参考系是局部坐标时,此位置为原点的局部坐标系,到世界坐标的转换矩阵(eastNorthUpToFixedFrame)

利用上一步的转换矩阵,左乘一个局部平移向量,得到此平移向量在世界坐标系下的平移目标位置(矩阵×向量,结果是向量)

向量相减:世界坐标系下,指向平移目标点位的目标向量 - 指向数据集中心的向量,得到世界坐标系下的平移向量。

将世界坐标系下的平移向量转换成平移矩阵,赋予 tileset.modelMatrix

代码

tileset

.readyPromise

.then(tileset => {

const tileset_center = tileset.boundingSphere.center; // Cartesian3

const frompoint_to_world_matrix = Cesium.Transforms.eastNorthUpToFixedFrame(tileset_center); // Matrix4

const local_translation = new Cesium.Cartesian3(310, -140, 10); // 向模型中心为原点,正北为y,正东为x,地心朝上为z分别平移 31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值