guanqb
2024-01-02 432456dea4e9f370f76a42f7b341596012c3c38f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// export default function midCartesian (start, end) {
//     let c1 = global.DC.Namespace.Cesium.Ellipsoid.WGS84.cartesianToCartographic(start)
//     let c2 = global.DC.Namespace.Cesium.Ellipsoid.WGS84.cartesianToCartographic(end)
//     let cm = new global.DC.Namespace.Cesium.EllipsoidGeodesic(c1, c2).interpolateUsingFraction(0.5)
 
//     let cc1 = global.DC.Transform.transformCartesianToWGS84(start)
//     let cc2 = global.DC.Transform.transformCartesianToWGS84(end)
 
//     let lng = (cc1.lng - cc2.lng) / 2 + cc1.lng
//     let lat = (cc1.lat - cc2.lat) / 2 + cc1.lat
//     let alt = (cc1.alt - cc2.alt) / 2 + cc1.alt
//     let cc3 = global.DC.Transform.transformWGS84ToCartesian({ lng, lat, alt })
//     return global.DC.Namespace.Cesium.Ellipsoid.WGS84.cartographicToCartesian(cm)
// }
 
export default function midCartesian(start, end) {
  let c1 = global.DC.Transform.transformCartesianToWGS84(start);
  let c2 = global.DC.Transform.transformCartesianToWGS84(end);
  let lng, lat, alt;
  if (c1.lng >= c2.lng) {
    lng = c1.lng - (c1.lng - c2.lng) / 2;
  } else {
    lng = c1.lng + (c2.lng - c1.lng) / 2;
  }
 
  if (c1.lat >= c2.lat) {
    lat = c1.lat - (c1.lat - c2.lat) / 2;
  } else {
    lat = c1.lat + (c2.lat - c1.lat) / 2;
  }
 
  if (c1.alt >= c2.alt) {
    alt = c1.alt - (c1.alt - c2.alt) / 2;
  } else {
    alt = c1.alt + (c2.alt - c1.alt) / 2;
  }
 
  let c3 = global.DC.Transform.transformWGS84ToCartesian({ lng, lat, alt });
 
  return c3;
}