vislite 0.5.2 → 0.6.0-alpha.2

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 (194) hide show
  1. package/.editorconfig +18 -18
  2. package/.eslintrc.js +24 -0
  3. package/AUTHORS.txt +6 -6
  4. package/CHANGELOG +15 -1
  5. package/LICENSE +20 -20
  6. package/README.md +41 -2
  7. package/lib/Buffer/index.umd.js +2 -2
  8. package/lib/Buffer/index.umd.min.js +2 -2
  9. package/lib/Canvas/index.umd.js +19 -8
  10. package/lib/Canvas/index.umd.min.js +3 -3
  11. package/lib/Cardinal/index.umd.js +2 -2
  12. package/lib/Cardinal/index.umd.min.js +2 -2
  13. package/lib/Eoap/index.umd.js +2 -2
  14. package/lib/Eoap/index.umd.min.js +2 -2
  15. package/lib/Geometry/index.umd.js +7 -4
  16. package/lib/Geometry/index.umd.min.js +2 -2
  17. package/lib/Hermite/index.umd.js +2 -2
  18. package/lib/Hermite/index.umd.min.js +2 -2
  19. package/lib/Matrix4/index.umd.js +14 -8
  20. package/lib/Matrix4/index.umd.min.js +3 -3
  21. package/lib/Mercator/index.umd.js +2 -2
  22. package/lib/Mercator/index.umd.min.js +2 -2
  23. package/lib/OralCanvas/index.es.js +14 -6
  24. package/lib/OralCanvas/index.es.min.js +3 -3
  25. package/lib/OralWebGL/index.es.js +27 -19
  26. package/lib/OralWebGL/index.es.min.js +3 -3
  27. package/lib/SVG/index.umd.js +6 -4
  28. package/lib/SVG/index.umd.min.js +2 -2
  29. package/lib/Shader/index.umd.js +10 -10
  30. package/lib/Shader/index.umd.min.js +3 -3
  31. package/lib/Texture/index.umd.js +4 -3
  32. package/lib/Texture/index.umd.min.js +2 -2
  33. package/lib/TreeLayout/index.umd.js +8 -5
  34. package/lib/TreeLayout/index.umd.min.js +2 -2
  35. package/lib/WebGL/index.umd.js +27 -19
  36. package/lib/WebGL/index.umd.min.js +3 -3
  37. package/lib/animation/index.umd.js +4 -3
  38. package/lib/animation/index.umd.min.js +2 -2
  39. package/lib/formatColor/index.umd.js +2 -2
  40. package/lib/formatColor/index.umd.min.js +2 -2
  41. package/lib/getLoopColors/index.umd.js +2 -2
  42. package/lib/getLoopColors/index.umd.min.js +2 -2
  43. package/lib/getWebGLContext/index.umd.js +4 -3
  44. package/lib/getWebGLContext/index.umd.min.js +2 -2
  45. package/lib/index.umd.js +73 -34
  46. package/lib/index.umd.min.js +3 -3
  47. package/lib/move/index.umd.js +2 -2
  48. package/lib/move/index.umd.min.js +2 -2
  49. package/lib/resizeObserver/index.umd.js +4 -3
  50. package/lib/resizeObserver/index.umd.min.js +2 -2
  51. package/lib/rotate/index.umd.js +2 -2
  52. package/lib/rotate/index.umd.min.js +2 -2
  53. package/lib/ruler/index.umd.js +14 -2
  54. package/lib/ruler/index.umd.min.js +3 -3
  55. package/lib/scale/index.umd.js +2 -2
  56. package/lib/scale/index.umd.min.js +2 -2
  57. package/lib/throttle/index.umd.js +2 -2
  58. package/lib/throttle/index.umd.min.js +2 -2
  59. package/lib/viewHandler/index.umd.js +4 -4
  60. package/lib/viewHandler/index.umd.min.js +3 -3
  61. package/miniprogram/ui-canvas/index.js +107 -107
  62. package/miniprogram/ui-canvas/index.json +4 -4
  63. package/miniprogram/ui-canvas/index.wxml +4 -4
  64. package/miniprogram/ui-canvas/index.wxss +5 -5
  65. package/package/Buffer/index.ts +2 -2
  66. package/package/Canvas/index.ts +2 -2
  67. package/package/Cardinal/index.ts +2 -2
  68. package/package/Eoap/index.ts +2 -2
  69. package/package/Geometry/index.ts +2 -2
  70. package/package/Hermite/index.ts +2 -2
  71. package/package/Matrix4/index.ts +2 -2
  72. package/package/Mercator/index.ts +2 -2
  73. package/package/OralCanvas/index.ts +2 -2
  74. package/package/OralWebGL/index.ts +2 -2
  75. package/package/SVG/index.ts +2 -2
  76. package/package/Shader/index.ts +39 -39
  77. package/package/Texture/index.ts +2 -2
  78. package/package/TreeLayout/index.ts +1 -1
  79. package/package/WebGL/index.ts +2 -2
  80. package/package/animation/index.ts +2 -2
  81. package/package/formatColor/index.ts +2 -2
  82. package/package/getLoopColors/index.ts +2 -2
  83. package/package/getWebGLContext/index.ts +39 -39
  84. package/package/index.ts +76 -76
  85. package/package/move/index.ts +2 -2
  86. package/package/resizeObserver/index.ts +2 -2
  87. package/package/rotate/index.ts +2 -2
  88. package/package/ruler/index.ts +2 -2
  89. package/package/scale/index.ts +2 -2
  90. package/package/throttle/index.ts +2 -2
  91. package/package/viewHandler/index.ts +2 -2
  92. package/package.json +6 -2
  93. package/src/Canvas.ts +70 -67
  94. package/src/Eoap.ts +66 -66
  95. package/src/Geometry.ts +82 -82
  96. package/src/Matrix4/index.ts +17 -9
  97. package/src/Matrix4/move.ts +12 -12
  98. package/src/Matrix4/rotate.ts +15 -15
  99. package/src/Matrix4/scale.ts +11 -11
  100. package/src/Matrix4/transform.ts +64 -64
  101. package/src/Mercator.ts +27 -27
  102. package/src/SVG.ts +24 -24
  103. package/src/WebGL.ts +66 -66
  104. package/src/animation.ts +98 -98
  105. package/src/common/assemble.ts +22 -22
  106. package/src/common/canvas/arc.ts +51 -50
  107. package/src/common/canvas/config.ts +158 -158
  108. package/src/common/canvas/gradient.ts +29 -29
  109. package/src/common/canvas/index.ts +149 -140
  110. package/src/common/canvas/painter.ts +417 -426
  111. package/src/common/canvas/texts.ts +18 -18
  112. package/src/common/geometry/prism-horizontal.ts +35 -33
  113. package/src/common/geometry/prism-vertical.ts +40 -40
  114. package/src/common/geometry/sphere-fragment.ts +40 -39
  115. package/src/common/geometry/tool/circle.ts +11 -11
  116. package/src/common/mergeOption.ts +6 -6
  117. package/src/common/setStyle.ts +5 -5
  118. package/src/common/svg/config.ts +186 -186
  119. package/src/common/svg/dictionary.ts +1 -1
  120. package/src/common/svg/gradient.ts +63 -63
  121. package/src/common/svg/index.ts +356 -356
  122. package/src/common/svg/tool.ts +44 -44
  123. package/src/common/tree/index.ts +25 -25
  124. package/src/common/tree/toInnerTree.ts +57 -56
  125. package/src/common/tree/toPlainTree.ts +132 -131
  126. package/src/common/webgl/buffer.ts +79 -79
  127. package/src/common/webgl/doDraw.ts +108 -108
  128. package/src/common/webgl/getColorFactory.ts +26 -26
  129. package/src/common/webgl/getShader.ts +48 -48
  130. package/src/common/webgl/getTexture.ts +11 -11
  131. package/src/common/webgl/getWebGLContext.ts +28 -27
  132. package/src/common/webgl/index.ts +224 -223
  133. package/src/common/webgl/shader.ts +75 -75
  134. package/src/common/webgl/texture.ts +97 -96
  135. package/src/formatColor.ts +44 -44
  136. package/src/getLoopColors.ts +42 -42
  137. package/src/interpolation/Cardinal.ts +110 -110
  138. package/src/interpolation/Hermite.ts +65 -65
  139. package/src/{TreeLayout/index.ts → layout/TreeLayout.ts} +21 -21
  140. package/src/move.ts +7 -7
  141. package/src/resizeObserver.ts +37 -36
  142. package/src/rotate.ts +7 -7
  143. package/src/ruler.ts +41 -19
  144. package/src/scale.ts +6 -6
  145. package/src/shader/fsColor.c +7 -7
  146. package/src/shader/fsColors.c +7 -7
  147. package/src/shader/fsCube.c +8 -8
  148. package/src/shader/fsImage.c +8 -8
  149. package/src/shader/vsColor.c +17 -17
  150. package/src/shader/vsColors.c +13 -13
  151. package/src/shader/vsCube.c +13 -13
  152. package/src/shader/vsImage.c +13 -13
  153. package/src/throttle.ts +52 -51
  154. package/src/viewHandler.ts +158 -158
  155. package/types/Buffer.d.ts +23 -23
  156. package/types/Canvas.d.ts +8 -0
  157. package/types/CanvasConfig.d.ts +106 -106
  158. package/types/CanvasOption.d.ts +8 -7
  159. package/types/CanvasOpts.d.ts +10 -0
  160. package/types/Cardinal.d.ts +13 -13
  161. package/types/Geometry.d.ts +40 -40
  162. package/types/GeometryOption.d.ts +11 -11
  163. package/types/GeometryResult.d.ts +18 -18
  164. package/types/Gradient.d.ts +14 -14
  165. package/types/Hermite.d.ts +18 -18
  166. package/types/Map.d.ts +9 -9
  167. package/types/Matrix4.d.ts +5 -0
  168. package/types/Object3D.d.ts +114 -114
  169. package/types/SVG.d.ts +238 -238
  170. package/types/SVGConfig.d.ts +76 -76
  171. package/types/Scene3D.d.ts +6 -6
  172. package/types/Shader.d.ts +21 -21
  173. package/types/Texture.d.ts +16 -16
  174. package/types/Tree.d.ts +69 -69
  175. package/types/TreeConfig.d.ts +24 -24
  176. package/types/TreeLayout.d.ts +54 -54
  177. package/types/TreeOption.d.ts +48 -48
  178. package/types/WebGL.d.ts +38 -38
  179. package/types/WebGLOption.d.ts +7 -7
  180. package/types/animation.d.ts +6 -6
  181. package/types/formatColor.d.ts +2 -2
  182. package/types/getLoopColors.d.ts +2 -2
  183. package/types/getWebGLContext.d.ts +2 -2
  184. package/types/index.d.ts +175 -175
  185. package/types/move.d.ts +2 -2
  186. package/types/painterConfig.d.ts +2 -2
  187. package/types/resizeObserver.d.ts +2 -2
  188. package/types/rotate.d.ts +2 -2
  189. package/types/ruler.d.ts +7 -7
  190. package/types/scale.d.ts +2 -2
  191. package/types/throttle.d.ts +4 -4
  192. package/types/throttleOption.d.ts +21 -21
  193. package/types/viewHandler.d.ts +13 -13
  194. package/uni-app/ui-canvas.vue +239 -206
@@ -1,66 +1,66 @@
1
- import type HermiteType from '../../types/Hermite'
2
-
3
- class Hermite implements HermiteType {
4
- readonly name: string = 'Hermite'
5
-
6
- private __u: number // 张弛系数
7
-
8
- private __MR: number[]
9
- private __a: number
10
- private __b: number
11
-
12
- constructor(u: number = 0.5) {
13
- this.__u = u
14
- }
15
-
16
- /**
17
- * 设置点的位置
18
- * @param {Number} x1 左边点的位置
19
- * @param {Number} y1
20
- * @param {Number} x2 右边点的位置
21
- * @param {Number} y2
22
- * @param {Number} s1 两个点的斜率
23
- * @param {Number} s2
24
- */
25
- setP(x1: number, y1: number, x2: number, y2: number, s1: number, s2: number) {
26
- if (x1 < x2) {
27
- // 记录原始尺寸
28
- this.__a = x1
29
- this.__b = x2
30
- let p3 = this.__u * s1,
31
- p4 = this.__u * s2
32
- // 缩放到[0,1]定义域
33
- y1 /= (x2 - x1)
34
- y2 /= (x2 - x1)
35
- // MR是提前计算好的多项式通解矩阵
36
- // 为了加速计算
37
- // 如上面说的
38
- // 统一在[0,1]上计算后再通过缩放和移动恢复
39
- // 避免了动态求解矩阵的麻烦
40
- this.__MR = [
41
- 2 * y1 - 2 * y2 + p3 + p4,
42
- 3 * y2 - 3 * y1 - 2 * p3 - p4,
43
- p3,
44
- y1
45
- ]
46
- } else throw new Error('The point x-position should be increamented!')
47
- return this
48
- }
49
-
50
-
51
- /**
52
- * 根据x值返回y值
53
- * @param {Number} x
54
- */
55
- use(x: number) {
56
- if (this.__MR) {
57
- let sx = (x - this.__a) / (this.__b - this.__a),
58
- sx2 = sx * sx,
59
- sx3 = sx * sx2
60
- let sResult = sx3 * this.__MR[0] + sx2 * this.__MR[1] + sx * this.__MR[2] + this.__MR[3]
61
- return sResult * (this.__b - this.__a)
62
- } else throw new Error('You shoud first set the position!')
63
- }
64
- }
65
-
1
+ import type HermiteType from '../../types/Hermite'
2
+
3
+ class Hermite implements HermiteType {
4
+ readonly name: string = 'Hermite'
5
+
6
+ private __u: number // 张弛系数
7
+
8
+ private __MR: number[]
9
+ private __a: number
10
+ private __b: number
11
+
12
+ constructor(u: number = 0.5) {
13
+ this.__u = u
14
+ }
15
+
16
+ /**
17
+ * 设置点的位置
18
+ * @param {Number} x1 左边点的位置
19
+ * @param {Number} y1
20
+ * @param {Number} x2 右边点的位置
21
+ * @param {Number} y2
22
+ * @param {Number} s1 两个点的斜率
23
+ * @param {Number} s2
24
+ */
25
+ setP(x1: number, y1: number, x2: number, y2: number, s1: number, s2: number) {
26
+ if (x1 < x2) {
27
+ // 记录原始尺寸
28
+ this.__a = x1
29
+ this.__b = x2
30
+ const p3 = this.__u * s1,
31
+ p4 = this.__u * s2
32
+ // 缩放到[0,1]定义域
33
+ y1 /= (x2 - x1)
34
+ y2 /= (x2 - x1)
35
+ // MR是提前计算好的多项式通解矩阵
36
+ // 为了加速计算
37
+ // 如上面说的
38
+ // 统一在[0,1]上计算后再通过缩放和移动恢复
39
+ // 避免了动态求解矩阵的麻烦
40
+ this.__MR = [
41
+ 2 * y1 - 2 * y2 + p3 + p4,
42
+ 3 * y2 - 3 * y1 - 2 * p3 - p4,
43
+ p3,
44
+ y1
45
+ ]
46
+ } else throw new Error('The point x-position should be increamented!')
47
+ return this
48
+ }
49
+
50
+
51
+ /**
52
+ * 根据x值返回y值
53
+ * @param {Number} x
54
+ */
55
+ use(x: number) {
56
+ if (this.__MR) {
57
+ const sx = (x - this.__a) / (this.__b - this.__a),
58
+ sx2 = sx * sx,
59
+ sx3 = sx * sx2
60
+ const sResult = sx3 * this.__MR[0] + sx2 * this.__MR[1] + sx * this.__MR[2] + this.__MR[3]
61
+ return sResult * (this.__b - this.__a)
62
+ } else throw new Error('You shoud first set the position!')
63
+ }
64
+ }
65
+
66
66
  export default Hermite
@@ -35,11 +35,11 @@ class TreeLayout extends Tree implements TreeLayoutType {
35
35
  }
36
36
 
37
37
  use(initTree: any, noOpens = {}) {
38
- let tree = super.use(initTree, noOpens)
38
+ const tree = super.use(initTree, noOpens)
39
39
 
40
40
  // 校对偏差
41
41
  if (this.__option.offsetX != 0 || this.__option.offsetY != 0) {
42
- for (let key in tree.node) {
42
+ for (const key in tree.node) {
43
43
  if (!tree.node[key].show) {
44
44
 
45
45
  let deep = 0, pid = key
@@ -57,13 +57,13 @@ class TreeLayout extends Tree implements TreeLayoutType {
57
57
  if (this.__option.type == 'rect') {
58
58
  if (this.__option.direction == 'LR' || this.__option.direction == "RL") {
59
59
 
60
- let perW = this.__option.height / tree.size
61
- let perD = this.__option.width / (tree.deep - 1)
60
+ const perW = this.__option.height / tree.size
61
+ const perD = this.__option.width / (tree.deep - 1)
62
62
 
63
- let balanceW = this.__option.y - this.__option.height * 0.5
64
- let flag = this.__option.direction == 'LR' ? 1 : -1
63
+ const balanceW = this.__option.y - this.__option.height * 0.5
64
+ const flag = this.__option.direction == 'LR' ? 1 : -1
65
65
 
66
- for (let key in tree.node) {
66
+ for (const key in tree.node) {
67
67
  if (tree.deep == 1) {
68
68
  tree.node[key].left = this.__option.x + this.__option.width * 0.5 * flag
69
69
  tree.node[key].top = this.__option.y
@@ -74,18 +74,18 @@ class TreeLayout extends Tree implements TreeLayoutType {
74
74
  }
75
75
  } else if (this.__option.direction == 'TB' || this.__option.direction == "BT") {
76
76
 
77
- let perW = this.__option.width / tree.size
78
- let perD = this.__option.height / (tree.deep - 1)
77
+ const perW = this.__option.width / tree.size
78
+ const perD = this.__option.height / (tree.deep - 1)
79
79
 
80
- let balanceW = this.__option.x - this.__option.width * 0.5
81
- let flag = this.__option.direction == 'TB' ? 1 : -1
80
+ const balanceW = this.__option.x - this.__option.width * 0.5
81
+ const flag = this.__option.direction == 'TB' ? 1 : -1
82
82
 
83
- for (let key in tree.node) {
83
+ for (const key in tree.node) {
84
84
  if (tree.deep == 1) {
85
85
  tree.node[key].left = this.__option.x
86
86
  tree.node[key].top = this.__option.y + this.__option.height * 0.5 * flag
87
87
  } else {
88
- let left = tree.node[key].left
88
+ const left = tree.node[key].left
89
89
 
90
90
  tree.node[key].left = tree.node[key].top * perW + balanceW
91
91
  tree.node[key].top = this.__option.y + (left - 0.5) * perD * flag
@@ -95,16 +95,16 @@ class TreeLayout extends Tree implements TreeLayoutType {
95
95
  }
96
96
 
97
97
  } else if (this.__option.type == 'circle') {
98
- let cx = this.__option.x, cy = this.__option.y
99
- let deg = Math.PI * 2 / tree.size
100
- let per = this.__option.radius / (tree.deep - 1)
98
+ const cx = this.__option.x, cy = this.__option.y
99
+ const deg = Math.PI * 2 / tree.size
100
+ const per = this.__option.radius / (tree.deep - 1)
101
101
 
102
- for (let key in tree.node) {
102
+ for (const key in tree.node) {
103
103
  if (tree.node[key].left == 0.5) {
104
104
  tree.node[key].left = cx
105
105
  tree.node[key].top = cy
106
106
  } else {
107
- let position = rotate(cx, cy, deg * tree.node[key].top, cx + (tree.node[key].left - 0.5) * per, cy)
107
+ const position = rotate(cx, cy, deg * tree.node[key].top, cx + (tree.node[key].left - 0.5) * per, cy)
108
108
 
109
109
  tree.node[key].left = position[0]
110
110
  tree.node[key].top = position[1]
@@ -135,13 +135,13 @@ class TreeLayout extends Tree implements TreeLayoutType {
135
135
  }
136
136
 
137
137
  private doUpdate() {
138
- let newTree = this.use(this.__oralTree, this.__noOpens)
138
+ const newTree = this.use(this.__oralTree, this.__noOpens)
139
139
 
140
- let cacheTree = JSON.parse(JSON.stringify(newTree))
140
+ const cacheTree = JSON.parse(JSON.stringify(newTree))
141
141
 
142
142
  animation((deep) => {
143
143
 
144
- for (let key in cacheTree.node) {
144
+ for (const key in cacheTree.node) {
145
145
  if (newTree.node[key].show || this.__preTree.node[key].show) {
146
146
  cacheTree.node[key].show = true
147
147
 
package/src/move.ts CHANGED
@@ -1,8 +1,8 @@
1
- // 点(x,y)沿着向量(ax,ay)方向移动距离d
2
- export default function (ax: number, ay: number, d: number, x: number, y: number): [number, number] {
3
- let sqrt = Math.sqrt(ax * ax + ay * ay)
4
- return [
5
- ax * d / sqrt + x,
6
- ay * d / sqrt + y
7
- ]
1
+ // 点(x,y)沿着向量(ax,ay)方向移动距离d
2
+ export default function (ax: number, ay: number, d: number, x: number, y: number): [number, number] {
3
+ const sqrt = Math.sqrt(ax * ax + ay * ay)
4
+ return [
5
+ ax * d / sqrt + x,
6
+ ay * d / sqrt + y
7
+ ]
8
8
  }
@@ -1,37 +1,38 @@
1
- let observer: ResizeObserver
2
-
3
- let attrValueToCallback = {}, uniqueid = 0
4
-
5
- export default function (el: HTMLElement | null, callback: Function) {
6
-
7
- try {
8
-
9
- if (!observer) {
10
- observer = new ResizeObserver(entries => {
11
- for (const entry of entries) {
12
- attrValueToCallback[(entry.target as any)._resize_observer_]()
13
- }
14
- })
15
- }
16
-
17
- uniqueid++
18
-
19
- (el as any)._resize_observer_ = uniqueid
20
- attrValueToCallback[uniqueid] = callback
21
-
22
- observer.observe(el)
23
-
24
- return function () {
25
- if (observer) {
26
- observer.unobserve(el)
27
- delete attrValueToCallback[(el as any)._resize_observer_]
28
- }
29
- }
30
-
31
- } catch (e) {
32
- callback()
33
-
34
- // 如果浏览器不支持此接口
35
- console.error('ResizeObserver undefined!')
36
- }
1
+ let observer: ResizeObserver
2
+
3
+ const attrValueToCallback = {}
4
+ let uniqueid = 0
5
+
6
+ export default function (el: HTMLElement | null, callback: Function) {
7
+
8
+ try {
9
+
10
+ if (!observer) {
11
+ observer = new ResizeObserver(entries => {
12
+ for (const entry of entries) {
13
+ attrValueToCallback[(entry.target as any)._resize_observer_]()
14
+ }
15
+ })
16
+ }
17
+
18
+ uniqueid++
19
+
20
+ (el as any)._resize_observer_ = uniqueid
21
+ attrValueToCallback[uniqueid] = callback
22
+
23
+ observer.observe(el)
24
+
25
+ return function () {
26
+ if (observer) {
27
+ observer.unobserve(el)
28
+ delete attrValueToCallback[(el as any)._resize_observer_]
29
+ }
30
+ }
31
+
32
+ } catch (e) {
33
+ callback()
34
+
35
+ // 如果浏览器不支持此接口
36
+ console.error('ResizeObserver undefined!')
37
+ }
37
38
  }
package/src/rotate.ts CHANGED
@@ -1,8 +1,8 @@
1
- // 点(x,y)围绕中心(cx,cy)旋转deg度
2
- export default function (cx: number, cy: number, deg: number, x: number, y: number): [number, number] {
3
- let cos = Math.cos(deg), sin = Math.sin(deg)
4
- return [
5
- (x - cx) * cos - (y - cy) * sin + cx,
6
- (x - cx) * sin + (y - cy) * cos + cy
7
- ]
1
+ // 点(x,y)围绕中心(cx,cy)旋转deg度
2
+ export default function (cx: number, cy: number, deg: number, x: number, y: number): [number, number] {
3
+ const cos = Math.cos(deg), sin = Math.sin(deg)
4
+ return [
5
+ (x - cx) * cos - (y - cy) * sin + cx,
6
+ (x - cx) * sin + (y - cy) * cos + cy
7
+ ]
8
8
  }
package/src/ruler.ts CHANGED
@@ -7,7 +7,7 @@ export default function (maxValue: number, minValue: number, num: number, option
7
7
 
8
8
  // 如果最大值最小值反了
9
9
  if (maxValue < minValue) {
10
- let temp = minValue
10
+ const temp = minValue
11
11
  minValue = maxValue
12
12
  maxValue = temp
13
13
  }
@@ -18,12 +18,12 @@ export default function (maxValue: number, minValue: number, num: number, option
18
18
  }
19
19
 
20
20
  // 为了变成 -100 ~ 100 需要放大或者缩小的倍数
21
- let times100 =
21
+ const times100 =
22
22
 
23
23
  (function (_value) {
24
24
 
25
25
  // 先确定基调,是放大还是缩小
26
- let _times100_base = (_value < 100 && _value > -100) ? 10 : 0.1
26
+ const _times100_base = (_value < 100 && _value > -100) ? 10 : 0.1
27
27
 
28
28
  // 记录当前缩放倍数
29
29
  let _times100 = -1, _tiemsValue = _value
@@ -59,11 +59,11 @@ export default function (maxValue: number, minValue: number, num: number, option
59
59
 
60
60
 
61
61
  // 求解出 -100 ~ 100 的最佳间距值 后直接转换原来的倍数
62
- let distance100_oral = Math.ceil((maxValue - minValue) * times100 / num)
62
+ const distance100_oral = Math.ceil((maxValue - minValue) * times100 / num)
63
63
 
64
- let getResult = (changValue: number) => {
64
+ const getResult = (changValue: number) => {
65
65
  // 校对一下
66
- let distance100 = {
66
+ const distance100 = {
67
67
  3: 2,
68
68
  4: 5,
69
69
  6: 5,
@@ -86,12 +86,12 @@ export default function (maxValue: number, minValue: number, num: number, option
86
86
  27: 25
87
87
  }[distance100_oral + changValue] || (distance100_oral + changValue)
88
88
 
89
- let distance = distance100 / times100
89
+ const distance = distance100 / times100
90
90
 
91
91
  // 最小值,也就是起点
92
- let begin = Math.floor(minValue / distance) * distance
92
+ const begin = Math.floor(minValue / distance) * distance
93
93
 
94
- let rulerArray = []
94
+ const rulerArray = []
95
95
  // 获取最终的刻度尺数组
96
96
  rulerArray.push(begin)
97
97
  for (let index = 1; rulerArray[rulerArray.length - 1] < maxValue; index++) {
@@ -103,10 +103,10 @@ export default function (maxValue: number, minValue: number, num: number, option
103
103
 
104
104
  let rulerArray = getResult(0)
105
105
 
106
- let balanceMax = () => {
107
- let rulerArray_temp = []
106
+ const balanceMax = () => {
107
+ const rulerArray_temp = []
108
108
 
109
- let changeDist = rulerArray[rulerArray.length - 1] - option.max
109
+ const changeDist = rulerArray[rulerArray.length - 1] - option.max
110
110
  for (let index = 0; index < rulerArray.length; index++) {
111
111
  if (index + 1 < rulerArray.length && rulerArray[index + 1] - changeDist < minValue) {
112
112
  // 多余的
@@ -118,10 +118,10 @@ export default function (maxValue: number, minValue: number, num: number, option
118
118
  return rulerArray_temp
119
119
  }
120
120
 
121
- let balanceMin = () => {
122
- let rulerArray_temp = []
121
+ const balanceMin = () => {
122
+ const rulerArray_temp = []
123
123
 
124
- let changeDist = rulerArray[0] - option.min
124
+ const changeDist = rulerArray[0] - option.min
125
125
  for (let index = 0; index < rulerArray.length; index++) {
126
126
  rulerArray_temp[index] = rulerArray[index] - changeDist
127
127
  if (maxValue <= rulerArray_temp[index]) break
@@ -135,20 +135,20 @@ export default function (maxValue: number, minValue: number, num: number, option
135
135
  // 上下界限制
136
136
  if ('max' in option && 'min' in option && option.max >= maxValue && option.min <= minValue) {
137
137
 
138
- let isAnswer = () => {
138
+ const isAnswer = () => {
139
139
 
140
140
  // 先判断原始的是否可行
141
141
  if (rulerArray[0] >= option.min && rulerArray[rulerArray.length - 1] <= option.max) return true
142
142
 
143
143
  // 再判断max调整是否可行
144
- let rulerArray_max = balanceMax()
144
+ const rulerArray_max = balanceMax()
145
145
  if (rulerArray_max[0] >= option.min && rulerArray_max[rulerArray_max.length - 1] <= option.max) {
146
146
  rulerArray = rulerArray_max
147
147
  return true
148
148
  }
149
149
 
150
150
  // 再判断max调整是否可行
151
- let rulerArray_min = balanceMin()
151
+ const rulerArray_min = balanceMin()
152
152
  if (rulerArray_min[0] >= option.min && rulerArray_min[rulerArray_max.length - 1] <= option.max) {
153
153
  rulerArray = rulerArray_min
154
154
  return true
@@ -184,5 +184,27 @@ export default function (maxValue: number, minValue: number, num: number, option
184
184
  }
185
185
  }
186
186
  }
187
+
188
+ // 对结果进行对齐
189
+ // 2023年11月15日 于南京
190
+ for (let index = 0; index < rulerArray.length; index++) {
191
+ let valStr = rulerArray[index] + ""
192
+
193
+ // 只有小数需要处理
194
+ if (/\./.test(valStr)) {
195
+
196
+ // 1.0999999999999999
197
+ if (/9{7,}$/.test(valStr)) {
198
+ valStr = valStr.replace(/9{7,}$/, '')
199
+ rulerArray[index] = +(valStr.substring(0, valStr.length - 1) + ((+valStr[valStr.length - 1]) + 1))
200
+ }
201
+
202
+ // 0.30000000000000004
203
+ else if (/0{7,}\d$/.test(valStr)) {
204
+ rulerArray[index] = +(valStr.replace(/0{7,}\d$/, ''))
205
+ }
206
+ }
207
+ }
208
+
187
209
  return rulerArray
188
- }
210
+ }
package/src/scale.ts CHANGED
@@ -1,7 +1,7 @@
1
- // 点(x,y)围绕中心(cx,cy)缩放times倍
2
- export default function (cx: number, cy: number, times: number, x: number, y: number): [number, number] {
3
- return [
4
- times * (x - cx) + cx,
5
- times * (y - cy) + cy
6
- ]
1
+ // 点(x,y)围绕中心(cx,cy)缩放times倍
2
+ export default function (cx: number, cy: number, times: number, x: number, y: number): [number, number] {
3
+ return [
4
+ times * (x - cx) + cx,
5
+ times * (y - cy) + cy
6
+ ]
7
7
  }
@@ -1,8 +1,8 @@
1
- precision mediump float;
2
-
3
- uniform vec4 u_color;
4
-
5
- void main()
6
- {
7
- gl_FragColor = u_color;
1
+ precision mediump float;
2
+
3
+ uniform vec4 u_color;
4
+
5
+ void main()
6
+ {
7
+ gl_FragColor = u_color;
8
8
  }
@@ -1,8 +1,8 @@
1
- precision mediump float;
2
-
3
- varying vec4 v_color;
4
-
5
- void main()
6
- {
7
- gl_FragColor = v_color;
1
+ precision mediump float;
2
+
3
+ varying vec4 v_color;
4
+
5
+ void main()
6
+ {
7
+ gl_FragColor = v_color;
8
8
  }
@@ -1,9 +1,9 @@
1
- precision mediump float;
2
-
3
- varying vec3 v_normal;
4
- uniform samplerCube u_texture;
5
-
6
- void main()
7
- {
8
- gl_FragColor = textureCube(u_texture, normalize(v_normal));
1
+ precision mediump float;
2
+
3
+ varying vec3 v_normal;
4
+ uniform samplerCube u_texture;
5
+
6
+ void main()
7
+ {
8
+ gl_FragColor = textureCube(u_texture, normalize(v_normal));
9
9
  }
@@ -1,9 +1,9 @@
1
- precision mediump float;
2
-
3
- uniform sampler2D u_sampler;
4
- varying vec2 v_textcoord;
5
-
6
- void main()
7
- {
8
- gl_FragColor = texture2D(u_sampler, v_textcoord);
1
+ precision mediump float;
2
+
3
+ uniform sampler2D u_sampler;
4
+ varying vec2 v_textcoord;
5
+
6
+ void main()
7
+ {
8
+ gl_FragColor = texture2D(u_sampler, v_textcoord);
9
9
  }
@@ -1,18 +1,18 @@
1
- attribute vec4 a_position;
2
- uniform mat4 u_matrix;
3
-
4
- void main()
5
- {
6
- vec4 temp = u_matrix * a_position;
7
-
8
- // 把原生的WebGL使用的左手坐标系变成了右手坐标系
9
- temp.z = -1.0 * temp.z;
10
-
11
- // 表示眼睛距离vec4(0.0,0.0,1.0)的距离
12
- float dist = 4.0;
13
-
14
- // 使用投影直接计算
15
- // 为保证纹理和相对位置正确
16
- // x、y、z的改变满足线性变换
17
- gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));
1
+ attribute vec4 a_position;
2
+ uniform mat4 u_matrix;
3
+
4
+ void main()
5
+ {
6
+ vec4 temp = u_matrix * a_position;
7
+
8
+ // 把原生的WebGL使用的左手坐标系变成了右手坐标系
9
+ temp.z = -1.0 * temp.z;
10
+
11
+ // 表示眼睛距离vec4(0.0,0.0,1.0)的距离
12
+ float dist = 4.0;
13
+
14
+ // 使用投影直接计算
15
+ // 为保证纹理和相对位置正确
16
+ // x、y、z的改变满足线性变换
17
+ gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));
18
18
  }
@@ -1,14 +1,14 @@
1
- attribute vec4 a_position;
2
- uniform mat4 u_matrix;
3
- attribute vec4 a_color;
4
- varying vec4 v_color;
5
-
6
- void main()
7
- {
8
- vec4 temp = u_matrix * a_position;
9
- temp.z = -1.0 * temp.z;
10
- float dist = 4.0;
11
- gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));
12
-
13
- v_color = a_color;
1
+ attribute vec4 a_position;
2
+ uniform mat4 u_matrix;
3
+ attribute vec4 a_color;
4
+ varying vec4 v_color;
5
+
6
+ void main()
7
+ {
8
+ vec4 temp = u_matrix * a_position;
9
+ temp.z = -1.0 * temp.z;
10
+ float dist = 4.0;
11
+ gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));
12
+
13
+ v_color = a_color;
14
14
  }
@@ -1,14 +1,14 @@
1
- attribute vec4 a_position;
2
- uniform mat4 u_matrix;
3
- attribute vec4 a_normal;
4
- varying vec3 v_normal;
5
-
6
- void main()
7
- {
8
- vec4 temp = u_matrix * a_position;
9
- temp.z = -1.0 * temp.z;
10
- float dist = 4.0;
11
- gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));
12
-
13
- v_normal = normalize(vec3(a_normal));
1
+ attribute vec4 a_position;
2
+ uniform mat4 u_matrix;
3
+ attribute vec4 a_normal;
4
+ varying vec3 v_normal;
5
+
6
+ void main()
7
+ {
8
+ vec4 temp = u_matrix * a_position;
9
+ temp.z = -1.0 * temp.z;
10
+ float dist = 4.0;
11
+ gl_Position = vec4((dist + 1.0) * temp.x, (dist + 1.0) * temp.y, dist * (dist + temp.z) + 1.0 - dist * dist, temp.w * 2.0 * (dist + temp.z));
12
+
13
+ v_normal = normalize(vec3(a_normal));
14
14
  }