Cesium 获取 3dtileset的包围盒各顶点坐标

Cesium 获取 3dtileset的包围盒各顶点坐标

js 复制代码
/**
 * 获取 3dtileset的包围盒各顶点坐标, z 方向取高度最低的位置
 * @param {*} tileset
 * @param {*} options
 * @returns
 * @ref https://blog.csdn.net/STANDBYF/article/details/135012273
 * @ref https://community.cesium.com/t/accurate-bounding-box-for-3d-tiles/5890/10
 */
export function getTilesetBoudingBoxPoints(tileset, options = {}) {
  const { center, halfAxes } = tileset._root._boundingVolume._orientedBoundingBox;
  const pointsVec3 = [];

  // 获取三个轴的位置
  const x = new Cartesian3();
  const y = new Cartesian3();
  const z = new Cartesian3();

  Matrix3.getColumn(halfAxes, 0, x);
  Matrix3.getColumn(halfAxes, 1, y);
  Matrix3.getColumn(halfAxes, 2, z);

  const halfXNegative = new Cartesian3();
  const halfXPositive = new Cartesian3();

  Cartesian3.subtract(center, x, halfXNegative)
  Cartesian3.add(center, x, halfXPositive)

  Cartesian3.subtract(halfXNegative, z, halfXNegative)
  Cartesian3.subtract(halfXPositive, z, halfXPositive)

  pointsVec3.push(Cartesian3.add(halfXNegative, y, new Cartesian3()))
  pointsVec3.push(Cartesian3.subtract(halfXNegative, y, new Cartesian3()))

  pointsVec3.push(Cartesian3.subtract(halfXPositive, y, new Cartesian3()))
  pointsVec3.push(Cartesian3.add(halfXPositive, y, new Cartesian3()))

  const pointsLL = [];
  pointsVec3.forEach(item=>{
    const ll = Cartographic.fromCartesian(item);
    pointsLL.push(
      Math.toDegrees(ll.longitude),
      Math.toDegrees(ll.latitude),
    )
  })

  return pointsLL;
}
相关推荐
数字新视界2 小时前
机房动环监控提升数据中心安全性
物联网·3d·数字孪生·三维可视化·数据可视化
3D阅阅三维模型轻量化及浏览平台2 小时前
上传 3D 模型自动识别、一键报价,拆解 3D 阅阅报价底层逻辑(机加工 / 钣金)
人工智能·3d·机加工·钣金加工·模具加工
总要学点什么1 天前
第63篇:3DTiles-大雁塔模型——190 块瓦片不是八叉树,抬高的却是球心那条法线
3d·数据挖掘·数据分析·gis·webgl
云飞云共享云桌面2 天前
设计师共享单台图形服务器,解决 SolidWorks大装配卡顿难题
运维·服务器·3d·自动化·电脑·制造
天桥下的卖艺者2 天前
R语言使用ggcube包轻松绘制文章中的各类3D图形
开发语言·3d·r语言
炽橙超真云2 天前
2D 工程图纸如何自动转成可编辑 3D 模型?拆解读图与建体两条技术路径(DXF/DWG/PDF 到 STEP)
算法·3d·工业智能·工业ai
3D阅阅三维模型轻量化及浏览平台3 天前
3D 阅阅:机加工与模具厂的智能看图报价实战
3d·机械加工·机加工·钣金加工·模具加工
福大大架构师每日一题3 天前
ComfyUI v0.40.0发布:资产系统、原生 LoRA 堆栈、Qwen 3.5、3D 输出、相机节点与多项合作节点全面更新
数码相机·3d
LuminWave3 天前
洛微科技重磅发布DM-Mini 3D ToF相机:以超近距精准感知,赋能机器人灵巧操作
科技·3d·机器人
Mark White3 天前
ICCV 2019【从颜色科学到相机】06_相机为什么有自己的“味道”?色调映射、3D LUT 与 JPEG
数码相机·3d