From 417c46988366e8c11f54230345f2e6840a0025f7 Mon Sep 17 00:00:00 2001
From: jihongshun <1151753686@qq.com>
Date: 星期三, 16 七月 2025 16:43:00 +0800
Subject: [PATCH] 项目相关

---
 src/views/system/project/components/addPorjectDialog.vue |  540 +++++++++++++++--------------------------------------------
 1 files changed, 139 insertions(+), 401 deletions(-)

diff --git a/src/views/system/project/components/addPorjectDialog.vue b/src/views/system/project/components/addPorjectDialog.vue
index c336406..bed4cfe 100644
--- a/src/views/system/project/components/addPorjectDialog.vue
+++ b/src/views/system/project/components/addPorjectDialog.vue
@@ -10,10 +10,8 @@
           <el-col :span=6>
               <el-card class="noScroll">
                 <div class="chooseModel">
-                  <!-- <el-button type="primary" @click='chooseModel'>娣诲姞璁惧</el-button> -->
                   <div class="fontJust">璁惧鍒楄〃</div>
                    <el-button @click="addDevice"> 鏂板</el-button>
-                   <el-button @click="draw"> 娓叉煋</el-button>
                   <el-table
                     :data="tableData"
                     max-height = '180'
@@ -73,6 +71,8 @@
 import CesiumMap from "../../../../utils/components/cesium-map.vue";
 import chooseDeviceDialog from './chooseDeviceDialog.vue';
 import chooseModelDialog from './chooseModelDialog.vue';
+import { obtainRealData} from "@/api/system/template"
+
 export  default{
   components: {
     CesiumMap,
@@ -83,353 +83,7 @@
     return{
        dialogVisible :true,
         tableData: [],
-        treeData:[
-    {
-        "createBy": null,
-        "createTime": null,
-        "updateBy": null,
-        "updateTime": null,
-        "remark": null,
-        "id": "3c5fc76c46c54c1187ff0bbcc092194b",
-        "modelId": "6257cf734cf94c7caae0dee2ac2231d1",
-        "deviceName": "璁惧3",
-        "deviceType": null,
-        "longitude": 125.01255362568844,
-        "latitude": 46.40803605631184,
-        "altitude": -0.029793403136164368,
-        "belongingRoute": "绾胯矾3",
-        "face": 30,
-        "label": "璁惧3",
-        "children": [
-            {
-                "id": "197ee63df18b0af0",
-                "label": "鍦伴潰鐐�0",
-                "longitude": 125.01254682821249,
-                "latitude": 46.40803726847258,
-                "height": 5.55594577349203,
-                "children": [
-                    {
-                        "id": "197ee63df18539a3",
-                        "label": "绌轰腑鐐�1",
-                        "longitude": 125.01128753149214,
-                        "latitude": 46.4082612208105,
-                        "height": 6.492838981926156
-                    }
-                ]
-            },
-            {
-                "id": "197ee63df18cce29",
-                "label": "鍦伴潰鐐�1",
-                "longitude": 125.01254709729052,
-                "latitude": 46.408037217374755,
-                "height": 6.4920524070572645,
-                "children": [
-                    {
-                        "id": "197ee63df18539a3",
-                        "label": "绌轰腑鐐�1",
-                        "longitude": 125.01128753149214,
-                        "latitude": 46.4082612208105,
-                        "height": 6.492838981926156
-                    }
-                ]
-            },
-            {
-                "id": "197ee63df188aa47",
-                "label": "鍦伴潰鐐�2",
-                "longitude": 125.01254783039168,
-                "latitude": 46.408036932133236,
-                "height": 7.424864167610554,
-                "children": [
-                    {
-                        "id": "197ee63df1845bc7",
-                        "label": "绌轰腑鐐�2",
-                        "longitude": 125.0112772702233,
-                        "latitude": 46.40822893934041,
-                        "height": 7.425650325131619
-                    }
-                ]
-            },
-            {
-                "id": "197ee63df199a530",
-                "label": "鍦伴潰鐐�3",
-                "longitude": 125.01255933758492,
-                "latitude": 46.40803691722688,
-                "height": 7.424719094681872,
-                "children": [
-                    {
-                        "id": "197ee63df1908bad",
-                        "label": "绌轰腑鐐�3",
-                        "longitude": 125.0138300519516,
-                        "latitude": 46.40822843553173,
-                        "height": 7.425505375628057
-                    }
-                ]
-            },
-            {
-                "id": "197ee63df198ebdf",
-                "label": "鍦伴潰鐐�4",
-                "longitude": 125.01256021566009,
-                "latitude": 46.408036958116895,
-                "height": 6.454013013927198,
-                "children": [
-                    {
-                        "id": "197ee63df192e649",
-                        "label": "绌轰腑鐐�4",
-                        "longitude": 125.0138360193498,
-                        "latitude": 46.40821153783117,
-                        "height": 6.454799694246353
-                    }
-                ]
-            },
-            {
-                "id": "197ee63df1989863",
-                "label": "鍦伴潰鐐�5",
-                "longitude": 125.01256037655455,
-                "latitude": 46.40803705402738,
-                "height": 5.5173191358810305,
-                "children": [
-                    {
-                        "id": "197ee63df19fb1cb",
-                        "label": "绌轰腑鐐�5",
-                        "longitude": 125.01384789553899,
-                        "latitude": 46.408163891976834,
-                        "height": 6.023658449094137
-                    }
-                ]
-            }
-        ]
-    },
-    {
-        "createBy": null,
-        "createTime": null,
-        "updateBy": null,
-        "updateTime": null,
-        "remark": null,
-        "id": "5d7c595466094e369c6ed9fdcab6ba50",
-        "modelId": "416a0c3361a9409495623eff5c19fb41",
-        "deviceName": "璁惧2",
-        "deviceType": null,
-        "longitude": 124.98495711631958,
-        "latitude": 46.60913669289758,
-        "altitude": -0.010649270561847658,
-        "belongingRoute": "绾胯矾2",
-        "face": 30,
-        "label": "璁惧2",
-        "children": [
-    {
-        "id": "197ee6746f64a423",
-        "label": "鍦伴潰鐐�0",
-        "longitude": 124.98496378621228,
-        "latitude": 46.60913556199556,
-        "height": 5.517188951102072,
-        "children": [
-            {
-                "id": "197ee6746f74e23a",
-                "label": "绌轰腑鐐�0",
-                "longitude": 124.98623131325654,
-                "latitude": 46.60892064074182,
-                "height": 5.517975962983238
-            }
-        ]
-    },
-    {
-        "id": "197ee6746f7d5cbb",
-        "label": "鍦伴潰鐐�1",
-        "longitude": 124.98496380688303,
-        "latitude": 46.609135777787124,
-        "height": 6.454174518781066,
-        "children": [
-            {
-                "id": "197ee6746f76d1f7",
-                "label": "绌轰腑鐐�1",
-                "longitude": 124.98624416031694,
-                "latitude": 46.60896064802085,
-                "height": 6.454961413485681
-            }
-        ]
-    },
-    {
-        "id": "197ee6746f7f75d3",
-        "label": "鍦伴潰鐐�2",
-        "longitude": 124.9849627026509,
-        "latitude": 46.6091358190698,
-        "height": 7.4247849395402445,
-        "children": [
-            {
-                "id": "197ee6746f7bd9af",
-                "label": "绌轰腑鐐�2",
-                "longitude": 124.98623564998626,
-                "latitude": 46.608936693647046,
-                "height": 7.425571052201786
-            }
-        ]
-    },
-    {
-        "id": "197ee6746f786c30",
-        "label": "鍦伴潰鐐�3",
-        "longitude": 124.98495139129277,
-        "latitude": 46.609136202860036,
-        "height": 7.385436810668997,
-        "children": [
-            {
-                "id": "197ee6746f7220cc",
-                "label": "绌轰腑鐐�3",
-                "longitude": 124.98365601680429,
-                "latitude": 46.60902531680706,
-                "height": 7.386222783506121
-            }
-        ]
-    },
-    {
-        "id": "197ee6746f70eac7",
-        "label": "鍦伴潰鐐�4",
-        "longitude": 124.98495046384257,
-        "latitude": 46.6091358802505,
-        "height": 6.453950090508963,
-        "children": [
-            {
-                "id": "197ee6746f74dd82",
-                "label": "绌轰腑鐐�4",
-                "longitude": 124.98366517250753,
-                "latitude": 46.60897886511559,
-                "height": 6.4547368247826675
-            }
-        ]
-    },
-    {
-        "id": "197ee6746f7ac599",
-        "label": "鍦伴潰鐐�5",
-        "longitude": 124.984950334958,
-        "latitude": 46.609135834916806,
-        "height": 5.516518597126235,
-        "children": [
-            {
-                "id": "197ee6746f7220cc",
-                "label": "绌轰腑鐐�3",
-                "longitude": 124.98365601680429,
-                "latitude": 46.60902531680706,
-                "height": 7.386222783506121
-            }
-        ]
-    }
-]
-    },
-    {
-        "createBy": null,
-        "createTime": null,
-        "updateBy": null,
-        "updateTime": null,
-        "remark": null,
-        "id": "f796896ac1c445c183456c500502bef0",
-        "modelId": "1bd29eedeaaf4a3da83212fbb1793fd5",
-        "deviceName": "璁惧1",
-        "deviceType": null,
-        "longitude": 125.14336018333184,
-        "latitude": 46.558980802047344,
-        "altitude": -0.0019061848373990704,
-        "belongingRoute": "绾胯矾1",
-        "face": 60,
-        "label": "璁惧1",
-        "children": [
-    {
-        "id": "197ee65dac710766",
-        "label": "鍦伴潰鐐�0",
-        "longitude": 125.14335344347126,
-        "latitude": 46.55898205916312,
-        "height": 5.556756800574575,
-        "children": [
-            {
-                "id": "197ee65dac75edbb",
-                "label": "绌轰腑鐐�0",
-                "longitude": 125.14209452120562,
-                "latitude": 46.55921686479333,
-                "height": 5.557543680589247
-            }
-        ]
-    },
-    {
-        "id": "197ee65dac76a522",
-        "label": "鍦伴潰鐐�1",
-        "longitude": 125.14335363213557,
-        "latitude": 46.55898182607255,
-        "height": 6.651683951645225,
-        "children": [
-            {
-                "id": "197ee65dac772525",
-                "label": "绌轰腑鐐�2",
-                "longitude": 125.14208232214659,
-                "latitude": 46.559179705774746,
-                "height": 7.425743074154034
-            }
-        ]
-    },
-    {
-        "id": "197ee65dac712c69",
-        "label": "鍦伴潰鐐�2",
-        "longitude": 125.14335446603941,
-        "latitude": 46.55898169199969,
-        "height": 7.424957062075383,
-        "children": [
-            {
-                "id": "197ee65dac772525",
-                "label": "绌轰腑鐐�2",
-                "longitude": 125.14208232214659,
-                "latitude": 46.559179705774746,
-                "height": 7.425743074154034
-            }
-        ]
-    },
-    {
-        "id": "197ee65dac7d469a",
-        "label": "鍦伴潰鐐�3",
-        "longitude": 125.14336581328187,
-        "latitude": 46.55898112552418,
-        "height": 7.385369522508276,
-        "children": [
-            {
-                "id": "197ee65dac74b335",
-                "label": "绌轰腑鐐�3",
-                "longitude": 125.14460210993491,
-                "latitude": 46.55869709406983,
-                "height": 11.416007026601994
-            }
-        ]
-    },
-    {
-        "id": "197ee65dac7817ff",
-        "label": "鍦伴潰鐐�4",
-        "longitude": 125.14336674537108,
-        "latitude": 46.55898211835868,
-        "height": 6.48472072335647,
-        "children": [
-            {
-                "id": "197ee65dac7602d7",
-                "label": "绌轰腑鐐�4",
-                "longitude": 125.14461900411601,
-                "latitude": 46.559233306964344,
-                "height": 6.485507501890941
-            }
-        ]
-    },
-    {
-        "id": "197ee65dac74500d",
-        "label": "鍦伴潰鐐�5",
-        "longitude": 125.14336684823117,
-        "latitude": 46.55898218335435,
-        "height": 5.556803725040882,
-        "children": [
-            {
-                "id": "197ee65dac7d10f5",
-                "label": "绌轰腑鐐�5",
-                "longitude": 125.14464805019499,
-                "latitude": 46.559149450894154,
-                "height": 7.227587215704448
-            }
-        ]
-    }
-]
-    }
-],
+        treeData:[],
         defaultProps: {
           children: 'children',
           label: 'label'
@@ -442,13 +96,10 @@
   },
   methods:{
     handleClose(){
-      console.log("close")
       this.dialogVisible = false
-      this.$emit('close')
     },
     flyToLocal(row){
       console.log(row)
-      console.log(viewer)
        const position = Cesium.Cartesian3.fromDegrees(row.longitude,row.latitude, row.altitude);
 
       // 璁剧疆妯″瀷鏂瑰悜锛堝彲閫夛級
@@ -466,7 +117,7 @@
         position: position,
         orientation: orientation,
         model: {
-          uri: "http://192.168.1.5:9000/tower/2025/07/01/tower_20250701145739A004.glb", // 鏇挎崲鎴愪綘鐨勬ā鍨嬭矾寰�
+          uri: row?.ardTowerModel.modelRoute, // 鏇挎崲鎴愪綘鐨勬ā鍨嬭矾寰�
           scale: 1,
         },
         label: {
@@ -514,29 +165,27 @@
             type: 'warning'
           })
         }
-        this.tableData = this.tableData.concat(arr)
+        this.tableData = this.treeData.concat(arr)
       }
       const dealTreeData =this.dealTee()
-      // this.treeData = dealTreeData
-      console.log(this.treeData)
+      this.treeData = dealTreeData
     },
     dealTee(){
+      console.log(this.tableData)
      return  this.tableData.map(item => ({
         ...item,
         label: item.deviceName,
-        children: []
       }));
     },
     deleteData(row){
       // 鎵惧埌 id 涓� "1" 鐨勫厓绱犵储寮�
       const index = this.tableData.findIndex(item => item.id === row.id);
-
       // 濡傛灉鎵惧埌浜嗭紝鍒犻櫎璇ュ厓绱�
       if (index !== -1) {
         this.tableData.splice(index, 1);
       }
       const dealTreeData = this.dealTee()
-      // this.treeData = dealTreeData
+      this.treeData = dealTreeData
     },
     chooseModel(row){
       this.deviceId = row.id
@@ -548,24 +197,65 @@
     receiveModel(obj){
       //deal閫昏緫
       console.log(obj)
+      let flightTemplateId =obj.modelObj.id
+      let deviceId = obj.deviceId
       this.dealTableTemplate(obj)
+      // let 
+      obtainRealData(flightTemplateId,deviceId).then(res=>{
+        console.log(res)
+        let treeDealData = this.transformFlightData(res.data?.coordinateSystemVoS || [])
+        console.log(treeDealData)
+        this.dealTreeMerge(obj,treeDealData)
+        // const aaa = this.rotateAllPoints(this.treeData || [],res.data.longitude,res.data.latitude,res.data.height)
+         this.drawConnectionsWithLabels(this.treeData)
+      })
       // this.dealTreeMerge(obj)
     },
+    //杩斿洖鏁版嵁杞崲鏍戠粨鏋�
+    transformFlightData(data) {
+      const result = [];
+
+      data.forEach(item => {
+        // 鎵惧埌绗竴涓� groundPoint锛屼綔涓轰唬琛�
+        const groundPoint = item.groundPointVo?.[0];
+
+        // 鐢熸垚 children 鑺傜偣
+        const children = groundPoint ? [{
+          id: groundPoint.id,
+          label: groundPoint.targetName,
+          longitude: groundPoint.longitude,
+          latitude: groundPoint.latitude,
+          height: groundPoint.height
+        }] : [];
+
+        // 鐢熸垚绌轰腑鐐�
+        result.push({
+          id: item.id,
+          label: item.targetName,
+          longitude: item.longitude,
+          latitude: item.latitude,
+          height: item.altitude,
+          children
+        });
+      });
+
+      return result;
+    },
     dealTableTemplate(obj){
-      const target = this.tableData.find(item => item.id === obj.deviceId)
-      if (target) {
-        this.$set(target, 'mode', obj.modelObj.name) // 鉁� Vue2 闇�瑕佷娇鐢� $set 浠ョ‘淇濆搷搴斿紡
+      const targetTableData = this.tableData.find(item => item.id === obj.deviceId)
+      const targetTreeData = this.treeData.find(item => item.id === obj.deviceId)
+      if (targetTableData) {
+        this.$set(targetTableData, 'mode', obj.modelObj.templateName) // 鉁� Vue2 闇�瑕佷娇鐢� $set 浠ョ‘淇濆搷搴斿紡
+      }
+      if (targetTreeData) {
+        this.$set(targetTreeData, 'mode', obj.modelObj.templateName) // 鉁� Vue2 闇�瑕佷娇鐢� $set 浠ョ‘淇濆搷搴斿紡
       }
     },
-    dealTreeMerge(obj){
-      let newChildrenData= [
-        { id: 100, label: '鏂板瓙鑺傜偣A',children:[{id: 1001,label: '鏂板瓙鑺傜偣A-1'}]},
-        { id: 101, label: '鏂板瓙鑺傜偣B' }
-      ]
+    dealTreeMerge(obj,data){
       this.treeData.forEach(item => {
         if(item.id == obj.deviceId) {
           // 鏇挎崲绗竴灞傛瘡涓妭鐐圭殑 children
-          this.$set(item, 'children', JSON.parse(JSON.stringify(newChildrenData)));
+          this.$set(item, 'children', JSON.parse(JSON.stringify(data)));
         }
       });
     },
@@ -575,66 +265,67 @@
       devices.forEach(device => {
         if (!Array.isArray(device.children)) return;
 
-        device.children.forEach(groundPoint => {
-          console.log(groundPoint)
-          const groundPos = Cesium.Cartesian3.fromDegrees(
-            groundPoint.longitude,
-            groundPoint.latitude,
-            groundPoint.height
+        device.children.forEach(airPoint => {
+          // 绌轰腑鐐逛綅缃�
+          const airPos = Cesium.Cartesian3.fromDegrees(
+            airPoint.longitude,
+            airPoint.latitude,
+            airPoint.height
           );
 
-          // 鉁� 鍦伴潰鐐癸細娣诲姞瀹炰綋 + label
+          // 鉁� 娣诲姞绌轰腑鐐瑰疄浣撳拰 label
           viewer.entities.add({
-            position: groundPos,
+            position: airPos,
             point: {
               pixelSize: 6,
-              color: Cesium.Color.BLUE
+              color: Cesium.Color.YELLOW
             },
             label: {
-              text: groundPoint.label || '',
+              text: airPoint.label || '',
               font: '14px sans-serif',
-              fillColor: Cesium.Color.WHITE,
+              fillColor: Cesium.Color.YELLOW,
               style: Cesium.LabelStyle.FILL_AND_OUTLINE,
-              outlineWidth: 2,
               outlineColor: Cesium.Color.BLACK,
+              outlineWidth: 2,
               verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
               pixelOffset: new Cesium.Cartesian2(0, -12)
             }
           });
 
-          // 閬嶅巻绌轰腑鐐�
-          if (Array.isArray(groundPoint.children)) {
-            groundPoint.children.forEach(airPoint => {
-              console.log(airPos)
-              const airPos = Cesium.Cartesian3.fromDegrees(
-                airPoint.longitude,
-                airPoint.latitude,
-                airPoint.height
+          airPoints.push(airPos);
+
+          // 閬嶅巻鍦伴潰鐐癸紙瀛愰」锛�
+          if (Array.isArray(airPoint.children)) {
+            airPoint.children.forEach(groundPoint => {
+              const groundPos = Cesium.Cartesian3.fromDegrees(
+                groundPoint.longitude,
+                groundPoint.latitude,
+                groundPoint.height
               );
 
-              // 鉁� 绌轰腑鐐癸細娣诲姞瀹炰綋 + label
+              // 鉁� 娣诲姞鍦伴潰鐐瑰疄浣撳拰 label
               viewer.entities.add({
-                position: airPos,
+                position: groundPos,
                 point: {
                   pixelSize: 6,
-                  color: Cesium.Color.YELLOW
+                  color: Cesium.Color.BLUE
                 },
                 label: {
-                  text: airPoint.label || '',
+                  text: groundPoint.label || '',
                   font: '14px sans-serif',
-                  fillColor: Cesium.Color.YELLOW,
+                  fillColor: Cesium.Color.WHITE,
                   style: Cesium.LabelStyle.FILL_AND_OUTLINE,
-                  outlineWidth: 2,
                   outlineColor: Cesium.Color.BLACK,
+                  outlineWidth: 2,
                   verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
                   pixelOffset: new Cesium.Cartesian2(0, -12)
                 }
               });
 
-              // 鉁� 鍦伴潰鐐� 鉃� 绌轰腑鐐� 钃濊壊铏氱嚎
+              // 鉁� 钃濊壊铏氱嚎杩炴帴锛氱┖涓偣 鉃� 鍦伴潰鐐�
               viewer.entities.add({
                 polyline: {
-                  positions: [groundPos, airPos],
+                  positions: [airPos, groundPos],
                   width: 2,
                   material: new Cesium.PolylineDashMaterialProperty({
                     color: Cesium.Color.BLUE,
@@ -642,14 +333,12 @@
                   })
                 }
               });
-
-              airPoints.push(airPos);
             });
           }
         });
       });
 
-      // 鉁� 鎵�鏈夌┖涓偣 鉃� 榛勮壊瀹炵嚎杩炴帴
+      // 鉁� 榛勮壊瀹炵嚎杩炴帴鎵�鏈夌┖涓偣
       if (airPoints.length > 1) {
         viewer.entities.add({
           polyline: {
@@ -660,8 +349,57 @@
         });
       }
     },
-    draw(){
-      this.drawConnectionsWithLabels(this.treeData)
+    rotateAllPoints(dataList,towerLongitude,towerLatitude,towerhHight) {
+      return dataList.map(item => {
+        console.log(item)
+        console.log(towerLongitude)
+        console.log(towerLatitude)
+        console.log(towerhHight)
+        const groundPoint = Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude, item.height);
+        const towerPoint = Cesium.Cartesian3.fromDegrees(towerLongitude, towerLatitude, towerhHight);
+        let rotationAngle = Cesium.Math.toRadians(135)
+        // 鏃嬭浆鍦伴潰鐐规湰韬紙浼氬彉锛屼絾缁曡嚜韬棆杞笉浼氱Щ鍔級
+        const newGroundPoint = this.rotateAroundPoint( groundPoint,towerPoint, rotationAngle);
+        const newGroundCarto = Cesium.Cartographic.fromCartesian(newGroundPoint);
+        const newGround = {
+          ...item,
+          longitude: Cesium.Math.toDegrees(newGroundCarto.longitude),
+          latitude: Cesium.Math.toDegrees(newGroundCarto.latitude),
+          height: newGroundCarto.height
+        };
+        console.log(newGround)
+        // 澶勭悊瀛愮┖涓偣
+        newGround.children = item.children.map(child => {
+          const airPoint = Cesium.Cartesian3.fromDegrees(child.longitude, child.latitude, child.height);
+          const rotatedAirPoint = this.rotateAroundPoint( airPoint,towerPoint, rotationAngle);
+          const rotatedAirCarto = Cesium.Cartographic.fromCartesian(rotatedAirPoint);
+
+          return {
+            ...child,
+            longitude: Cesium.Math.toDegrees(rotatedAirCarto.longitude),
+            latitude: Cesium.Math.toDegrees(rotatedAirCarto.latitude),
+            height: rotatedAirCarto.height
+          };
+        });
+
+        return newGround;
+      });
+    },
+    //聽璁$畻鐐笰缁曠偣B閫嗘椂閽堟棆杞寚瀹氳搴﹀悗鐨勬柊浣嶇疆
+    //  绌轰腑鐐规垨鑰呭湴闈㈢偣绗涘崱灏斿潗鏍� 濉旂殑绗涘崱灏斿潗鏍�    濉旂殑鏈濆悜鍊�
+    rotateAroundPoint(startPoint,pivotPoint,rotationAngle) {
+      //聽鍒涘缓涓�涓粠B鐐瑰埌鏈湴鍧愭爣绯荤殑杞崲鐭╅樀锛堜笢鏂瑰悜涓篨杞达紝鍖楁柟鍚戜负Y杞达紝鍨傜洿鏂瑰悜涓篫杞达級
+     const transformationMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(pivotPoint);
+      //聽鑾峰彇涓栫晫鍧愭爣绯诲埌鏈湴鍧愭爣绯荤殑杞崲鐭╅樀
+     const inverseTransformationMatrix = Cesium.Matrix4.inverse(transformationMatrix,new Cesium.Matrix4());
+      //聽灏咥鐐硅浆鎹㈠埌灞�閮ㄥ潗鏍囩郴涓�
+     const localStartPoint = Cesium.Matrix4.multiplyByPoint(inverseTransformationMatrix, startPoint,new Cesium.Cartesian3());
+      //聽璁$畻A鐐瑰湪灞�閮ㄥ潗鏍囩郴涓�嗘椂閽堟棆杞寚瀹氳搴﹀悗鐨勬柊浣嶇疆
+     const rotatedX = localStartPoint.x * Math.cos(rotationAngle) + localStartPoint.y * Math.sin(rotationAngle);
+     const rotatedY = localStartPoint.y * Math.cos(rotationAngle) - localStartPoint.x * Math.sin(rotationAngle);
+     const rotatedZ = localStartPoint.z; //聽Z杞村潗鏍囦繚鎸佷笉鍙�
+      //聽灏嗘棆杞悗鐨勫眬閮ㄥ潗鏍囪浆鎹㈠洖涓栫晫鍧愭爣绯�
+     return Cesium.Matrix4.multiplyByPoint(transformationMatrix,聽new聽Cesium.Cartesian3(rotatedX,聽rotatedY,聽rotatedZ),聽new聽Cesium.Cartesian3());
     }
   }
 }

--
Gitblit v1.9.3