vislite 1.9.0-alpha.2 → 1.9.1

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 (184) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +12 -2
  3. package/LICENSE +20 -20
  4. package/README.md +1 -1
  5. package/lib/BarLayout/index.es.js +119 -128
  6. package/lib/BarLayout/index.es.min.js +1 -10
  7. package/lib/Buffer/index.es.js +0 -4
  8. package/lib/Buffer/index.es.min.js +0 -4
  9. package/lib/Canvas/index.es.js +0 -4
  10. package/lib/Canvas/index.es.min.js +0 -4
  11. package/lib/Cardinal/index.es.js +0 -4
  12. package/lib/Cardinal/index.es.min.js +0 -4
  13. package/lib/Eoap/index.es.js +0 -4
  14. package/lib/Eoap/index.es.min.js +0 -4
  15. package/lib/Hermite/index.es.js +0 -4
  16. package/lib/Hermite/index.es.min.js +0 -4
  17. package/lib/MapCoordinate/index.es.js +0 -4
  18. package/lib/MapCoordinate/index.es.min.js +0 -4
  19. package/lib/Matrix4/index.es.js +0 -4
  20. package/lib/Matrix4/index.es.min.js +0 -4
  21. package/lib/Mercator/index.es.js +0 -4
  22. package/lib/Mercator/index.es.min.js +0 -4
  23. package/lib/PieLayout/index.es.js +119 -128
  24. package/lib/PieLayout/index.es.min.js +1 -9
  25. package/lib/RawCanvas/index.es.js +0 -4
  26. package/lib/RawCanvas/index.es.min.js +0 -4
  27. package/lib/SVG/index.es.js +14 -9
  28. package/lib/SVG/index.es.min.js +1 -5
  29. package/lib/Shader/index.es.js +0 -4
  30. package/lib/Shader/index.es.min.js +0 -4
  31. package/lib/Texture/index.es.js +0 -4
  32. package/lib/Texture/index.es.min.js +0 -4
  33. package/lib/TreeLayout/index.es.js +119 -128
  34. package/lib/TreeLayout/index.es.min.js +1 -9
  35. package/lib/animation/index.es.js +119 -128
  36. package/lib/animation/index.es.min.js +0 -8
  37. package/lib/assemble/index.es.js +0 -4
  38. package/lib/assemble/index.es.min.js +0 -4
  39. package/lib/getLoopColors/index.es.js +0 -4
  40. package/lib/getLoopColors/index.es.min.js +0 -4
  41. package/lib/getWebGLContext/index.es.js +0 -4
  42. package/lib/getWebGLContext/index.es.min.js +0 -4
  43. package/lib/index.umd.js +183 -184
  44. package/lib/index.umd.min.js +2 -12
  45. package/lib/initOption/index.es.js +0 -4
  46. package/lib/initOption/index.es.min.js +0 -4
  47. package/lib/mergeOption/index.es.js +0 -4
  48. package/lib/mergeOption/index.es.min.js +0 -4
  49. package/lib/move/index.es.js +0 -4
  50. package/lib/move/index.es.min.js +0 -4
  51. package/lib/rotate/index.es.js +0 -4
  52. package/lib/rotate/index.es.min.js +0 -4
  53. package/lib/ruler/index.es.js +0 -4
  54. package/lib/ruler/index.es.min.js +0 -4
  55. package/lib/scale/index.es.js +0 -4
  56. package/lib/scale/index.es.min.js +0 -4
  57. package/lib/throttle/index.es.js +49 -58
  58. package/lib/throttle/index.es.min.js +0 -8
  59. package/minialipay/ui-canvas/drawImage.js +35 -35
  60. package/minialipay/ui-canvas/index.acss +4 -4
  61. package/minialipay/ui-canvas/index.axml +3 -3
  62. package/minialipay/ui-canvas/index.d.ts +1 -1
  63. package/minialipay/ui-canvas/index.js +100 -100
  64. package/minialipay/ui-canvas/index.json +6 -6
  65. package/miniprogram/ui-canvas/drawImage.js +35 -35
  66. package/miniprogram/ui-canvas/index.js +125 -125
  67. package/miniprogram/ui-canvas/index.json +4 -4
  68. package/miniprogram/ui-canvas/index.wxml +4 -4
  69. package/miniprogram/ui-canvas/index.wxss +5 -5
  70. package/package/BarLayout/index.ts +2 -2
  71. package/package/Buffer/index.ts +2 -2
  72. package/package/Canvas/index.ts +2 -2
  73. package/package/Cardinal/index.ts +2 -2
  74. package/package/Eoap/index.ts +2 -2
  75. package/package/Hermite/index.ts +2 -2
  76. package/package/MapCoordinate/index.ts +2 -2
  77. package/package/Matrix4/index.ts +2 -2
  78. package/package/Mercator/index.ts +2 -2
  79. package/package/PieLayout/index.ts +2 -2
  80. package/package/RawCanvas/index.ts +2 -2
  81. package/package/SVG/index.ts +2 -2
  82. package/package/Shader/index.ts +2 -2
  83. package/package/Texture/index.ts +2 -2
  84. package/package/TreeLayout/index.ts +2 -2
  85. package/package/animation/index.ts +5 -5
  86. package/package/assemble/index.ts +2 -2
  87. package/package/getLoopColors/index.ts +2 -2
  88. package/package/getWebGLContext/index.ts +40 -40
  89. package/package/index.ts +84 -84
  90. package/package/initOption/index.ts +2 -2
  91. package/package/mergeOption/index.ts +2 -2
  92. package/package/move/index.ts +2 -2
  93. package/package/rotate/index.ts +2 -2
  94. package/package/ruler/index.ts +2 -2
  95. package/package/scale/index.ts +2 -2
  96. package/package/throttle/index.ts +2 -2
  97. package/package.json +75 -75
  98. package/src/Canvas.ts +89 -89
  99. package/src/Eoap.ts +66 -66
  100. package/src/Matrix4/index.ts +84 -84
  101. package/src/Matrix4/move.ts +12 -12
  102. package/src/Matrix4/rotate.ts +15 -15
  103. package/src/Matrix4/scale.ts +11 -11
  104. package/src/Matrix4/transform.ts +64 -64
  105. package/src/Mercator.ts +27 -27
  106. package/src/SVG.ts +69 -55
  107. package/src/common/assemble.ts +22 -22
  108. package/src/common/canvas/arc.ts +51 -51
  109. package/src/common/canvas/config.ts +176 -176
  110. package/src/common/canvas/default.ts +64 -64
  111. package/src/common/canvas/gradient.ts +31 -31
  112. package/src/common/canvas/index.ts +189 -189
  113. package/src/common/canvas/texts.ts +18 -18
  114. package/src/common/map/getBoundary.ts +15 -15
  115. package/src/common/map/tool.ts +29 -29
  116. package/src/common/option.ts +29 -29
  117. package/src/common/setStyle.ts +5 -5
  118. package/src/common/svg/config.ts +213 -213
  119. package/src/common/svg/default.ts +29 -29
  120. package/src/common/svg/gradient.ts +53 -53
  121. package/src/common/svg/index.ts +420 -420
  122. package/src/common/svg/tool.ts +51 -51
  123. package/src/common/tree/index.ts +25 -25
  124. package/src/common/tree/toInnerTree.ts +61 -61
  125. package/src/common/tree/toPlainTree.ts +135 -135
  126. package/src/common/type.ts +26 -26
  127. package/src/common/webgl/buffer.ts +79 -79
  128. package/src/common/webgl/getWebGLContext.ts +45 -45
  129. package/src/common/webgl/shader.ts +75 -75
  130. package/src/common/webgl/texture.ts +98 -98
  131. package/src/coordinate/MapCoordinate.ts +80 -80
  132. package/src/getLoopColors.ts +42 -42
  133. package/src/interpolation/Cardinal.ts +110 -110
  134. package/src/interpolation/Hermite.ts +65 -65
  135. package/src/layout/BarLayout.ts +249 -249
  136. package/src/layout/TreeLayout.ts +200 -200
  137. package/src/move.ts +7 -7
  138. package/src/rotate.ts +7 -7
  139. package/src/ruler.ts +209 -209
  140. package/src/scale.ts +6 -6
  141. package/types/Bar.d.ts +91 -91
  142. package/types/BarConfig.d.ts +4 -4
  143. package/types/BarLayout.d.ts +48 -48
  144. package/types/BarOption.d.ts +31 -31
  145. package/types/Buffer.d.ts +23 -23
  146. package/types/Canvas.d.ts +375 -375
  147. package/types/CanvasConfig.d.ts +88 -88
  148. package/types/CanvasOption.d.ts +13 -13
  149. package/types/CanvasOpts.d.ts +9 -9
  150. package/types/Cardinal.d.ts +13 -13
  151. package/types/Gradient.d.ts +14 -14
  152. package/types/Hermite.d.ts +18 -18
  153. package/types/Map.d.ts +9 -9
  154. package/types/MapConfig.d.ts +27 -27
  155. package/types/MapCoordinate.d.ts +22 -22
  156. package/types/Matrix4.d.ts +47 -47
  157. package/types/Pie.d.ts +73 -73
  158. package/types/PieConfig.d.ts +26 -26
  159. package/types/PieLayout.d.ts +40 -40
  160. package/types/PieOption.d.ts +21 -21
  161. package/types/SVG.d.ts +278 -278
  162. package/types/SVGConfig.d.ts +71 -71
  163. package/types/Shader.d.ts +16 -16
  164. package/types/Texture.d.ts +16 -16
  165. package/types/Tree.d.ts +74 -74
  166. package/types/TreeConfig.d.ts +36 -36
  167. package/types/TreeLayout.d.ts +59 -59
  168. package/types/TreeOption.d.ts +48 -48
  169. package/types/animation.d.ts +11 -11
  170. package/types/assemble.d.ts +5 -5
  171. package/types/getLoopColors.d.ts +5 -5
  172. package/types/getWebGLContext.d.ts +7 -7
  173. package/types/index.d.ts +196 -196
  174. package/types/move.d.ts +5 -5
  175. package/types/option.d.ts +12 -12
  176. package/types/painterConfig.d.ts +4 -4
  177. package/types/rotate.d.ts +5 -5
  178. package/types/ruler.d.ts +10 -10
  179. package/types/scale.d.ts +5 -5
  180. package/types/throttle.d.ts +5 -5
  181. package/types/ui-canvas.d.ts +4 -4
  182. package/types/uni-canvas.d.ts +3 -3
  183. package/uni-app/drawImage.js +19 -19
  184. package/uni-app/ui-canvas.vue +295 -295
@@ -1,201 +1,201 @@
1
- import type TreeLayoutType from '../../types/TreeLayout'
2
- import type { TreeResultType } from '../../types/Tree'
3
- import type TreeOptionType from '../../types/TreeOption'
4
-
5
- import Tree from '../common/tree/index'
6
- import { initOption } from '../common/option'
7
- import { animation } from "oipage/web/animation/index"
8
- import rotate from '../rotate'
9
-
10
- class TreeLayout extends Tree implements TreeLayoutType {
11
- readonly name: string = 'TreeLayout'
12
-
13
- private __option = {
14
- offsetX: 0,
15
- offsetY: 0,
16
- duration: 500,
17
- type: "plain",
18
- direction: "LR",
19
- x: 100,
20
- y: 100,
21
- width: 100,
22
- height: 100,
23
- radius: 100
24
- }
25
-
26
- private __rback: (tree: TreeResultType) => void
27
- private __oralTree: any
28
- private __preTree: TreeResultType | null
29
-
30
- private __noOpens = {}
31
-
32
- setOption(option: TreeOptionType) {
33
- initOption(option, this.__option)
34
- return this
35
- }
36
-
37
- use(initTree: any, noOpens = {}) {
38
- const tree = super.use(initTree, noOpens)
39
-
40
- // 校对偏差
41
- if (this.__option.offsetX != 0 || this.__option.offsetY != 0) {
42
- for (const key in tree.node) {
43
- if (!tree.node[key].show) {
44
-
45
- let deep = 0, pid = key
46
- do {
47
- pid = tree.node[pid].pid
48
- deep++
49
- } while (!tree.node[pid].show)
50
-
51
- tree.node[key].left += this.__option.offsetX * deep
52
- tree.node[key].top += this.__option.offsetY * deep
53
- }
54
- }
55
- }
56
-
57
- if (this.__option.type == 'rect') {
58
- if (this.__option.direction == 'LR' || this.__option.direction == "RL") {
59
-
60
- const perW = this.__option.height / tree.size
61
- const perD = this.__option.width / (tree.deep - 1)
62
-
63
- const balanceW = this.__option.y - this.__option.height * 0.5
64
- const flag = this.__option.direction == 'LR' ? 1 : -1
65
-
66
- for (const key in tree.node) {
67
- if (tree.deep == 1) {
68
- tree.node[key].left = this.__option.x + this.__option.width * 0.5 * flag
69
- tree.node[key].top = this.__option.y
70
- } else {
71
- tree.node[key].left = this.__option.x + (tree.node[key].left - 0.5) * perD * flag
72
- tree.node[key].top = tree.node[key].top * perW + balanceW
73
- }
74
- }
75
- } else if (this.__option.direction == 'TB' || this.__option.direction == "BT") {
76
-
77
- const perW = this.__option.width / tree.size
78
- const perD = this.__option.height / (tree.deep - 1)
79
-
80
- const balanceW = this.__option.x - this.__option.width * 0.5
81
- const flag = this.__option.direction == 'TB' ? 1 : -1
82
-
83
-
84
-
85
- for (const key in tree.node) {
86
- tree.node[key].deg = this.__option.direction == 'TB' ? Math.PI * 0.5 : Math.PI * -0.5
87
-
88
- if (tree.deep == 1) {
89
- tree.node[key].left = this.__option.x
90
- tree.node[key].top = this.__option.y + this.__option.height * 0.5 * flag
91
- } else {
92
- const left = tree.node[key].left
93
- tree.node[key].left = tree.node[key].top * perW + balanceW
94
- tree.node[key].top = this.__option.y + (left - 0.5) * perD * flag
95
- }
96
- }
97
-
98
- }
99
-
100
- } else if (this.__option.type == 'circle') {
101
- const cx = this.__option.x, cy = this.__option.y
102
- const deg = Math.PI * 2 / tree.size
103
- const per = this.__option.radius / (tree.deep - 1)
104
-
105
- for (const key in tree.node) {
106
- if (tree.node[key].left == 0.5) {
107
- tree.node[key].left = cx
108
- tree.node[key].top = cy
109
- } else {
110
- const position = rotate(cx, cy, deg * tree.node[key].top, cx + (tree.node[key].left - 0.5) * per, cy)
111
-
112
- tree.node[key].deg = deg * tree.node[key].top
113
- tree.node[key].left = position[0]
114
- tree.node[key].top = position[1]
115
- }
116
- }
117
- }
118
-
119
- return tree
120
- }
121
-
122
- bind(initTree: any, renderBack: (tree: TreeResultType) => void, noOpens = {}) {
123
- this.__rback = renderBack
124
- this.__oralTree = initTree
125
- this.__noOpens = noOpens
126
-
127
- this.__preTree = this.use(this.__oralTree, this.__noOpens)
128
- this.__rback(this.__preTree)
129
-
130
- return this
131
- }
132
-
133
- unbind() {
134
- this.__rback = () => null
135
- this.__oralTree = null
136
- this.__preTree = null
137
- this.__noOpens = {}
138
- return this
139
- }
140
-
141
- doUpdate() {
142
- const newTree = this.use(this.__oralTree, this.__noOpens)
143
-
144
- const cacheTree = JSON.parse(JSON.stringify(newTree))
145
-
146
- animation((deep) => {
147
-
148
- if (this.__preTree) {
149
- for (const key in cacheTree.node) {
150
- if (newTree.node[key].show || this.__preTree.node[key].show) {
151
- cacheTree.node[key].show = true
152
-
153
- cacheTree.node[key].left = this.__preTree.node[key].left + (newTree.node[key].left - this.__preTree.node[key].left) * deep
154
- cacheTree.node[key].top = this.__preTree.node[key].top + (newTree.node[key].top - this.__preTree.node[key].top) * deep
155
- }
156
- }
157
- }
158
- this.__rback(cacheTree)
159
-
160
-
161
- }, this.__option.duration, () => {
162
- this.__preTree = newTree
163
- this.__rback(this.__preTree)
164
- })
165
-
166
- return this
167
- }
168
-
169
- closeNode(id: string) {
170
- if (!this.__preTree) return this
171
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
172
- // @ts-ignore
173
- this.__noOpens[id] = true
174
-
175
- this.doUpdate()
176
- return this
177
- }
178
-
179
- openNode(id: string) {
180
- if (!this.__preTree) return this
181
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
182
- // @ts-ignore
183
- this.__noOpens[id] = false
184
-
185
- this.doUpdate()
186
- return this
187
- }
188
-
189
- toggleNode(id: string) {
190
- if (!this.__preTree) return this
191
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
192
- // @ts-ignore
193
- this.__noOpens[id] = !this.__noOpens[id]
194
-
195
- this.doUpdate()
196
- return this
197
- }
198
-
199
- }
200
-
1
+ import type TreeLayoutType from '../../types/TreeLayout'
2
+ import type { TreeResultType } from '../../types/Tree'
3
+ import type TreeOptionType from '../../types/TreeOption'
4
+
5
+ import Tree from '../common/tree/index'
6
+ import { initOption } from '../common/option'
7
+ import { animation } from "oipage/web/animation/index"
8
+ import rotate from '../rotate'
9
+
10
+ class TreeLayout extends Tree implements TreeLayoutType {
11
+ readonly name: string = 'TreeLayout'
12
+
13
+ private __option = {
14
+ offsetX: 0,
15
+ offsetY: 0,
16
+ duration: 500,
17
+ type: "plain",
18
+ direction: "LR",
19
+ x: 100,
20
+ y: 100,
21
+ width: 100,
22
+ height: 100,
23
+ radius: 100
24
+ }
25
+
26
+ private __rback: (tree: TreeResultType) => void
27
+ private __oralTree: any
28
+ private __preTree: TreeResultType | null
29
+
30
+ private __noOpens = {}
31
+
32
+ setOption(option: TreeOptionType) {
33
+ initOption(option, this.__option)
34
+ return this
35
+ }
36
+
37
+ use(initTree: any, noOpens = {}) {
38
+ const tree = super.use(initTree, noOpens)
39
+
40
+ // 校对偏差
41
+ if (this.__option.offsetX != 0 || this.__option.offsetY != 0) {
42
+ for (const key in tree.node) {
43
+ if (!tree.node[key].show) {
44
+
45
+ let deep = 0, pid = key
46
+ do {
47
+ pid = tree.node[pid].pid
48
+ deep++
49
+ } while (!tree.node[pid].show)
50
+
51
+ tree.node[key].left += this.__option.offsetX * deep
52
+ tree.node[key].top += this.__option.offsetY * deep
53
+ }
54
+ }
55
+ }
56
+
57
+ if (this.__option.type == 'rect') {
58
+ if (this.__option.direction == 'LR' || this.__option.direction == "RL") {
59
+
60
+ const perW = this.__option.height / tree.size
61
+ const perD = this.__option.width / (tree.deep - 1)
62
+
63
+ const balanceW = this.__option.y - this.__option.height * 0.5
64
+ const flag = this.__option.direction == 'LR' ? 1 : -1
65
+
66
+ for (const key in tree.node) {
67
+ if (tree.deep == 1) {
68
+ tree.node[key].left = this.__option.x + this.__option.width * 0.5 * flag
69
+ tree.node[key].top = this.__option.y
70
+ } else {
71
+ tree.node[key].left = this.__option.x + (tree.node[key].left - 0.5) * perD * flag
72
+ tree.node[key].top = tree.node[key].top * perW + balanceW
73
+ }
74
+ }
75
+ } else if (this.__option.direction == 'TB' || this.__option.direction == "BT") {
76
+
77
+ const perW = this.__option.width / tree.size
78
+ const perD = this.__option.height / (tree.deep - 1)
79
+
80
+ const balanceW = this.__option.x - this.__option.width * 0.5
81
+ const flag = this.__option.direction == 'TB' ? 1 : -1
82
+
83
+
84
+
85
+ for (const key in tree.node) {
86
+ tree.node[key].deg = this.__option.direction == 'TB' ? Math.PI * 0.5 : Math.PI * -0.5
87
+
88
+ if (tree.deep == 1) {
89
+ tree.node[key].left = this.__option.x
90
+ tree.node[key].top = this.__option.y + this.__option.height * 0.5 * flag
91
+ } else {
92
+ const left = tree.node[key].left
93
+ tree.node[key].left = tree.node[key].top * perW + balanceW
94
+ tree.node[key].top = this.__option.y + (left - 0.5) * perD * flag
95
+ }
96
+ }
97
+
98
+ }
99
+
100
+ } else if (this.__option.type == 'circle') {
101
+ const cx = this.__option.x, cy = this.__option.y
102
+ const deg = Math.PI * 2 / tree.size
103
+ const per = this.__option.radius / (tree.deep - 1)
104
+
105
+ for (const key in tree.node) {
106
+ if (tree.node[key].left == 0.5) {
107
+ tree.node[key].left = cx
108
+ tree.node[key].top = cy
109
+ } else {
110
+ const position = rotate(cx, cy, deg * tree.node[key].top, cx + (tree.node[key].left - 0.5) * per, cy)
111
+
112
+ tree.node[key].deg = deg * tree.node[key].top
113
+ tree.node[key].left = position[0]
114
+ tree.node[key].top = position[1]
115
+ }
116
+ }
117
+ }
118
+
119
+ return tree
120
+ }
121
+
122
+ bind(initTree: any, renderBack: (tree: TreeResultType) => void, noOpens = {}) {
123
+ this.__rback = renderBack
124
+ this.__oralTree = initTree
125
+ this.__noOpens = noOpens
126
+
127
+ this.__preTree = this.use(this.__oralTree, this.__noOpens)
128
+ this.__rback(this.__preTree)
129
+
130
+ return this
131
+ }
132
+
133
+ unbind() {
134
+ this.__rback = () => null
135
+ this.__oralTree = null
136
+ this.__preTree = null
137
+ this.__noOpens = {}
138
+ return this
139
+ }
140
+
141
+ doUpdate() {
142
+ const newTree = this.use(this.__oralTree, this.__noOpens)
143
+
144
+ const cacheTree = JSON.parse(JSON.stringify(newTree))
145
+
146
+ animation((deep) => {
147
+
148
+ if (this.__preTree) {
149
+ for (const key in cacheTree.node) {
150
+ if (newTree.node[key].show || this.__preTree.node[key].show) {
151
+ cacheTree.node[key].show = true
152
+
153
+ cacheTree.node[key].left = this.__preTree.node[key].left + (newTree.node[key].left - this.__preTree.node[key].left) * deep
154
+ cacheTree.node[key].top = this.__preTree.node[key].top + (newTree.node[key].top - this.__preTree.node[key].top) * deep
155
+ }
156
+ }
157
+ }
158
+ this.__rback(cacheTree)
159
+
160
+
161
+ }, this.__option.duration, () => {
162
+ this.__preTree = newTree
163
+ this.__rback(this.__preTree)
164
+ })
165
+
166
+ return this
167
+ }
168
+
169
+ closeNode(id: string) {
170
+ if (!this.__preTree) return this
171
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
172
+ // @ts-ignore
173
+ this.__noOpens[id] = true
174
+
175
+ this.doUpdate()
176
+ return this
177
+ }
178
+
179
+ openNode(id: string) {
180
+ if (!this.__preTree) return this
181
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
182
+ // @ts-ignore
183
+ this.__noOpens[id] = false
184
+
185
+ this.doUpdate()
186
+ return this
187
+ }
188
+
189
+ toggleNode(id: string) {
190
+ if (!this.__preTree) return this
191
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
192
+ // @ts-ignore
193
+ this.__noOpens[id] = !this.__noOpens[id]
194
+
195
+ this.doUpdate()
196
+ return this
197
+ }
198
+
199
+ }
200
+
201
201
  export default TreeLayout
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
- const 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
  }
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
- 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
- ]
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
  }