vislite 1.12.0 → 2.0.0-next.0

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 (180) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +414 -403
  3. package/LICENSE +20 -20
  4. package/README-en.md +245 -245
  5. package/README.md +245 -245
  6. package/bin/formatArgv.js +30 -30
  7. package/bin/help.js +21 -17
  8. package/bin/minialipay.js +27 -0
  9. package/bin/run +25 -21
  10. package/bin/skills.js +26 -26
  11. package/lib/BarLayout/index.es.js +348 -348
  12. package/lib/Buffer/index.es.js +34 -34
  13. package/lib/Canvas/index.es.js +804 -804
  14. package/lib/Cardinal/index.es.js +89 -89
  15. package/lib/Eoap/index.es.js +32 -32
  16. package/lib/Hermite/index.es.js +34 -34
  17. package/lib/MapCoordinate/index.es.js +199 -199
  18. package/lib/Matrix4/index.es.js +123 -123
  19. package/lib/Mercator/index.es.js +18 -18
  20. package/lib/PieLayout/index.es.js +115 -115
  21. package/lib/RawCanvas/index.es.js +736 -736
  22. package/lib/SVG/index.es.js +626 -626
  23. package/lib/Shader/index.es.js +34 -34
  24. package/lib/Texture/index.es.js +52 -52
  25. package/lib/TreeLayout/index.es.js +301 -301
  26. package/lib/animation/index.es.js +2 -2
  27. package/lib/assemble/index.es.js +19 -19
  28. package/lib/getLoopColors/index.es.js +34 -34
  29. package/lib/getWebGLContext/index.es.js +61 -61
  30. package/lib/index.umd.js +2797 -2797
  31. package/lib/index.umd.min.js +1 -1
  32. package/lib/initOption/index.es.js +5 -5
  33. package/lib/mergeOption/index.es.js +34 -34
  34. package/lib/move/index.es.js +6 -6
  35. package/lib/rotate/index.es.js +6 -6
  36. package/lib/ruler/index.es.js +136 -136
  37. package/lib/scale/index.es.js +5 -5
  38. package/minialipay/ui-canvas/drawImage.js +35 -35
  39. package/minialipay/ui-canvas/index.acss +4 -4
  40. package/minialipay/ui-canvas/index.axml +3 -3
  41. package/minialipay/ui-canvas/index.d.ts +1 -1
  42. package/minialipay/ui-canvas/index.js +100 -100
  43. package/minialipay/ui-canvas/index.json +6 -6
  44. package/miniprogram/ui-canvas/drawImage.js +35 -35
  45. package/miniprogram/ui-canvas/index.js +125 -125
  46. package/miniprogram/ui-canvas/index.json +4 -4
  47. package/miniprogram/ui-canvas/index.wxml +4 -4
  48. package/miniprogram/ui-canvas/index.wxss +5 -5
  49. package/package/BarLayout/index.ts +2 -2
  50. package/package/Buffer/index.ts +2 -2
  51. package/package/Canvas/index.ts +2 -2
  52. package/package/Cardinal/index.ts +2 -2
  53. package/package/Eoap/index.ts +2 -2
  54. package/package/Hermite/index.ts +2 -2
  55. package/package/MapCoordinate/index.ts +2 -2
  56. package/package/Matrix4/index.ts +2 -2
  57. package/package/Mercator/index.ts +2 -2
  58. package/package/PieLayout/index.ts +2 -2
  59. package/package/RawCanvas/index.ts +2 -2
  60. package/package/SVG/index.ts +2 -2
  61. package/package/Shader/index.ts +2 -2
  62. package/package/Texture/index.ts +2 -2
  63. package/package/TreeLayout/index.ts +2 -2
  64. package/package/animation/index.ts +5 -5
  65. package/package/assemble/index.ts +2 -2
  66. package/package/getLoopColors/index.ts +2 -2
  67. package/package/getWebGLContext/index.ts +40 -40
  68. package/package/index.ts +84 -84
  69. package/package/initOption/index.ts +2 -2
  70. package/package/mergeOption/index.ts +2 -2
  71. package/package/move/index.ts +2 -2
  72. package/package/rotate/index.ts +2 -2
  73. package/package/ruler/index.ts +2 -2
  74. package/package/scale/index.ts +2 -2
  75. package/package/throttle/index.ts +2 -2
  76. package/package.json +103 -79
  77. package/skills/vislite-lib/BarLayout.md +117 -117
  78. package/skills/vislite-lib/Canvas.md +183 -183
  79. package/skills/vislite-lib/Interpolation.md +129 -129
  80. package/skills/vislite-lib/Matrix.md +174 -174
  81. package/skills/vislite-lib/PieLayout.md +131 -131
  82. package/skills/vislite-lib/Projections.md +158 -158
  83. package/skills/vislite-lib/SKILL.md +179 -179
  84. package/skills/vislite-lib/SVG.md +137 -137
  85. package/skills/vislite-lib/TreeLayout.md +176 -176
  86. package/skills/vislite-lib/Utilities.md +261 -261
  87. package/skills/vislite-lib/WebGL.md +106 -106
  88. package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
  89. package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
  90. package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
  91. package/src/Canvas.ts +89 -89
  92. package/src/Eoap.ts +66 -66
  93. package/src/Matrix4/index.ts +84 -84
  94. package/src/Matrix4/move.ts +12 -12
  95. package/src/Matrix4/rotate.ts +15 -15
  96. package/src/Matrix4/scale.ts +11 -11
  97. package/src/Matrix4/transform.ts +64 -64
  98. package/src/Mercator.ts +27 -27
  99. package/src/SVG.ts +86 -86
  100. package/src/common/assemble.ts +30 -30
  101. package/src/common/canvas/arc.ts +51 -51
  102. package/src/common/canvas/config.ts +176 -176
  103. package/src/common/canvas/default.ts +64 -64
  104. package/src/common/canvas/gradient.ts +31 -31
  105. package/src/common/canvas/index.ts +189 -189
  106. package/src/common/canvas/painter.ts +475 -475
  107. package/src/common/canvas/texts.ts +18 -18
  108. package/src/common/map/getBoundary.ts +15 -15
  109. package/src/common/map/tool.ts +29 -29
  110. package/src/common/option.ts +31 -31
  111. package/src/common/setStyle.ts +5 -5
  112. package/src/common/svg/config.ts +213 -213
  113. package/src/common/svg/default.ts +29 -29
  114. package/src/common/svg/gradient.ts +53 -53
  115. package/src/common/svg/index.ts +420 -420
  116. package/src/common/svg/tool.ts +51 -51
  117. package/src/common/tree/index.ts +25 -25
  118. package/src/common/tree/toInnerTree.ts +61 -61
  119. package/src/common/tree/toPlainTree.ts +135 -135
  120. package/src/common/type.ts +26 -26
  121. package/src/common/webgl/buffer.ts +79 -79
  122. package/src/common/webgl/getWebGLContext.ts +45 -45
  123. package/src/common/webgl/shader.ts +75 -75
  124. package/src/common/webgl/texture.ts +98 -98
  125. package/src/coordinate/MapCoordinate.ts +80 -80
  126. package/src/getLoopColors.ts +42 -42
  127. package/src/interpolation/Cardinal.ts +110 -110
  128. package/src/interpolation/Hermite.ts +65 -65
  129. package/src/layout/BarLayout.ts +249 -249
  130. package/src/layout/PieLayout.ts +146 -146
  131. package/src/layout/TreeLayout.ts +200 -200
  132. package/src/move.ts +7 -7
  133. package/src/rotate.ts +7 -7
  134. package/src/ruler.ts +209 -209
  135. package/src/scale.ts +6 -6
  136. package/types/Bar.d.ts +91 -91
  137. package/types/BarConfig.d.ts +4 -4
  138. package/types/BarLayout.d.ts +48 -48
  139. package/types/BarOption.d.ts +31 -31
  140. package/types/Buffer.d.ts +30 -30
  141. package/types/Canvas.d.ts +379 -379
  142. package/types/CanvasConfig.d.ts +61 -61
  143. package/types/CanvasOption.d.ts +13 -13
  144. package/types/CanvasOpts.d.ts +9 -9
  145. package/types/Cardinal.d.ts +20 -20
  146. package/types/Gradient.d.ts +20 -20
  147. package/types/Hermite.d.ts +25 -25
  148. package/types/Map.d.ts +9 -9
  149. package/types/MapConfig.d.ts +27 -27
  150. package/types/MapCoordinate.d.ts +22 -22
  151. package/types/Matrix4.d.ts +79 -79
  152. package/types/Pie.d.ts +73 -73
  153. package/types/PieConfig.d.ts +26 -26
  154. package/types/PieLayout.d.ts +40 -40
  155. package/types/PieOption.d.ts +21 -21
  156. package/types/SVG.d.ts +282 -282
  157. package/types/SVGConfig.d.ts +54 -54
  158. package/types/Shader.d.ts +22 -22
  159. package/types/Texture.d.ts +22 -22
  160. package/types/Tree.d.ts +74 -74
  161. package/types/TreeConfig.d.ts +52 -52
  162. package/types/TreeLayout.d.ts +71 -71
  163. package/types/TreeOption.d.ts +48 -48
  164. package/types/animation.d.ts +26 -26
  165. package/types/assemble.d.ts +14 -14
  166. package/types/getLoopColors.d.ts +13 -13
  167. package/types/getWebGLContext.d.ts +7 -7
  168. package/types/index.d.ts +220 -220
  169. package/types/module.d.ts +110 -110
  170. package/types/move.d.ts +15 -15
  171. package/types/option.d.ts +12 -12
  172. package/types/painterConfig.d.ts +14 -14
  173. package/types/rotate.d.ts +15 -15
  174. package/types/ruler.d.ts +24 -24
  175. package/types/scale.d.ts +15 -15
  176. package/types/throttle.d.ts +6 -6
  177. package/types/ui-canvas.d.ts +4 -4
  178. package/types/uni-canvas.d.ts +3 -3
  179. package/uni-app/drawImage.js +19 -19
  180. package/uni-app/ui-canvas.vue +295 -295
@@ -1,130 +1,130 @@
1
- # 插值函数 API
2
-
3
- VISLite 提供 Cardinal 和 Hermite 两种三次插值函数,用于平滑曲线绘制。
4
-
5
- ## Hermite 插值
6
-
7
- Hermite 插值需要指定两个端点和两个端点处的斜率。
8
-
9
- ### 引入
10
-
11
- ```js
12
- import { Hermite } from 'vislite';
13
- ```
14
-
15
- ### 初始化
16
-
17
- ```js
18
- var hermite = new Hermite(u);
19
- ```
20
-
21
- - **u**: 张弛系数,控制曲线在端点处的弯曲程度,默认 0.5
22
-
23
- ### 设置点位置
24
-
25
- ```js
26
- hermite.setP(x1, y1, x2, y2, s1, s2);
27
- ```
28
-
29
- 参数说明:
30
- - **x1, y1**: 左边点位置
31
- - **x2, y2**: 右边点位置
32
- - **s1**: 左边点的切线斜率
33
- - **s2**: 右边点的切线斜率
34
-
35
- ### 计算插值
36
-
37
- ```js
38
- var y = hermite.use(x);
39
- ```
40
-
41
- 根据 x 值返回对应的 y 值。
42
-
43
- ### 示例
44
-
45
- ```js
46
- var hermite = new Hermite(0.5);
47
-
48
- hermite.setP(0, 0, 100, 100, 0, 1);
49
-
50
- // 计算x=50时的y值
51
- var y = hermite.use(50);
52
- ```
53
-
54
- ---
55
-
56
- ## Cardinal 插值
57
-
58
- Cardinal 插值是 Hermite 的扩展,只需提供点序列,系统自动计算斜率。
59
-
60
- ### 引入
61
-
62
- ```js
63
- import { Cardinal } from 'vislite';
64
- ```
65
-
66
- ### 初始化
67
-
68
- ```js
69
- var cardinal = new Cardinal(t);
70
- ```
71
-
72
- - **t**: 张弛系数,控制曲线走势,默认 0
73
- - t = 0:默认曲线
74
- - t = -1:分水岭效果
75
- - |t| 越大,曲线调整越剧烈
76
-
77
- ### 设置点序列
78
-
79
- ```js
80
- cardinal.setP([[x1, y1], [x2, y2], [x3, y3], ...]);
81
- ```
82
-
83
- 至少需要两个点。
84
-
85
- ### 计算插值
86
-
87
- ```js
88
- var y = cardinal.use(x);
89
- ```
90
-
91
- 根据 x 值返回对应的 y 值。
92
-
93
- ### 示例
94
-
95
- ```js
96
- var cardinal = new Cardinal(0);
97
-
98
- cardinal.setP([
99
- [0, 0],
100
- [25, 25],
101
- [50, 10],
102
- [75, 50],
103
- [100, 100]
104
- ]);
105
-
106
- // 绘制平滑曲线
107
- for (var x = 0; x <= 100; x += 1) {
108
- var y = cardinal.use(x);
109
- painter.lineTo(x, y);
110
- }
111
- painter.stroke();
112
- ```
113
-
114
- ---
115
-
116
- ## 对比与选择
117
-
118
- | 特性 | Hermite | Cardinal |
119
- |------|---------|----------|
120
- | 端点斜率 | 手动指定 | 自动计算 |
121
- | 参数数量 | 6个 | 2个(点序列) |
122
- | 灵活性 | 高(可自定义斜率) | 中(受邻近点影响) |
123
- | 适用场景 | 精确控制曲线形状 | 自然平滑的曲线 |
124
-
125
- ## 应用场景
126
-
127
- - **折线图平滑**: 使用 Cardinal
128
- - **动画路径**: 使用 Hermite 自定义缓动
129
- - **字体渲染**: 使用 Cardinal 平滑字形边缘
1
+ # 插值函数 API
2
+
3
+ VISLite 提供 Cardinal 和 Hermite 两种三次插值函数,用于平滑曲线绘制。
4
+
5
+ ## Hermite 插值
6
+
7
+ Hermite 插值需要指定两个端点和两个端点处的斜率。
8
+
9
+ ### 引入
10
+
11
+ ```js
12
+ import { Hermite } from 'vislite';
13
+ ```
14
+
15
+ ### 初始化
16
+
17
+ ```js
18
+ var hermite = new Hermite(u);
19
+ ```
20
+
21
+ - **u**: 张弛系数,控制曲线在端点处的弯曲程度,默认 0.5
22
+
23
+ ### 设置点位置
24
+
25
+ ```js
26
+ hermite.setP(x1, y1, x2, y2, s1, s2);
27
+ ```
28
+
29
+ 参数说明:
30
+ - **x1, y1**: 左边点位置
31
+ - **x2, y2**: 右边点位置
32
+ - **s1**: 左边点的切线斜率
33
+ - **s2**: 右边点的切线斜率
34
+
35
+ ### 计算插值
36
+
37
+ ```js
38
+ var y = hermite.use(x);
39
+ ```
40
+
41
+ 根据 x 值返回对应的 y 值。
42
+
43
+ ### 示例
44
+
45
+ ```js
46
+ var hermite = new Hermite(0.5);
47
+
48
+ hermite.setP(0, 0, 100, 100, 0, 1);
49
+
50
+ // 计算x=50时的y值
51
+ var y = hermite.use(50);
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Cardinal 插值
57
+
58
+ Cardinal 插值是 Hermite 的扩展,只需提供点序列,系统自动计算斜率。
59
+
60
+ ### 引入
61
+
62
+ ```js
63
+ import { Cardinal } from 'vislite';
64
+ ```
65
+
66
+ ### 初始化
67
+
68
+ ```js
69
+ var cardinal = new Cardinal(t);
70
+ ```
71
+
72
+ - **t**: 张弛系数,控制曲线走势,默认 0
73
+ - t = 0:默认曲线
74
+ - t = -1:分水岭效果
75
+ - |t| 越大,曲线调整越剧烈
76
+
77
+ ### 设置点序列
78
+
79
+ ```js
80
+ cardinal.setP([[x1, y1], [x2, y2], [x3, y3], ...]);
81
+ ```
82
+
83
+ 至少需要两个点。
84
+
85
+ ### 计算插值
86
+
87
+ ```js
88
+ var y = cardinal.use(x);
89
+ ```
90
+
91
+ 根据 x 值返回对应的 y 值。
92
+
93
+ ### 示例
94
+
95
+ ```js
96
+ var cardinal = new Cardinal(0);
97
+
98
+ cardinal.setP([
99
+ [0, 0],
100
+ [25, 25],
101
+ [50, 10],
102
+ [75, 50],
103
+ [100, 100]
104
+ ]);
105
+
106
+ // 绘制平滑曲线
107
+ for (var x = 0; x <= 100; x += 1) {
108
+ var y = cardinal.use(x);
109
+ painter.lineTo(x, y);
110
+ }
111
+ painter.stroke();
112
+ ```
113
+
114
+ ---
115
+
116
+ ## 对比与选择
117
+
118
+ | 特性 | Hermite | Cardinal |
119
+ |------|---------|----------|
120
+ | 端点斜率 | 手动指定 | 自动计算 |
121
+ | 参数数量 | 6个 | 2个(点序列) |
122
+ | 灵活性 | 高(可自定义斜率) | 中(受邻近点影响) |
123
+ | 适用场景 | 精确控制曲线形状 | 自然平滑的曲线 |
124
+
125
+ ## 应用场景
126
+
127
+ - **折线图平滑**: 使用 Cardinal
128
+ - **动画路径**: 使用 Hermite 自定义缓动
129
+ - **字体渲染**: 使用 Cardinal 平滑字形边缘
130
130
  - **地图等高线**: 使用 Hermite 精确控制地形变化
@@ -1,175 +1,175 @@
1
- # Matrix4 矩阵变换
2
-
3
- Matrix4 提供 4x4 矩阵变换能力,用于复杂的图形变换。
4
-
5
- ## 引入
6
-
7
- ```js
8
- import { Matrix4 } from 'vislite';
9
- ```
10
-
11
- ## 初始化
12
-
13
- ```js
14
- var matrix = new Matrix4();
15
- // 或指定初始矩阵
16
- var matrix = new Matrix4([1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]);
17
- ```
18
-
19
- ## 基本变换
20
-
21
- ### 平移
22
-
23
- ```js
24
- matrix.move(dis, a, b, c);
25
- ```
26
-
27
- 参数说明:
28
- - **dis**: 移动距离
29
- - **a, b, c**: 移动方向向量的 x, y, z 分量
30
-
31
- ```js
32
- // 向x轴正方向移动10
33
- matrix.move(10, 1, 0, 0);
34
-
35
- // 向y轴负方向移动5
36
- matrix.move(-5, 0, 1, 0);
37
- ```
38
-
39
- ### 旋转
40
-
41
- ```js
42
- matrix.rotate(deg, a1, b1, c1, a2, b2, c2);
43
- ```
44
-
45
- 参数说明:
46
- - **deg**: 旋转角度(弧度制)
47
- - **a1, b1, c1**: 旋转轴向量(确定旋转平面)
48
- - **a2, b2, c2**: 旋转正方向向量
49
-
50
- ```js
51
- // 绕x轴旋转
52
- matrix.rotate(Math.PI, 1, 0, 0);
53
-
54
- // 绕y轴旋转
55
- matrix.rotate(Math.PI, 0, 1, 0);
56
-
57
- // 绕z轴旋转
58
- matrix.rotate(Math.PI, 0, 0, 1);
59
- ```
60
-
61
- ### 缩放
62
-
63
- ```js
64
- matrix.scale(xTimes, yTimes, zTimes, cx, cy, cz);
65
- ```
66
-
67
- 参数说明:
68
- - **xTimes, yTimes, zTimes**: 各轴缩放比例
69
- - **cx, cy, cz**: 缩放中心点坐标
70
-
71
- ```js
72
- // 以原点为中心放大2倍
73
- matrix.scale(2, 2, 2);
74
-
75
- // 以(10, 10, 0)为中心放大
76
- matrix.scale(2, 2, 1, 10, 10, 0);
77
- ```
78
-
79
- ## 矩阵运算
80
-
81
- ### 矩阵乘法
82
-
83
- ```js
84
- matrix.multiply(newMatrix4, flag);
85
- ```
86
-
87
- - **flag**: false(默认)新矩阵左乘当前矩阵;true 则右乘
88
-
89
- ### 应用变换
90
-
91
- ```js
92
- var [x, y, z, w] = matrix.use(px, py, pz, pw);
93
- ```
94
-
95
- 将变换应用到坐标点,返回变换后的齐次坐标。
96
-
97
- ### 获取矩阵值
98
-
99
- ```js
100
- var values = matrix.value();
101
- ```
102
-
103
- 返回 4x4 矩阵的 16 个元素数组(列主序存储)。
104
-
105
- ### 重置矩阵
106
-
107
- ```js
108
- matrix.setValue([1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]);
109
- ```
110
-
111
- ## 使用示例
112
-
113
- ### 组合变换
114
-
115
- ```js
116
- var matrix = new Matrix4();
117
-
118
- // 先平移再旋转
119
- matrix.move(100, 1, 0, 0);
120
- matrix.rotate(Math.PI / 4, 0, 0, 1);
121
-
122
- // 应用到点
123
- var [x, y] = matrix.use(10, 20, 0);
124
- ```
125
-
126
- ### 3D 变换
127
-
128
- ```js
129
- var matrix = new Matrix4();
130
-
131
- // 绕x轴旋转45度
132
- matrix.rotate(Math.PI / 4, 1, 0, 0);
133
-
134
- // 绕y轴旋转30度
135
- matrix.rotate(Math.PI / 6, 0, 1, 0);
136
-
137
- // 应用到3D点
138
- var [x, y, z, w] = matrix.use(10, 20, 30);
139
- ```
140
-
141
- ---
142
-
143
- ## 基础变换函数
144
-
145
- 除 Matrix4 类外,还提供独立的基础变换函数:
146
-
147
- ### rotate 旋转
148
-
149
- ```js
150
- import { rotate } from 'vislite';
151
-
152
- var [x, y] = rotate(cx, cy, deg, px, py);
153
- ```
154
-
155
- 绕点 (cx, cy) 旋转 deg 弧度后的 (px, py) 坐标。
156
-
157
- ### move 平移
158
-
159
- ```js
160
- import { move } from 'vislite';
161
-
162
- var [x, y, z] = move(dis, a, b, c, px, py, pz);
163
- ```
164
-
165
- 沿向量 (a, b, c) 方向移动 dis 距离后的坐标。
166
-
167
- ### scale 缩放
168
-
169
- ```js
170
- import { scale } from 'vislite';
171
-
172
- var [x, y, z] = scale(times, cx, cy, cz, px, py, pz);
173
- ```
174
-
1
+ # Matrix4 矩阵变换
2
+
3
+ Matrix4 提供 4x4 矩阵变换能力,用于复杂的图形变换。
4
+
5
+ ## 引入
6
+
7
+ ```js
8
+ import { Matrix4 } from 'vislite';
9
+ ```
10
+
11
+ ## 初始化
12
+
13
+ ```js
14
+ var matrix = new Matrix4();
15
+ // 或指定初始矩阵
16
+ var matrix = new Matrix4([1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]);
17
+ ```
18
+
19
+ ## 基本变换
20
+
21
+ ### 平移
22
+
23
+ ```js
24
+ matrix.move(dis, a, b, c);
25
+ ```
26
+
27
+ 参数说明:
28
+ - **dis**: 移动距离
29
+ - **a, b, c**: 移动方向向量的 x, y, z 分量
30
+
31
+ ```js
32
+ // 向x轴正方向移动10
33
+ matrix.move(10, 1, 0, 0);
34
+
35
+ // 向y轴负方向移动5
36
+ matrix.move(-5, 0, 1, 0);
37
+ ```
38
+
39
+ ### 旋转
40
+
41
+ ```js
42
+ matrix.rotate(deg, a1, b1, c1, a2, b2, c2);
43
+ ```
44
+
45
+ 参数说明:
46
+ - **deg**: 旋转角度(弧度制)
47
+ - **a1, b1, c1**: 旋转轴向量(确定旋转平面)
48
+ - **a2, b2, c2**: 旋转正方向向量
49
+
50
+ ```js
51
+ // 绕x轴旋转
52
+ matrix.rotate(Math.PI, 1, 0, 0);
53
+
54
+ // 绕y轴旋转
55
+ matrix.rotate(Math.PI, 0, 1, 0);
56
+
57
+ // 绕z轴旋转
58
+ matrix.rotate(Math.PI, 0, 0, 1);
59
+ ```
60
+
61
+ ### 缩放
62
+
63
+ ```js
64
+ matrix.scale(xTimes, yTimes, zTimes, cx, cy, cz);
65
+ ```
66
+
67
+ 参数说明:
68
+ - **xTimes, yTimes, zTimes**: 各轴缩放比例
69
+ - **cx, cy, cz**: 缩放中心点坐标
70
+
71
+ ```js
72
+ // 以原点为中心放大2倍
73
+ matrix.scale(2, 2, 2);
74
+
75
+ // 以(10, 10, 0)为中心放大
76
+ matrix.scale(2, 2, 1, 10, 10, 0);
77
+ ```
78
+
79
+ ## 矩阵运算
80
+
81
+ ### 矩阵乘法
82
+
83
+ ```js
84
+ matrix.multiply(newMatrix4, flag);
85
+ ```
86
+
87
+ - **flag**: false(默认)新矩阵左乘当前矩阵;true 则右乘
88
+
89
+ ### 应用变换
90
+
91
+ ```js
92
+ var [x, y, z, w] = matrix.use(px, py, pz, pw);
93
+ ```
94
+
95
+ 将变换应用到坐标点,返回变换后的齐次坐标。
96
+
97
+ ### 获取矩阵值
98
+
99
+ ```js
100
+ var values = matrix.value();
101
+ ```
102
+
103
+ 返回 4x4 矩阵的 16 个元素数组(列主序存储)。
104
+
105
+ ### 重置矩阵
106
+
107
+ ```js
108
+ matrix.setValue([1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]);
109
+ ```
110
+
111
+ ## 使用示例
112
+
113
+ ### 组合变换
114
+
115
+ ```js
116
+ var matrix = new Matrix4();
117
+
118
+ // 先平移再旋转
119
+ matrix.move(100, 1, 0, 0);
120
+ matrix.rotate(Math.PI / 4, 0, 0, 1);
121
+
122
+ // 应用到点
123
+ var [x, y] = matrix.use(10, 20, 0);
124
+ ```
125
+
126
+ ### 3D 变换
127
+
128
+ ```js
129
+ var matrix = new Matrix4();
130
+
131
+ // 绕x轴旋转45度
132
+ matrix.rotate(Math.PI / 4, 1, 0, 0);
133
+
134
+ // 绕y轴旋转30度
135
+ matrix.rotate(Math.PI / 6, 0, 1, 0);
136
+
137
+ // 应用到3D点
138
+ var [x, y, z, w] = matrix.use(10, 20, 30);
139
+ ```
140
+
141
+ ---
142
+
143
+ ## 基础变换函数
144
+
145
+ 除 Matrix4 类外,还提供独立的基础变换函数:
146
+
147
+ ### rotate 旋转
148
+
149
+ ```js
150
+ import { rotate } from 'vislite';
151
+
152
+ var [x, y] = rotate(cx, cy, deg, px, py);
153
+ ```
154
+
155
+ 绕点 (cx, cy) 旋转 deg 弧度后的 (px, py) 坐标。
156
+
157
+ ### move 平移
158
+
159
+ ```js
160
+ import { move } from 'vislite';
161
+
162
+ var [x, y, z] = move(dis, a, b, c, px, py, pz);
163
+ ```
164
+
165
+ 沿向量 (a, b, c) 方向移动 dis 距离后的坐标。
166
+
167
+ ### scale 缩放
168
+
169
+ ```js
170
+ import { scale } from 'vislite';
171
+
172
+ var [x, y, z] = scale(times, cx, cy, cz, px, py, pz);
173
+ ```
174
+
175
175
  以 (cx, cy, cz) 为中心缩放 times 倍后的坐标。