Browse Source

webstrom-虚拟网格

zhiyuan-007 2 days ago
parent
commit
3ef0ca2878
1 changed files with 88 additions and 42 deletions
  1. 88 42
      src/components/mapJK.vue

+ 88 - 42
src/components/mapJK.vue

@@ -3119,7 +3119,7 @@ export default {
       }
 
 
-      function generateGrid(startPoint, xRange, yRange, zRange, size) {
+      function generateGrid(startPoint,xRange, yRange, zRange, size) {
         const grid = [];
 
         // 计算每个方向的立方体数量
@@ -3128,9 +3128,9 @@ export default {
         const zCount = Math.ceil(zRange / size);
 
         // 生成网格点
-        for (let x = 0; x < xCount; x++) {
-          for (let y = 0; y < yCount; y++) {
-            for (let z = 0; z < zCount; z++) {
+        for (let x = origin.x; x < xCount; x++) {
+          for (let y = origin.y; y < yCount; y++) {
+            for (let z = origin.z; z < zCount; z++) {
               grid.push({
                 x: startPoint.x + x * size,
                 y: startPoint.y + y * size,
@@ -3145,6 +3145,41 @@ export default {
       }
 
 
+      function createBoundingBoxFromRings(rings) {
+        // 初始化四至范围
+        let xmin = Infinity, ymin = Infinity;
+        let xmax = -Infinity, ymax = -Infinity;
+
+        // 遍历所有点找到四至范围
+        rings.forEach(ring => {
+          ring.forEach(point => {
+            const [x, y] = point;
+            xmin = Math.min(xmin, x);
+            ymin = Math.min(ymin, y);
+            xmax = Math.max(xmax, x);
+            ymax = Math.max(ymax, y);
+          });
+        });
+
+        // 创建矩形面坐标
+        const rectangle = [
+          [xmin, ymin], // 左下
+          [xmax, ymin], // 右下
+          [xmax, ymax], // 右上
+          [xmin, ymax], // 左上
+          [xmin, ymin]  // 闭合
+        ];
+
+        return {
+          origin: [xmin, ymin], // 原点
+          length: xmax - xmin,  // 长度
+          width: ymax - ymin
+        };
+      }
+
+
+
+
       //获取当前场景
       function getPowerCube(params){
         let id = params.id;
@@ -3157,25 +3192,6 @@ export default {
         let fields = params.fields;
 
 
-
-
-        // const cubeGrid = generateGrid({
-        //   x:500,
-        //   y:-1500,
-        //   z:0,
-        // }, 4000, 4000, 120,32);
-        // showThreeCubeDetail({
-        //   "id":"test",
-        //   "status":"show",
-        //   "size": {
-        //     x:32,
-        //     y:32,
-        //     z:32
-        //   },
-        //   "points":cubeGrid,
-        //   "depthTest":false
-        // })
-
         if(status === "hide"){
           showThreeCubeDetail({
             id:params.id,
@@ -3184,25 +3200,55 @@ export default {
           currentShowGridParams = null;
           return
         }
-        currentShowGridParams = {
-          id,
-          level,
-          minZ,
-          maxZ,
-          rings,
-          fields
-        };
-        getSixPowerByPolygon({
-          id,
-          status,
-          minZ,
-          maxZ,
-          level,
-          fields,
-          rings,
-          deepShow,
-          scrollId:"",
-        });
+        //备用方案:根据rings四至范围生成矩形面,获取左下角的点为原点,距离分别为长、宽
+
+        let { origin,length,width } = createBoundingBoxFromRings(rings);
+
+        debugger
+        const cubeGrid = generateGrid({
+          x:origin[0],
+          y:origin[1],
+          z:minZ,
+        }, length, width, maxZ-minZ,32);
+        showThreeCubeDetail({
+          "id":"test",
+          "status":"show",
+          "size": {
+            x:32,
+            y:32,
+            z:32
+          },
+          "points":cubeGrid,
+          "depthTest":false
+        })
+        //
+        // if(status === "hide"){
+        //   showThreeCubeDetail({
+        //     id:params.id,
+        //     status:"hide"
+        //   });
+        //   currentShowGridParams = null;
+        //   return
+        // }
+        // currentShowGridParams = {
+        //   id,
+        //   level,
+        //   minZ,
+        //   maxZ,
+        //   rings,
+        //   fields
+        // };
+        // getSixPowerByPolygon({
+        //   id,
+        //   status,
+        //   minZ,
+        //   maxZ,
+        //   level,
+        //   fields,
+        //   rings,
+        //   deepShow,
+        //   scrollId:"",
+        // });
       }
 
       // 获取当前场景-递归获取权重数据