@aibee/crc-bmap 0.14.29 → 0.14.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/meta.json CHANGED
@@ -617,7 +617,7 @@
617
617
  "format": "esm"
618
618
  },
619
619
  "../lib/src/utils/translate.js": {
620
- "bytes": 2020,
620
+ "bytes": 8231,
621
621
  "imports": [
622
622
  {
623
623
  "path": "core-js/modules/es.json.stringify.js",
@@ -628,6 +628,51 @@
628
628
  "path": "core-js/modules/web.dom-collections.iterator.js",
629
629
  "kind": "import-statement",
630
630
  "external": true
631
+ },
632
+ {
633
+ "path": "core-js/modules/es.set.difference.v2.js",
634
+ "kind": "import-statement",
635
+ "external": true
636
+ },
637
+ {
638
+ "path": "core-js/modules/es.set.intersection.v2.js",
639
+ "kind": "import-statement",
640
+ "external": true
641
+ },
642
+ {
643
+ "path": "core-js/modules/es.set.is-disjoint-from.v2.js",
644
+ "kind": "import-statement",
645
+ "external": true
646
+ },
647
+ {
648
+ "path": "core-js/modules/es.set.is-subset-of.v2.js",
649
+ "kind": "import-statement",
650
+ "external": true
651
+ },
652
+ {
653
+ "path": "core-js/modules/es.set.is-superset-of.v2.js",
654
+ "kind": "import-statement",
655
+ "external": true
656
+ },
657
+ {
658
+ "path": "core-js/modules/es.set.symmetric-difference.v2.js",
659
+ "kind": "import-statement",
660
+ "external": true
661
+ },
662
+ {
663
+ "path": "core-js/modules/es.set.union.v2.js",
664
+ "kind": "import-statement",
665
+ "external": true
666
+ },
667
+ {
668
+ "path": "core-js/modules/es.array.push.js",
669
+ "kind": "import-statement",
670
+ "external": true
671
+ },
672
+ {
673
+ "path": "core-js/modules/es.array.sort.js",
674
+ "kind": "import-statement",
675
+ "external": true
631
676
  }
632
677
  ],
633
678
  "format": "esm"
@@ -1066,7 +1111,7 @@
1066
1111
  "format": "esm"
1067
1112
  },
1068
1113
  "../lib/src/factory/material.js": {
1069
- "bytes": 17853,
1114
+ "bytes": 18099,
1070
1115
  "imports": [
1071
1116
  {
1072
1117
  "path": "core-js/modules/web.dom-collections.iterator.js",
@@ -1717,7 +1762,7 @@
1717
1762
  "format": "esm"
1718
1763
  },
1719
1764
  "../lib/src/elements/graphic.js": {
1720
- "bytes": 16374,
1765
+ "bytes": 17324,
1721
1766
  "imports": [
1722
1767
  {
1723
1768
  "path": "../../../node_modules/.pnpm/@swc+helpers@0.5.17/node_modules/@swc/helpers/esm/_extends.js",
@@ -2058,7 +2103,7 @@
2058
2103
  "format": "esm"
2059
2104
  },
2060
2105
  "../src/factory/material.ts": {
2061
- "bytes": 17913,
2106
+ "bytes": 18157,
2062
2107
  "imports": [
2063
2108
  {
2064
2109
  "path": "three/examples/jsm/lines/LineMaterial.js",
@@ -2452,7 +2497,7 @@
2452
2497
  "format": "esm"
2453
2498
  },
2454
2499
  "../src/utils/translate.ts": {
2455
- "bytes": 2012,
2500
+ "bytes": 7704,
2456
2501
  "imports": [
2457
2502
  {
2458
2503
  "path": "../types",
@@ -7378,6 +7423,51 @@
7378
7423
  "kind": "import-statement",
7379
7424
  "external": true
7380
7425
  },
7426
+ {
7427
+ "path": "core-js/modules/es.array.push.js",
7428
+ "kind": "import-statement",
7429
+ "external": true
7430
+ },
7431
+ {
7432
+ "path": "core-js/modules/es.array.sort.js",
7433
+ "kind": "import-statement",
7434
+ "external": true
7435
+ },
7436
+ {
7437
+ "path": "core-js/modules/es.set.difference.v2.js",
7438
+ "kind": "import-statement",
7439
+ "external": true
7440
+ },
7441
+ {
7442
+ "path": "core-js/modules/es.set.intersection.v2.js",
7443
+ "kind": "import-statement",
7444
+ "external": true
7445
+ },
7446
+ {
7447
+ "path": "core-js/modules/es.set.is-disjoint-from.v2.js",
7448
+ "kind": "import-statement",
7449
+ "external": true
7450
+ },
7451
+ {
7452
+ "path": "core-js/modules/es.set.is-subset-of.v2.js",
7453
+ "kind": "import-statement",
7454
+ "external": true
7455
+ },
7456
+ {
7457
+ "path": "core-js/modules/es.set.is-superset-of.v2.js",
7458
+ "kind": "import-statement",
7459
+ "external": true
7460
+ },
7461
+ {
7462
+ "path": "core-js/modules/es.set.symmetric-difference.v2.js",
7463
+ "kind": "import-statement",
7464
+ "external": true
7465
+ },
7466
+ {
7467
+ "path": "core-js/modules/es.set.union.v2.js",
7468
+ "kind": "import-statement",
7469
+ "external": true
7470
+ },
7381
7471
  {
7382
7472
  "path": "core-js/modules/web.dom-collections.iterator.js",
7383
7473
  "kind": "import-statement",
@@ -9648,6 +9738,7 @@
9648
9738
  "Wall",
9649
9739
  "WorkerPool",
9650
9740
  "addAlphaToHexColor",
9741
+ "assignGraphicDepthLevel",
9651
9742
  "buildSdfTextGeometry",
9652
9743
  "calc_angle",
9653
9744
  "calc_direction",
@@ -9835,7 +9926,7 @@
9835
9926
  "bytesInOutput": 414
9836
9927
  },
9837
9928
  "../lib/src/utils/translate.js": {
9838
- "bytesInOutput": 848
9929
+ "bytesInOutput": 2491
9839
9930
  },
9840
9931
  "../lib/src/utils/tween.js": {
9841
9932
  "bytesInOutput": 931
@@ -9865,10 +9956,10 @@
9865
9956
  "bytesInOutput": 3434
9866
9957
  },
9867
9958
  "../lib/src/elements/graphic.js": {
9868
- "bytesInOutput": 7606
9959
+ "bytesInOutput": 7531
9869
9960
  },
9870
9961
  "../lib/src/factory/material.js": {
9871
- "bytesInOutput": 14209
9962
+ "bytesInOutput": 14229
9872
9963
  },
9873
9964
  "../lib/src/factory/sdf-text.js": {
9874
9965
  "bytesInOutput": 7718
@@ -9970,7 +10061,7 @@
9970
10061
  "bytesInOutput": 4578
9971
10062
  },
9972
10063
  "../src/factory/material.ts": {
9973
- "bytesInOutput": 14209
10064
+ "bytesInOutput": 14227
9974
10065
  },
9975
10066
  "../src/factory/unique-key.ts": {
9976
10067
  "bytesInOutput": 368
@@ -10249,7 +10340,7 @@
10249
10340
  "bytesInOutput": 0
10250
10341
  }
10251
10342
  },
10252
- "bytes": 450542
10343
+ "bytes": 452178
10253
10344
  }
10254
10345
  }
10255
10346
  }
@@ -24,6 +24,12 @@ export declare class Graphic extends Object3D<GraphicEventMap> {
24
24
  constructor(context: Context, options: GraphicOptionsParam);
25
25
  getCenter(): Vector3;
26
26
  getSize(): Vector3;
27
+ /**
28
+ * 图元中心位置:多边形返回包围盒中心 + height / 2,也就是顶面中心
29
+ *
30
+ * 注意 center.setZ 是原地修改,center.z 改完之后就已经是顶面高度了,
31
+ * 不能再加一次 height / 2,否则锚点会跑到几何体上方(z = 1.5 * height)。
32
+ */
27
33
  getPosition(): Vector3;
28
34
  init(): void;
29
35
  initDoor(): void;
@@ -2,6 +2,8 @@ import { PointGeometry, PolygonGeometry, Door } from "../types";
2
2
  export declare function transformGraphicData(data: {
3
3
  geometry: PolygonGeometry | PointGeometry;
4
4
  deltaHeight?: number;
5
+ height?: number;
6
+ airHeight?: number;
5
7
  doors?: Door[];
6
8
  center?: [number, number];
7
9
  center_x?: number;
@@ -11,3 +13,28 @@ export declare function transformGraphicData(data: {
11
13
  center_coord_y?: number;
12
14
  }[], center: [number, number], baseIndex?: number): void;
13
15
  export declare function translatePosToCenter(cds: [number, number], center: [number, number]): [number, number];
16
+ interface DepthLevelItem {
17
+ geometry: PolygonGeometry | PointGeometry;
18
+ height?: number;
19
+ airHeight?: number;
20
+ deltaHeight?: number;
21
+ }
22
+ /**
23
+ * 给「同高度且包围盒相交」的图元分配不同的深度层级,写回 deltaHeight。
24
+ *
25
+ * 原来这里是 `item.deltaHeight = 0.00001 * (baseIndex + i + 1)`,有两个问题:
26
+ * 1. 量级(1e-5)远小于 1 个深度量化步长(≈0.0036),等于没做;
27
+ * 2. 随索引线性累加,图元一多末尾就整体抬起来 —— 要放大到有效量级(step >= 0.004),
28
+ * B1 这种 1530 个图元的楼层末尾会抬 6 个世界单位,超过房间高度(3)。
29
+ *
30
+ * 现在按「高度分组 + 扫描线 + 贪心着色」分层:
31
+ * 1. 先按顶面高度(airHeight + height)分组,只有同高度的图元才可能共面;
32
+ * 2. 组内按 bbox.minX 排序做扫描线,只和 x 区间有交叠的元素比较
33
+ * (B1 实测比较次数从 117 万降到 3.5 万);
34
+ * 3. 用 bbox 相交建图:它是「真实重叠」的超集,只会多要一两层,不会漏;
35
+ * 4. 贪心着色后,互相重叠的图元一定拿到不同层级,深度差 >= 1 个量化步长,不再闪烁。
36
+ *
37
+ * B1 实测:7 层封顶,总抬升 0.056 世界单位,全流程(含 bbox)约 9ms,只在加载时算一次。
38
+ */
39
+ export declare function assignGraphicDepthLevel(data: DepthLevelItem[], baseIndex?: number): void;
40
+ export {};