vislite 0.5.0 → 0.5.2-alpha.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.
- package/.editorconfig +18 -18
- package/AUTHORS.txt +6 -6
- package/CHANGELOG +5 -0
- package/LICENSE +20 -20
- package/README.md +69 -69
- package/miniprogram/ui-canvas/index.js +107 -107
- package/miniprogram/ui-canvas/index.json +4 -4
- package/miniprogram/ui-canvas/index.wxml +4 -4
- package/miniprogram/ui-canvas/index.wxss +5 -5
- package/package/Buffer/index.ts +2 -2
- package/package/Canvas/index.ts +2 -2
- package/package/Cardinal/index.ts +2 -2
- package/package/Eoap/index.ts +2 -2
- package/package/Hermite/index.ts +2 -2
- package/package/Matrix4/index.ts +2 -2
- package/package/Mercator/index.ts +2 -2
- package/package/OralCanvas/index.ts +2 -2
- package/package/OralWebGL/index.ts +2 -2
- package/package/SVG/index.ts +2 -2
- package/package/Shader/index.ts +39 -39
- package/package/Texture/index.ts +2 -2
- package/package/TreeLayout/index.ts +2 -2
- package/package/WebGL/index.ts +2 -2
- package/package/animation/index.ts +2 -2
- package/package/formatColor/index.ts +2 -2
- package/package/getLoopColors/index.ts +2 -2
- package/package/getWebGLContext/index.ts +39 -39
- package/package/resizeObserver/index.ts +2 -2
- package/package/rotate/index.ts +2 -2
- package/package/ruler/index.ts +2 -2
- package/package/throttle/index.ts +2 -2
- package/package/viewHandler/index.ts +2 -2
- package/package.json +1 -1
- package/src/Canvas.ts +67 -67
- package/src/Matrix4/move.ts +12 -12
- package/src/Matrix4/rotate.ts +15 -15
- package/src/Matrix4/scale.ts +11 -11
- package/src/Matrix4/transform.ts +64 -64
- package/src/SVG.ts +24 -24
- package/src/WebGL.ts +66 -66
- package/src/animation.ts +98 -98
- package/src/common/assemble.ts +22 -22
- package/src/common/canvas/arc.ts +50 -50
- package/src/common/canvas/config.ts +158 -158
- package/src/common/canvas/gradient.ts +29 -29
- package/src/common/canvas/index.ts +168 -168
- package/src/common/canvas/painter.ts +426 -426
- package/src/common/canvas/texts.ts +18 -18
- package/src/common/mergeOption.ts +6 -6
- package/src/common/setStyle.ts +5 -5
- package/src/common/svg/config.ts +174 -174
- package/src/common/svg/tool.ts +44 -44
- package/src/common/tree/index.ts +25 -25
- package/src/common/tree/toInnerTree.ts +56 -56
- package/src/common/tree/toPlainTree.ts +131 -131
- package/src/common/webgl/buffer.ts +79 -79
- package/src/common/webgl/doDraw.ts +108 -108
- package/src/common/webgl/getColorFactory.ts +26 -26
- package/src/common/webgl/getShader.ts +48 -48
- package/src/common/webgl/getTexture.ts +11 -11
- package/src/common/webgl/getWebGLContext.ts +27 -27
- package/src/common/webgl/index.ts +223 -223
- package/src/common/webgl/shader.ts +75 -75
- package/src/common/webgl/texture.ts +96 -96
- package/src/formatColor.ts +44 -44
- package/src/getLoopColors.ts +42 -42
- package/src/interpolation/Cardinal.ts +110 -110
- package/src/interpolation/Hermite.ts +65 -65
- package/src/resizeObserver.ts +36 -36
- package/src/ruler.ts +188 -188
- package/src/shader/fsColor.c +7 -7
- package/src/shader/fsColors.c +7 -7
- package/src/shader/fsCube.c +8 -8
- package/src/shader/fsImage.c +8 -8
- package/src/shader/vsColor.c +17 -17
- package/src/shader/vsColors.c +13 -13
- package/src/shader/vsCube.c +13 -13
- package/src/shader/vsImage.c +13 -13
- package/src/throttle.ts +51 -51
- package/src/viewHandler.ts +158 -158
- package/types/Buffer.d.ts +23 -23
- package/types/Canvas.d.ts +300 -300
- package/types/CanvasOption.d.ts +7 -7
- package/types/Cardinal.d.ts +13 -13
- package/types/Gradient.d.ts +14 -14
- package/types/Hermite.d.ts +18 -18
- package/types/Object3D.d.ts +114 -114
- package/types/SVGConfig.d.ts +76 -76
- package/types/Scene3D.d.ts +6 -6
- package/types/Shader.d.ts +21 -21
- package/types/Texture.d.ts +16 -16
- package/types/Tree.d.ts +69 -69
- package/types/TreeConfig.d.ts +24 -24
- package/types/TreeOption.d.ts +48 -48
- package/types/WebGL.d.ts +38 -38
- package/types/WebGLOption.d.ts +7 -7
- package/types/animation.d.ts +6 -6
- package/types/formatColor.d.ts +2 -2
- package/types/getLoopColors.d.ts +2 -2
- package/types/getWebGLContext.d.ts +2 -2
- package/types/painterConfig.d.ts +2 -2
- package/types/resizeObserver.d.ts +2 -2
- package/types/ruler.d.ts +7 -7
- package/types/throttle.d.ts +4 -4
- package/types/throttleOption.d.ts +21 -21
- package/types/viewHandler.d.ts +13 -13
- package/uni-app/ui-canvas.vue +226 -222
- package/lib/Buffer/index.umd.js +0 -55
- package/lib/Buffer/index.umd.min.js +0 -11
- package/lib/Canvas/index.umd.js +0 -721
- package/lib/Canvas/index.umd.min.js +0 -11
- package/lib/Cardinal/index.umd.js +0 -112
- package/lib/Cardinal/index.umd.min.js +0 -11
- package/lib/Eoap/index.umd.js +0 -53
- package/lib/Eoap/index.umd.min.js +0 -11
- package/lib/Geometry/index.umd.js +0 -205
- package/lib/Geometry/index.umd.min.js +0 -11
- package/lib/Hermite/index.umd.js +0 -55
- package/lib/Hermite/index.umd.min.js +0 -11
- package/lib/Matrix4/index.umd.js +0 -146
- package/lib/Matrix4/index.umd.min.js +0 -11
- package/lib/Mercator/index.umd.js +0 -39
- package/lib/Mercator/index.umd.min.js +0 -11
- package/lib/OralCanvas/index.es.js +0 -657
- package/lib/OralCanvas/index.es.min.js +0 -11
- package/lib/OralWebGL/index.es.js +0 -611
- package/lib/OralWebGL/index.es.min.js +0 -11
- package/lib/SVG/index.umd.js +0 -475
- package/lib/SVG/index.umd.min.js +0 -11
- package/lib/Shader/index.umd.js +0 -134
- package/lib/Shader/index.umd.min.js +0 -11
- package/lib/Texture/index.umd.js +0 -72
- package/lib/Texture/index.umd.min.js +0 -11
- package/lib/TreeLayout/index.umd.js +0 -430
- package/lib/TreeLayout/index.umd.min.js +0 -11
- package/lib/WebGL/index.umd.js +0 -684
- package/lib/WebGL/index.umd.min.js +0 -11
- package/lib/animation/index.umd.js +0 -91
- package/lib/animation/index.umd.min.js +0 -11
- package/lib/formatColor/index.umd.js +0 -59
- package/lib/formatColor/index.umd.min.js +0 -11
- package/lib/getLoopColors/index.umd.js +0 -55
- package/lib/getLoopColors/index.umd.min.js +0 -11
- package/lib/getWebGLContext/index.umd.js +0 -65
- package/lib/getWebGLContext/index.umd.min.js +0 -11
- package/lib/index.umd.js +0 -2834
- package/lib/index.umd.min.js +0 -11
- package/lib/resizeObserver/index.umd.js +0 -48
- package/lib/resizeObserver/index.umd.min.js +0 -11
- package/lib/rotate/index.umd.js +0 -27
- package/lib/rotate/index.umd.min.js +0 -11
- package/lib/ruler/index.umd.js +0 -145
- package/lib/ruler/index.umd.min.js +0 -11
- package/lib/throttle/index.umd.js +0 -70
- package/lib/throttle/index.umd.min.js +0 -11
- package/lib/viewHandler/index.umd.js +0 -139
- package/lib/viewHandler/index.umd.min.js +0 -11
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import TreeLayout from "../../src/TreeLayout/index"
|
|
2
|
-
|
|
1
|
+
import TreeLayout from "../../src/TreeLayout/index"
|
|
2
|
+
|
|
3
3
|
export default TreeLayout
|
package/package/WebGL/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import WebGL from "../../src/WebGL"
|
|
2
|
-
|
|
1
|
+
import WebGL from "../../src/WebGL"
|
|
2
|
+
|
|
3
3
|
export default WebGL
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import animation from "../../src/animation"
|
|
2
|
-
|
|
1
|
+
import animation from "../../src/animation"
|
|
2
|
+
|
|
3
3
|
export default animation
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import formatColor from "../../src/formatColor"
|
|
2
|
-
|
|
1
|
+
import formatColor from "../../src/formatColor"
|
|
2
|
+
|
|
3
3
|
export default formatColor
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import getLoopColors from "../../src/getLoopColors"
|
|
2
|
-
|
|
1
|
+
import getLoopColors from "../../src/getLoopColors"
|
|
2
|
+
|
|
3
3
|
export default getLoopColors
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import getWebGLContext from "../../src/common/webgl/getWebGLContext"
|
|
2
|
-
|
|
3
|
-
export default (el: HTMLElement | null, scale: number = 1) => {
|
|
4
|
-
if (!el) {
|
|
5
|
-
throw new Error("VISLite getWebGLContext:The mount point requires an HTMLElement type but encountered null.")
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
let width = el.clientWidth, height = el.clientHeight
|
|
9
|
-
|
|
10
|
-
let ViewCanvas: HTMLCanvasElement
|
|
11
|
-
|
|
12
|
-
let _el = el as any
|
|
13
|
-
|
|
14
|
-
// 如果已经初始化过了
|
|
15
|
-
if (_el._vislite_canvas_) {
|
|
16
|
-
ViewCanvas = _el._vislite_canvas_
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// 否则就初始化
|
|
20
|
-
else {
|
|
21
|
-
|
|
22
|
-
ViewCanvas = document.createElement('canvas')
|
|
23
|
-
el.appendChild(ViewCanvas)
|
|
24
|
-
|
|
25
|
-
_el._vislite_canvas_ = ViewCanvas
|
|
26
|
-
|
|
27
|
-
el.setAttribute('vislite', 'WebGL')
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// 设置画布大小
|
|
32
|
-
|
|
33
|
-
ViewCanvas.style.width = width + "px"
|
|
34
|
-
ViewCanvas.setAttribute('width', width + "")
|
|
35
|
-
|
|
36
|
-
ViewCanvas.style.height = height + "px"
|
|
37
|
-
ViewCanvas.setAttribute('height', height + "")
|
|
38
|
-
|
|
39
|
-
return getWebGLContext(ViewCanvas, scale)
|
|
1
|
+
import getWebGLContext from "../../src/common/webgl/getWebGLContext"
|
|
2
|
+
|
|
3
|
+
export default (el: HTMLElement | null, scale: number = 1) => {
|
|
4
|
+
if (!el) {
|
|
5
|
+
throw new Error("VISLite getWebGLContext:The mount point requires an HTMLElement type but encountered null.")
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
let width = el.clientWidth, height = el.clientHeight
|
|
9
|
+
|
|
10
|
+
let ViewCanvas: HTMLCanvasElement
|
|
11
|
+
|
|
12
|
+
let _el = el as any
|
|
13
|
+
|
|
14
|
+
// 如果已经初始化过了
|
|
15
|
+
if (_el._vislite_canvas_) {
|
|
16
|
+
ViewCanvas = _el._vislite_canvas_
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// 否则就初始化
|
|
20
|
+
else {
|
|
21
|
+
|
|
22
|
+
ViewCanvas = document.createElement('canvas')
|
|
23
|
+
el.appendChild(ViewCanvas)
|
|
24
|
+
|
|
25
|
+
_el._vislite_canvas_ = ViewCanvas
|
|
26
|
+
|
|
27
|
+
el.setAttribute('vislite', 'WebGL')
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// 设置画布大小
|
|
32
|
+
|
|
33
|
+
ViewCanvas.style.width = width + "px"
|
|
34
|
+
ViewCanvas.setAttribute('width', width + "")
|
|
35
|
+
|
|
36
|
+
ViewCanvas.style.height = height + "px"
|
|
37
|
+
ViewCanvas.setAttribute('height', height + "")
|
|
38
|
+
|
|
39
|
+
return getWebGLContext(ViewCanvas, scale)
|
|
40
40
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import resizeObserver from "../../src/resizeObserver"
|
|
2
|
-
|
|
1
|
+
import resizeObserver from "../../src/resizeObserver"
|
|
2
|
+
|
|
3
3
|
export default resizeObserver
|
package/package/rotate/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import rotate from "../../src/rotate"
|
|
2
|
-
|
|
1
|
+
import rotate from "../../src/rotate"
|
|
2
|
+
|
|
3
3
|
export default rotate
|
package/package/ruler/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import ruler from "../../src/ruler"
|
|
2
|
-
|
|
1
|
+
import ruler from "../../src/ruler"
|
|
2
|
+
|
|
3
3
|
export default ruler
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import throttle from "../../src/throttle"
|
|
2
|
-
|
|
1
|
+
import throttle from "../../src/throttle"
|
|
2
|
+
|
|
3
3
|
export default throttle
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import viewHandler from "../../src/viewHandler"
|
|
2
|
-
|
|
1
|
+
import viewHandler from "../../src/viewHandler"
|
|
2
|
+
|
|
3
3
|
export default viewHandler
|
package/package.json
CHANGED
package/src/Canvas.ts
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import type CanvasType from '../types/Canvas'
|
|
2
|
-
import type CanvasOptionType from '../types/CanvasOption'
|
|
3
|
-
|
|
4
|
-
import OralCanvas from './common/canvas/index'
|
|
5
|
-
import mergeOption from './common/mergeOption'
|
|
6
|
-
|
|
7
|
-
class Canvas extends OralCanvas implements CanvasType {
|
|
8
|
-
private __canvas: HTMLCanvasElement
|
|
9
|
-
constructor(el: HTMLElement | null, option: CanvasOptionType = {}) {
|
|
10
|
-
if (!el) {
|
|
11
|
-
throw new Error("VISLite Canvas:The mount point requires an HTMLElement type but encountered null.")
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
option = mergeOption(option, {
|
|
15
|
-
region: true
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
let width = el.clientWidth, height = el.clientHeight
|
|
19
|
-
|
|
20
|
-
let ViewCanvas: HTMLCanvasElement, RegionCanvas: HTMLCanvasElement
|
|
21
|
-
|
|
22
|
-
let _el = el as any
|
|
23
|
-
|
|
24
|
-
// 如果已经初始化过了
|
|
25
|
-
if (_el._vislite_canvas_) {
|
|
26
|
-
ViewCanvas = _el._vislite_canvas_[0]
|
|
27
|
-
RegionCanvas = _el._vislite_canvas_[1]
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// 否则就初始化
|
|
31
|
-
else {
|
|
32
|
-
ViewCanvas = document.createElement('canvas')
|
|
33
|
-
el.appendChild(ViewCanvas)
|
|
34
|
-
|
|
35
|
-
if (option.region) {
|
|
36
|
-
RegionCanvas = document.createElement('canvas')
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
_el._vislite_canvas_ = [ViewCanvas, RegionCanvas]
|
|
40
|
-
|
|
41
|
-
el.setAttribute('vislite', 'Canvas')
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// 设置画布大小
|
|
45
|
-
for (let canvas of [ViewCanvas, RegionCanvas]) {
|
|
46
|
-
|
|
47
|
-
if (canvas) {
|
|
48
|
-
canvas.style.width = width + "px"
|
|
49
|
-
canvas.setAttribute('width', width + "")
|
|
50
|
-
|
|
51
|
-
canvas.style.height = height + "px"
|
|
52
|
-
canvas.setAttribute('height', height + "")
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
super(ViewCanvas, RegionCanvas)
|
|
57
|
-
|
|
58
|
-
this.__canvas = ViewCanvas
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
toDataURL(): Promise<string> {
|
|
62
|
-
return new Promise(resolve => {
|
|
63
|
-
resolve(this.__canvas.toDataURL())
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
1
|
+
import type CanvasType from '../types/Canvas'
|
|
2
|
+
import type CanvasOptionType from '../types/CanvasOption'
|
|
3
|
+
|
|
4
|
+
import OralCanvas from './common/canvas/index'
|
|
5
|
+
import mergeOption from './common/mergeOption'
|
|
6
|
+
|
|
7
|
+
class Canvas extends OralCanvas implements CanvasType {
|
|
8
|
+
private __canvas: HTMLCanvasElement
|
|
9
|
+
constructor(el: HTMLElement | null, option: CanvasOptionType = {}) {
|
|
10
|
+
if (!el) {
|
|
11
|
+
throw new Error("VISLite Canvas:The mount point requires an HTMLElement type but encountered null.")
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
option = mergeOption(option, {
|
|
15
|
+
region: true
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
let width = el.clientWidth, height = el.clientHeight
|
|
19
|
+
|
|
20
|
+
let ViewCanvas: HTMLCanvasElement, RegionCanvas: HTMLCanvasElement
|
|
21
|
+
|
|
22
|
+
let _el = el as any
|
|
23
|
+
|
|
24
|
+
// 如果已经初始化过了
|
|
25
|
+
if (_el._vislite_canvas_) {
|
|
26
|
+
ViewCanvas = _el._vislite_canvas_[0]
|
|
27
|
+
RegionCanvas = _el._vislite_canvas_[1]
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 否则就初始化
|
|
31
|
+
else {
|
|
32
|
+
ViewCanvas = document.createElement('canvas')
|
|
33
|
+
el.appendChild(ViewCanvas)
|
|
34
|
+
|
|
35
|
+
if (option.region) {
|
|
36
|
+
RegionCanvas = document.createElement('canvas')
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
_el._vislite_canvas_ = [ViewCanvas, RegionCanvas]
|
|
40
|
+
|
|
41
|
+
el.setAttribute('vislite', 'Canvas')
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// 设置画布大小
|
|
45
|
+
for (let canvas of [ViewCanvas, RegionCanvas]) {
|
|
46
|
+
|
|
47
|
+
if (canvas) {
|
|
48
|
+
canvas.style.width = width + "px"
|
|
49
|
+
canvas.setAttribute('width', width + "")
|
|
50
|
+
|
|
51
|
+
canvas.style.height = height + "px"
|
|
52
|
+
canvas.setAttribute('height', height + "")
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
super(ViewCanvas, RegionCanvas)
|
|
57
|
+
|
|
58
|
+
this.__canvas = ViewCanvas
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
toDataURL(): Promise<string> {
|
|
62
|
+
return new Promise(resolve => {
|
|
63
|
+
resolve(this.__canvas.toDataURL())
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
68
|
export default Canvas
|
package/src/Matrix4/move.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 在(a,b,c)方向位移d
|
|
3
|
-
*/
|
|
4
|
-
export default function (d: number, a: number, b: number, c: number = 0) {
|
|
5
|
-
let sqrt = Math.sqrt(a * a + b * b + c * c)
|
|
6
|
-
return [
|
|
7
|
-
1, 0, 0, 0,
|
|
8
|
-
0, 1, 0, 0,
|
|
9
|
-
0, 0, 1, 0,
|
|
10
|
-
a * d / sqrt, b * d / sqrt, c * d / sqrt, 1
|
|
11
|
-
]
|
|
12
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 在(a,b,c)方向位移d
|
|
3
|
+
*/
|
|
4
|
+
export default function (d: number, a: number, b: number, c: number = 0) {
|
|
5
|
+
let sqrt = Math.sqrt(a * a + b * b + c * c)
|
|
6
|
+
return [
|
|
7
|
+
1, 0, 0, 0,
|
|
8
|
+
0, 1, 0, 0,
|
|
9
|
+
0, 0, 1, 0,
|
|
10
|
+
a * d / sqrt, b * d / sqrt, c * d / sqrt, 1
|
|
11
|
+
]
|
|
12
|
+
}
|
package/src/Matrix4/rotate.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 围绕0Z轴旋转
|
|
3
|
-
* 其它的旋转可以借助transform实现
|
|
4
|
-
* 旋转角度单位采用弧度制
|
|
5
|
-
*/
|
|
6
|
-
export default function (deg: number) {
|
|
7
|
-
let sin = Math.sin(deg),
|
|
8
|
-
cos = Math.cos(deg)
|
|
9
|
-
return [
|
|
10
|
-
cos, sin, 0, 0,
|
|
11
|
-
-sin, cos, 0, 0,
|
|
12
|
-
0, 0, 1, 0,
|
|
13
|
-
0, 0, 0, 1
|
|
14
|
-
]
|
|
15
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 围绕0Z轴旋转
|
|
3
|
+
* 其它的旋转可以借助transform实现
|
|
4
|
+
* 旋转角度单位采用弧度制
|
|
5
|
+
*/
|
|
6
|
+
export default function (deg: number) {
|
|
7
|
+
let sin = Math.sin(deg),
|
|
8
|
+
cos = Math.cos(deg)
|
|
9
|
+
return [
|
|
10
|
+
cos, sin, 0, 0,
|
|
11
|
+
-sin, cos, 0, 0,
|
|
12
|
+
0, 0, 1, 0,
|
|
13
|
+
0, 0, 0, 1
|
|
14
|
+
]
|
|
15
|
+
}
|
package/src/Matrix4/scale.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 围绕圆心x、y和z分别缩放xTimes, yTimes和zTimes倍
|
|
3
|
-
*/
|
|
4
|
-
export default function (xTimes: number, yTimes: number, zTimes: number, cx: number = 0, cy: number = 0, cz: number = 0) {
|
|
5
|
-
return [
|
|
6
|
-
xTimes, 0, 0, 0,
|
|
7
|
-
0, yTimes, 0, 0,
|
|
8
|
-
0, 0, zTimes, 0,
|
|
9
|
-
cx - cx * xTimes, cy - cy * yTimes, cz - cz * zTimes, 1
|
|
10
|
-
]
|
|
11
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 围绕圆心x、y和z分别缩放xTimes, yTimes和zTimes倍
|
|
3
|
+
*/
|
|
4
|
+
export default function (xTimes: number, yTimes: number, zTimes: number, cx: number = 0, cy: number = 0, cz: number = 0) {
|
|
5
|
+
return [
|
|
6
|
+
xTimes, 0, 0, 0,
|
|
7
|
+
0, yTimes, 0, 0,
|
|
8
|
+
0, 0, zTimes, 0,
|
|
9
|
+
cx - cx * xTimes, cy - cy * yTimes, cz - cz * zTimes, 1
|
|
10
|
+
]
|
|
11
|
+
}
|
package/src/Matrix4/transform.ts
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 针对任意射线(a1,b1,c1)->(a2,b2,c2)
|
|
3
|
-
* 计算出两个变换矩阵
|
|
4
|
-
* 分别为:任意射线变成OZ轴变换矩阵 + OZ轴变回原来的射线的变换矩阵
|
|
5
|
-
*/
|
|
6
|
-
export default function (a1: number, b1: number, c1: number, a2: number, b2: number, c2: number) {
|
|
7
|
-
|
|
8
|
-
if (typeof a1 === 'number' && typeof b1 === 'number') {
|
|
9
|
-
|
|
10
|
-
// 如果设置两个点
|
|
11
|
-
// 表示二维上围绕某个点旋转
|
|
12
|
-
if (typeof c1 !== 'number') {
|
|
13
|
-
c1 = 0
|
|
14
|
-
a2 = a1
|
|
15
|
-
b2 = b1
|
|
16
|
-
c2 = 1
|
|
17
|
-
}
|
|
18
|
-
// 只设置三个点(设置不足六个点都认为只设置了三个点)
|
|
19
|
-
// 表示围绕从原点出发的射线旋转
|
|
20
|
-
else if (typeof a2 !== 'number' || typeof b2 !== 'number' || typeof c2 !== 'number') {
|
|
21
|
-
a2 = a1
|
|
22
|
-
b2 = b1
|
|
23
|
-
c2 = c1
|
|
24
|
-
a1 = 0
|
|
25
|
-
b1 = 0
|
|
26
|
-
c1 = 0
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (a1 == a2 && b1 == b2 && c1 == c2) throw new Error('It\'s not a legitimate ray!')
|
|
30
|
-
|
|
31
|
-
let sqrt1 = Math.sqrt((a2 - a1) * (a2 - a1) + (b2 - b1) * (b2 - b1)),
|
|
32
|
-
cos1 = sqrt1 != 0 ? (b2 - b1) / sqrt1 : 1,
|
|
33
|
-
sin1 = sqrt1 != 0 ? (a2 - a1) / sqrt1 : 0,
|
|
34
|
-
|
|
35
|
-
b = (a2 - a1) * sin1 + (b2 - b1) * cos1,
|
|
36
|
-
c = c2 - c1,
|
|
37
|
-
|
|
38
|
-
sqrt2 = Math.sqrt(b * b + c * c),
|
|
39
|
-
cos2 = sqrt2 != 0 ? c / sqrt2 : 1,
|
|
40
|
-
sin2 = sqrt2 != 0 ? b / sqrt2 : 0
|
|
41
|
-
|
|
42
|
-
return [
|
|
43
|
-
|
|
44
|
-
// 任意射线变成OZ轴变换矩阵
|
|
45
|
-
[
|
|
46
|
-
cos1, cos2 * sin1, sin1 * sin2, 0,
|
|
47
|
-
-sin1, cos1 * cos2, cos1 * sin2, 0,
|
|
48
|
-
0, -sin2, cos2, 0,
|
|
49
|
-
b1 * sin1 - a1 * cos1, c1 * sin2 - a1 * sin1 * cos2 - b1 * cos1 * cos2, -a1 * sin1 * sin2 - b1 * cos1 * sin2 - c1 * cos2, 1
|
|
50
|
-
],
|
|
51
|
-
|
|
52
|
-
// OZ轴变回原来的射线的变换矩阵
|
|
53
|
-
[
|
|
54
|
-
cos1, -sin1, 0, 0,
|
|
55
|
-
cos2 * sin1, cos2 * cos1, -sin2, 0,
|
|
56
|
-
sin1 * sin2, cos1 * sin2, cos2, 0,
|
|
57
|
-
a1, b1, c1, 1
|
|
58
|
-
]
|
|
59
|
-
|
|
60
|
-
]
|
|
61
|
-
} else {
|
|
62
|
-
throw new Error('a1 and b1 is required!')
|
|
63
|
-
}
|
|
64
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 针对任意射线(a1,b1,c1)->(a2,b2,c2)
|
|
3
|
+
* 计算出两个变换矩阵
|
|
4
|
+
* 分别为:任意射线变成OZ轴变换矩阵 + OZ轴变回原来的射线的变换矩阵
|
|
5
|
+
*/
|
|
6
|
+
export default function (a1: number, b1: number, c1: number, a2: number, b2: number, c2: number) {
|
|
7
|
+
|
|
8
|
+
if (typeof a1 === 'number' && typeof b1 === 'number') {
|
|
9
|
+
|
|
10
|
+
// 如果设置两个点
|
|
11
|
+
// 表示二维上围绕某个点旋转
|
|
12
|
+
if (typeof c1 !== 'number') {
|
|
13
|
+
c1 = 0
|
|
14
|
+
a2 = a1
|
|
15
|
+
b2 = b1
|
|
16
|
+
c2 = 1
|
|
17
|
+
}
|
|
18
|
+
// 只设置三个点(设置不足六个点都认为只设置了三个点)
|
|
19
|
+
// 表示围绕从原点出发的射线旋转
|
|
20
|
+
else if (typeof a2 !== 'number' || typeof b2 !== 'number' || typeof c2 !== 'number') {
|
|
21
|
+
a2 = a1
|
|
22
|
+
b2 = b1
|
|
23
|
+
c2 = c1
|
|
24
|
+
a1 = 0
|
|
25
|
+
b1 = 0
|
|
26
|
+
c1 = 0
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (a1 == a2 && b1 == b2 && c1 == c2) throw new Error('It\'s not a legitimate ray!')
|
|
30
|
+
|
|
31
|
+
let sqrt1 = Math.sqrt((a2 - a1) * (a2 - a1) + (b2 - b1) * (b2 - b1)),
|
|
32
|
+
cos1 = sqrt1 != 0 ? (b2 - b1) / sqrt1 : 1,
|
|
33
|
+
sin1 = sqrt1 != 0 ? (a2 - a1) / sqrt1 : 0,
|
|
34
|
+
|
|
35
|
+
b = (a2 - a1) * sin1 + (b2 - b1) * cos1,
|
|
36
|
+
c = c2 - c1,
|
|
37
|
+
|
|
38
|
+
sqrt2 = Math.sqrt(b * b + c * c),
|
|
39
|
+
cos2 = sqrt2 != 0 ? c / sqrt2 : 1,
|
|
40
|
+
sin2 = sqrt2 != 0 ? b / sqrt2 : 0
|
|
41
|
+
|
|
42
|
+
return [
|
|
43
|
+
|
|
44
|
+
// 任意射线变成OZ轴变换矩阵
|
|
45
|
+
[
|
|
46
|
+
cos1, cos2 * sin1, sin1 * sin2, 0,
|
|
47
|
+
-sin1, cos1 * cos2, cos1 * sin2, 0,
|
|
48
|
+
0, -sin2, cos2, 0,
|
|
49
|
+
b1 * sin1 - a1 * cos1, c1 * sin2 - a1 * sin1 * cos2 - b1 * cos1 * cos2, -a1 * sin1 * sin2 - b1 * cos1 * sin2 - c1 * cos2, 1
|
|
50
|
+
],
|
|
51
|
+
|
|
52
|
+
// OZ轴变回原来的射线的变换矩阵
|
|
53
|
+
[
|
|
54
|
+
cos1, -sin1, 0, 0,
|
|
55
|
+
cos2 * sin1, cos2 * cos1, -sin2, 0,
|
|
56
|
+
sin1 * sin2, cos1 * sin2, cos2, 0,
|
|
57
|
+
a1, b1, c1, 1
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
]
|
|
61
|
+
} else {
|
|
62
|
+
throw new Error('a1 and b1 is required!')
|
|
63
|
+
}
|
|
64
|
+
}
|
package/src/SVG.ts
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import type SVGType from '../types/SVG'
|
|
2
|
-
|
|
3
|
-
import OralSVG from './common/svg/index'
|
|
4
|
-
|
|
5
|
-
class SVG extends OralSVG implements SVGType {
|
|
6
|
-
constructor(el: HTMLElement | null) {
|
|
7
|
-
if (!el) {
|
|
8
|
-
throw new Error("VISLite SVG:The mount point requires an HTMLElement type but encountered null.")
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
let width = el.clientWidth, height = el.clientHeight
|
|
12
|
-
|
|
13
|
-
let ViewSVG = document.createElementNS("http://www.w3.org/2000/svg", 'svg')
|
|
14
|
-
el.appendChild(ViewSVG)
|
|
15
|
-
|
|
16
|
-
ViewSVG.setAttribute("width", width + "")
|
|
17
|
-
ViewSVG.setAttribute("height", height + "")
|
|
18
|
-
|
|
19
|
-
ViewSVG.setAttribute("viewBox", "0 0 " + width + " " + height)
|
|
20
|
-
|
|
21
|
-
super(ViewSVG)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
1
|
+
import type SVGType from '../types/SVG'
|
|
2
|
+
|
|
3
|
+
import OralSVG from './common/svg/index'
|
|
4
|
+
|
|
5
|
+
class SVG extends OralSVG implements SVGType {
|
|
6
|
+
constructor(el: HTMLElement | null) {
|
|
7
|
+
if (!el) {
|
|
8
|
+
throw new Error("VISLite SVG:The mount point requires an HTMLElement type but encountered null.")
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let width = el.clientWidth, height = el.clientHeight
|
|
12
|
+
|
|
13
|
+
let ViewSVG = document.createElementNS("http://www.w3.org/2000/svg", 'svg')
|
|
14
|
+
el.appendChild(ViewSVG)
|
|
15
|
+
|
|
16
|
+
ViewSVG.setAttribute("width", width + "")
|
|
17
|
+
ViewSVG.setAttribute("height", height + "")
|
|
18
|
+
|
|
19
|
+
ViewSVG.setAttribute("viewBox", "0 0 " + width + " " + height)
|
|
20
|
+
|
|
21
|
+
super(ViewSVG)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
25
|
export default SVG
|