@mapcatch/util 1.0.9 → 1.0.10-a

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.
Files changed (70) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/dist/catchUtil.min.esm.js +9906 -10852
  3. package/dist/catchUtil.min.js +25 -27
  4. package/package.json +1 -2
  5. package/src/constants/bmap_types.js +2 -2
  6. package/src/constants/crs_types.js +22 -0
  7. package/src/constants/default_layers.js +9 -9
  8. package/src/constants/index.js +3 -2
  9. package/src/constants/layer_folders.js +4 -4
  10. package/src/constants/measurement_fields.js +198 -0
  11. package/src/gl-operations/shaders/fragment/convertDem.js +2 -2
  12. package/src/gl-operations/shaders/fragment/convolutionSmooth.js +2 -2
  13. package/src/gl-operations/shaders/fragment/diffCalc.js +2 -2
  14. package/src/gl-operations/shaders/fragment/drawResult.js +2 -2
  15. package/src/gl-operations/shaders/fragment/hillshading/hsAdvAmbientShadows.js +2 -2
  16. package/src/gl-operations/shaders/fragment/hillshading/hsAdvFinalBaselayer.js +2 -2
  17. package/src/gl-operations/shaders/fragment/hillshading/hsAdvNormals.js +2 -2
  18. package/src/gl-operations/shaders/fragment/hillshading/hsAdvSoftShadows.js +2 -2
  19. package/src/gl-operations/shaders/fragment/interpolateColor.js +2 -2
  20. package/src/gl-operations/shaders/fragment/interpolateColorOnly.js +2 -2
  21. package/src/gl-operations/shaders/fragment/interpolateValue.js +2 -2
  22. package/src/gl-operations/shaders/fragment/multiAnalyze1Calc.js +2 -2
  23. package/src/gl-operations/shaders/fragment/multiAnalyze2Calc.js +2 -2
  24. package/src/gl-operations/shaders/fragment/multiAnalyze3Calc.js +2 -2
  25. package/src/gl-operations/shaders/fragment/multiAnalyze4Calc.js +2 -2
  26. package/src/gl-operations/shaders/fragment/multiAnalyze5Calc.js +2 -2
  27. package/src/gl-operations/shaders/fragment/multiAnalyze6Calc.js +2 -2
  28. package/src/gl-operations/shaders/vertex/double.js +2 -2
  29. package/src/gl-operations/shaders/vertex/multi3.js +2 -2
  30. package/src/gl-operations/shaders/vertex/multi4.js +2 -2
  31. package/src/gl-operations/shaders/vertex/multi5.js +2 -2
  32. package/src/gl-operations/shaders/vertex/multi6.js +2 -2
  33. package/src/gl-operations/shaders/vertex/singleNotTransformed.js +2 -2
  34. package/src/index.js +0 -2
  35. package/src/util.js +31 -51
  36. package/src/constants/map_view_mode.js +0 -10
  37. package/src/exif/exif.js +0 -37
  38. package/src/exif/gps_tags.js +0 -33
  39. package/src/exif/ifd1_tags.js +0 -22
  40. package/src/exif/index.js +0 -33
  41. package/src/exif/iptc_field_map.js +0 -12
  42. package/src/exif/parse_image.js +0 -445
  43. package/src/exif/string_values.js +0 -137
  44. package/src/exif/tags.js +0 -75
  45. package/src/exif/tiff_tags.js +0 -35
  46. package/src/exif/util.js +0 -108
  47. package/src/image-size/detector.js +0 -24
  48. package/src/image-size/fromFile.js +0 -55
  49. package/src/image-size/index.js +0 -2
  50. package/src/image-size/lookup.js +0 -37
  51. package/src/image-size/types/bmp.js +0 -10
  52. package/src/image-size/types/cur.js +0 -16
  53. package/src/image-size/types/dds.js +0 -10
  54. package/src/image-size/types/gif.js +0 -11
  55. package/src/image-size/types/heif.js +0 -35
  56. package/src/image-size/types/icns.js +0 -112
  57. package/src/image-size/types/ico.js +0 -74
  58. package/src/image-size/types/index.js +0 -43
  59. package/src/image-size/types/j2c.js +0 -11
  60. package/src/image-size/types/jp2.js +0 -22
  61. package/src/image-size/types/jpg.js +0 -157
  62. package/src/image-size/types/ktx.js +0 -18
  63. package/src/image-size/types/png.js +0 -36
  64. package/src/image-size/types/pnm.js +0 -74
  65. package/src/image-size/types/psd.js +0 -10
  66. package/src/image-size/types/svg.js +0 -100
  67. package/src/image-size/types/tga.js +0 -14
  68. package/src/image-size/types/tiff.js +0 -92
  69. package/src/image-size/types/utils.js +0 -83
  70. package/src/image-size/types/webp.js +0 -67
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapcatch/util",
3
- "version": "1.0.9",
3
+ "version": "1.0.10-a",
4
4
  "main": "./dist/catchUtil.min.esm.js",
5
5
  "repository": "",
6
6
  "author": "wanyanyan",
@@ -19,7 +19,6 @@
19
19
  "lodash": "^4.17.21",
20
20
  "moment": "^2.29.4",
21
21
  "regl": "^2.1.0",
22
- "spark-md5": "^3.0.2",
23
22
  "upng-js": "^2.1.0",
24
23
  "uuid": "^9.0.0"
25
24
  },
@@ -7,8 +7,8 @@ export default [
7
7
  { // 影像地图
8
8
  type: 'raster',
9
9
  tileSize: 256,
10
- tiles: ['https://t0.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=bfc12ce6bd94a4449ad626b8a0b709d0'],
11
- maxzoom: 18,
10
+ tiles: ['http://ecn.t3.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=1'],
11
+ maxzoom: 19,
12
12
  layerType:'bmap'
13
13
  },
14
14
  { // 影像标注
@@ -0,0 +1,22 @@
1
+ export default {
2
+ LOCAL_ENU: {
3
+ code: 0,
4
+ name: 'LOCAL_ENU'
5
+ },
6
+ LOCAL: {
7
+ code: 1,
8
+ name: 'LOCAL'
9
+ },
10
+ GEOGCS: {
11
+ code: 2,
12
+ name: 'Geographic'
13
+ },
14
+ PROJCS: {
15
+ code: 3,
16
+ name: 'Projected'
17
+ },
18
+ GEOCCS: {
19
+ code: 4,
20
+ name: 'Geocentric'
21
+ }
22
+ }
@@ -29,16 +29,16 @@ export default [
29
29
  group: 'output',
30
30
  visible: true,
31
31
  opacity: 1,
32
- class: 'mesh3d'
32
+ class: '3d_tiles'
33
+ },
34
+ {
35
+ type: 'point_cloud',
36
+ name: '三维点云',
37
+ group: 'output',
38
+ visible: false,
39
+ opacity: 1,
40
+ class: 'pnts'
33
41
  },
34
- // {
35
- // type: 'point_cloud',
36
- // name: '三维点云',
37
- // group: 'output',
38
- // visible: false,
39
- // opacity: 1,
40
- // dataTypes: ['normal']
41
- // },
42
42
  {
43
43
  type: 'ndvi',
44
44
  name: '植被指数(NDVI)',
@@ -5,6 +5,7 @@ export {default as colors} from './colors'
5
5
  export {default as defaultLayers} from './default_layers'
6
6
  export {default as layerFolders} from './layer_folders'
7
7
  export {default as layerIcons} from './layer_icons'
8
- export {default as mapViewModes} from './map_view_mode'
9
8
  export {default as taskParams} from './task_params'
10
- export {default as tools} from './tools'
9
+ export {default as tools} from './tools'
10
+ export {default as measurementFields} from './measurement_fields'
11
+ export {default as crsTypes} from './crs_types'
@@ -1,6 +1,6 @@
1
1
  export default {
2
- dom: 'tile',
3
- dsm: 'dsm_tile',
4
- ndvi: 'ndvi_tile',
5
- tmp: 'tem_tile'
2
+ dom: 'dom_tiles',
3
+ dsm: 'dsm_tiles',
4
+ ndvi: 'ndvi_tiles',
5
+ tmp: 'tem_tiles'
6
6
  }
@@ -0,0 +1,198 @@
1
+ export default {
2
+ normal: {
3
+ point: [
4
+ {
5
+ field: 'height',
6
+ label: '高程',
7
+ unit: 'm'
8
+ }
9
+ ],
10
+ line: [
11
+ {
12
+ field: 'distance2d',
13
+ label: '平面长度',
14
+ unit: 'm'
15
+ },
16
+ {
17
+ field: 'distance3d',
18
+ label: '空间长度',
19
+ unit: 'm'
20
+ },
21
+ {
22
+ field: 'slope_min',
23
+ label: '最小坡度',
24
+ unit: '°'
25
+ },
26
+ {
27
+ field: 'slope_max',
28
+ label: '最大坡度',
29
+ unit: '°'
30
+ },
31
+ {
32
+ field: 'height_min',
33
+ label: '最小高程',
34
+ unit: 'm'
35
+ },
36
+ {
37
+ field: 'height_max',
38
+ label: '最大高程',
39
+ unit: 'm'
40
+ }
41
+ ],
42
+ polygon: [
43
+ {
44
+ field: 'area2d',
45
+ label: '平面面积',
46
+ unit: '㎡'
47
+ },
48
+ {
49
+ field: 'area3d',
50
+ label: '空间面积',
51
+ unit: '㎡'
52
+ },
53
+ {
54
+ field: 'distance2d',
55
+ label: '平面周长',
56
+ unit: 'm'
57
+ },
58
+ {
59
+ field: 'distance3d',
60
+ label: '空间周长',
61
+ unit: 'm'
62
+ },
63
+
64
+ {
65
+ field: 'height_min',
66
+ label: '最小高程',
67
+ unit: 'm'
68
+ },
69
+ {
70
+ field: 'height_max',
71
+ label: '最大高程',
72
+ unit: 'm'
73
+ }
74
+ ]
75
+ },
76
+ infrared: {
77
+ point: [
78
+ {
79
+ field: 'temprature',
80
+ label: '温度',
81
+ unit: '℃'
82
+ }
83
+ ],
84
+ line: [
85
+ {
86
+ field: 'distance2d',
87
+ label: '长度',
88
+ unit: 'm'
89
+ },
90
+ {
91
+ field: 'temprature_min',
92
+ label: '最低温度',
93
+ unit: '℃'
94
+ },
95
+ {
96
+ field: 'temprature_max',
97
+ label: '最高温度',
98
+ unit: '℃'
99
+ }
100
+ ],
101
+ polygon: [
102
+ {
103
+ field: 'area2d',
104
+ label: '面积',
105
+ unit: '㎡'
106
+ },
107
+ {
108
+ field: 'distance2d',
109
+ label: '周长',
110
+ unit: 'm'
111
+ },
112
+ {
113
+ field: 'temprature_min',
114
+ label: '最低温度',
115
+ unit: '℃'
116
+ },
117
+ {
118
+ field: 'temprature_max',
119
+ label: '最高温度',
120
+ unit: '℃'
121
+ }
122
+ ]
123
+ },
124
+ multispectral: {
125
+ point: [
126
+ {
127
+ field: 'height',
128
+ label: '高程',
129
+ unit: 'm'
130
+ }
131
+ ],
132
+ line: [
133
+ {
134
+ field: 'distance2d',
135
+ label: '平面长度',
136
+ unit: 'm'
137
+ },
138
+ {
139
+ field: 'distance3d',
140
+ label: '空间长度',
141
+ unit: 'm'
142
+ },
143
+ {
144
+ field: 'slope_min',
145
+ label: '最小坡度',
146
+ unit: '°'
147
+ },
148
+ {
149
+ field: 'slope_max',
150
+ label: '最大坡度',
151
+ unit: '°'
152
+ },
153
+ {
154
+ field: 'height_min',
155
+ label: '最小高程',
156
+ unit: 'm'
157
+ },
158
+ {
159
+ field: 'height_max',
160
+ label: '最大高程',
161
+ unit: 'm'
162
+ }
163
+ ],
164
+ polygon: [
165
+ {
166
+ field: 'area2d',
167
+ label: '平面面积',
168
+ unit: '㎡'
169
+ },
170
+ {
171
+ field: 'area3d',
172
+ label: '空间面积',
173
+ unit: '㎡'
174
+ },
175
+ {
176
+ field: 'distance2d',
177
+ label: '平面周长',
178
+ unit: 'm'
179
+ },
180
+ {
181
+ field: 'distance3d',
182
+ label: '空间周长',
183
+ unit: 'm'
184
+ },
185
+
186
+ {
187
+ field: 'height_min',
188
+ label: '最小高程',
189
+ unit: 'm'
190
+ },
191
+ {
192
+ field: 'height_max',
193
+ label: '最大高程',
194
+ unit: 'm'
195
+ }
196
+ ]
197
+ }
198
+ }
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`#ifdef GL_FRAGMENT_PRECISION_HIGH
4
4
  precision highp float;
5
5
  #else
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`uniform mat4 transformMatrix;
4
4
 
5
5
  attribute vec2 position;
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`uniform mat4 transformMatrix;
4
4
 
5
5
  attribute vec2 position;
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`uniform mat4 transformMatrix;
4
4
 
5
5
  attribute vec2 position;
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`uniform mat4 transformMatrix;
4
4
 
5
5
  attribute vec2 position;
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`uniform mat4 transformMatrix;
4
4
 
5
5
  attribute vec2 position;
@@ -1,5 +1,5 @@
1
- import glsl from 'glslify'
2
-
1
+ import glsl from 'glslify'
2
+
3
3
  export default glsl`attribute vec2 position;
4
4
  attribute vec2 texCoord;
5
5
 
package/src/index.js CHANGED
@@ -1,5 +1,3 @@
1
- // 解析jpg文件,获取exif信息
2
- export {getPhotoTags} from './exif'
3
1
  // 常用公共函数和工具函数
4
2
  export * from './util'
5
3
  // 事件处理类
package/src/util.js CHANGED
@@ -1,11 +1,10 @@
1
1
  import { v4 as uuidv4 } from 'uuid'
2
2
  import moment from 'moment'
3
- import SparkMD5 from 'spark-md5'
4
3
  import _ from 'lodash'
5
- import {getPhotoTags} from './exif'
6
4
  import cameras from './constants/cameras'
7
- import * as turf from '@turf/turf'
5
+ import {getType, distance as calcDistance, midpoint as getMidpoint} from '@turf/turf'
8
6
  import { layerGroups } from './constants'
7
+ import { mat4 } from 'gl-matrix'
9
8
 
10
9
  export function generateId() { // 生成随机id
11
10
  return uuidv4()
@@ -31,51 +30,6 @@ export function formatFileSize (value) { // 文件大小格式化,自动换算
31
30
  return value + ' KB'
32
31
  }
33
32
  }
34
- export async function getPhotoInfo(file) { // 获取照片的经纬度
35
- let exif = await getPhotoTags(file)
36
- let {GPSAltitude, GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef, DateTimeOriginal, Model, PixelXDimension, PixelYDimension} = exif
37
- let position = null
38
- if (GPSLongitude && GPSLatitude) {
39
- position = {
40
- lng: getGeoCoordOperator(GPSLongitudeRef) * toRadian(GPSLongitude),
41
- lat: getGeoCoordOperator(GPSLatitudeRef) * toRadian(GPSLatitude),
42
- alt: +GPSAltitude
43
- }
44
- }
45
- let date = DateTimeOriginal && DateTimeOriginal.split(' ')[0].replaceAll(':', '-')
46
- return {
47
- date,
48
- Model,
49
- width: PixelXDimension,
50
- height: PixelYDimension,
51
- position
52
- }
53
- }
54
- export function getPhotoMeta(file) { // 获取照片的元数据,包括exif和md5,为了提高计算效率,只取前64k进行计算
55
- return new Promise((resolve, reject) => {
56
- let md5, exif
57
- getPhotoTags(file).then(data => {
58
- exif = data
59
- done()
60
- })
61
- let fileReader = new FileReader()
62
- let spark = new SparkMD5.ArrayBuffer()
63
- fileReader.readAsArrayBuffer(file)
64
- fileReader.onload = e => {
65
- spark.append(e.target.result)
66
- md5 = spark.end()
67
- done()
68
- }
69
- function done() {
70
- if (!md5 || !exif) {
71
- return
72
- }
73
- resolve({md5, exif})
74
- fileReader = null
75
- spark = null
76
- }
77
- })
78
- }
79
33
  export function getGeoCoordOperator(flag) { // 将照片的中的经纬度方位字母换成正负号
80
34
  if (flag === 'N' || flag === 'E') {
81
35
  return 1
@@ -236,7 +190,7 @@ export function downloadImage(base64) {
236
190
  document.body.removeChild(a)
237
191
  }
238
192
  export function getGeometryType(feature) {
239
- let type = turf.getType(feature)
193
+ let type = getType(feature)
240
194
  if (['Point', 'MultiPoint'].includes(type)) {
241
195
  return 'point'
242
196
  } else if (['LineString', 'MultiLineString'].includes(type)) {
@@ -290,7 +244,7 @@ export function getLineLabelFeature(lineFeature) {
290
244
  let coordinates = lineFeature.geometry.coordinates
291
245
  let temps = []
292
246
  for(let i = 1;i < coordinates.length;i++) {
293
- let distance = turf.distance(coordinates[i-1], coordinates[i], {units: 'meters'})
247
+ let distance = calcDistance(coordinates[i-1], coordinates[i], {units: 'meters'})
294
248
  if (distance > 30) {
295
249
  temps.push([coordinates[i-1], coordinates[i]])
296
250
  }
@@ -306,7 +260,7 @@ export function getLineLabelFeature(lineFeature) {
306
260
  let start = project(labelLine[0])
307
261
  let end = project(labelLine[1])
308
262
  let angle = 360 - (Math.atan((start.y - end.y) / (end.x - start.x)) * 180) / Math.PI
309
- let midPoint = turf.midpoint(labelLine[0], labelLine[1])
263
+ let midPoint = getMidpoint(labelLine[0], labelLine[1])
310
264
  midPoint.properties = lineFeature.properties
311
265
  midPoint.properties.angle = angle
312
266
  midPoint.geometry.coordinates.push(((labelLine[0][2] || 0) + (labelLine[1][2] || 0)) / 2)
@@ -353,4 +307,30 @@ export function getTaskTreeList(taskInfo, annotations, layers) {
353
307
  groupItem.items.push(d)
354
308
  })
355
309
  return groups
310
+ }
311
+
312
+ export function hasNaN (arr) {
313
+ for (let i = 0; i < arr.length; i++) {
314
+ if (Number.isNaN(arr[i])) {
315
+ return true
316
+ }
317
+ }
318
+ return false
319
+ }
320
+
321
+ export function getRotationMatrix (pitch, roll, yaw) {
322
+ let orientation = []
323
+ let enu2ned = mat4.fromValues(0, 1, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1)
324
+ let ned2cam = mat4.fromValues(0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1)
325
+ let m1 = mat4.fromZRotation(mat4.create(), yaw * Math.PI / 180)
326
+ let m2 = mat4.fromYRotation(mat4.create(), pitch * Math.PI / 180)
327
+ let m3 = mat4.fromXRotation(mat4.create(), roll * Math.PI / 180)
328
+ let rota = mat4.multiply(mat4.create(), mat4.multiply(mat4.create(), m1, m2), m3)
329
+ let rot = mat4.multiply(mat4.create(), mat4.multiply(mat4.create(), ned2cam, mat4.transpose(mat4.create(), rota)), enu2ned)
330
+ for (let i = 0; i < 3; i++) {
331
+ for (let j = 0; j < 3; j++) {
332
+ orientation[i * 3 + j] = rot[i + j * 4]
333
+ }
334
+ }
335
+ return orientation
356
336
  }
@@ -1,10 +0,0 @@
1
- export default [
2
- {
3
- name: '2d',
4
- icon: 'icon-view_d'
5
- },
6
- {
7
- name: '3d',
8
- icon: 'icon-view_d1'
9
- }
10
- ]