二_叔 2024-08-08 15:47 采纳率: 50%
浏览 2

cesiumjs 实体反转的问题

img


使用cesiumjs画了一个立方体,在立方体里增加了一根倾斜的柱子。但是我想要这个柱子的弯曲部分是在下面。直的部分在上面,就是现在的效果反转过来。试了将数组反转,不行。还有没有其他办法了。以下是代码:


this.height = Math.abs(this.maxZ - this.minZ); // 计算立方体的高度
      const position = Cesium.Cartesian3.fromDegrees(this.resultPoints[0][0][0], this.resultPoints[0][0][1], 0); // 设置立方体的位置,顶部为0米(地面)
      const dimensions = new Cesium.Cartesian3(4000, 2000, this.height); // 设置立方体的长、宽、高(单位:米)
      const customColor = new Cesium.Color(0.0, 1.9, 0.0, 0.0);

      // 立方体
      const entity = this.viewer.entities.add({
        position: position,
        box: {
          dimensions: dimensions,
          material: Cesium.Color.GREEN.withAlpha(0.5),
          outline: true,
          outlineColor: customColor,
          heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND
        }
      });

      // 设置立方体底部0米到400米为红色
      const redBoxPosition = Cesium.Cartesian3.fromDegrees(this.resultPoints[0][0][0], this.resultPoints[0][0][1], 0); // 设置红色部分的位置,底部为0米,顶部为400米
      const redBoxDimensions = new Cesium.Cartesian3(4000, 2000, 400); // 设置红色部分的长、宽、高(单位:米)
      this.viewer.entities.add({
        position: redBoxPosition,
        box: {
          dimensions: redBoxDimensions,
          material: Cesium.Color.GHOSTWHITE.withAlpha(0.5),
          heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND
        }
      });
      var resultPoints = [
        [115.26323062877529, 35.681207787016405, 3059.986815], // 地面
        [115.2638059522679, 35.67938304240898, 2678.59475],
        [115.26403347831253, 35.678906718443876, 1000], // 顶端
      ];
      resultPoints.reverse();
      for (let i = 0; i < resultPoints.length - 1; i++) {
        const points = [resultPoints[i], resultPoints[i + 1]];
        this.createSlopedCylinder(points);
      }
    createSlopedCylinder(coords) {
      const positions = coords.map(coord => Cesium.Cartesian3.fromDegrees(coord[0], coord[1], coord[2]));
      this.viewer.entities.add({
        name: 'Sloped Cylinder',
        polylineVolume: {
          length: 2059.986815,
          positions: positions,
          shape: this.computeCircle(20), // 增加柱子的直径
          material: Cesium.Color.RED.withAlpha(0.5),
          outline: true,
          outlineColor: Cesium.Color.RED,
        }
      });
    },
    computeCircle(radius) {
      const positions = [];
      for (let i = 0; i < 360; i++) {
        const radians = Cesium.Math.toRadians(i);
        positions.push(new Cesium.Cartesian2(Math.cos(radians) * radius, Math.sin(radians) * radius));
      }
      return positions;
    },
  • 写回答

1条回答 默认 最新

  • 一直免费一直爽 2024-08-11 22:48
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在Vue.js中,如果你想要反转实体的顺序,你需要在创建实体时就设置其位置和高度。这可以通过在createEntity方法中添加一个参数来实现:

    const entity = this.viewer.entities.add({
      position: position,
      box: {
        dimensions: dimensions,
        material: Cesium.Color.GREEN.withAlpha(0.5),
        outline: true,
        outlineColor: customColor,
        heightReference: Cesium.HeightReference.RELATIVE_TO_GROUND
      },
      ...其他属性...
    });
    

    这样,在创建实体后,你可以通过改变实体的位置和高度来反转其顺序。

    对于图2中的实体反转问题,你可以将实体的位置和高度都设为相反的值,然后通过调整它们的方向来反转实体的顺序。例如,可以将实体的X坐标设置为负数,Y坐标保持不变,Z坐标也保持不变。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月8日

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证