节日快到,发几个霓虹灯的脚本助助兴!
第一个:
第一个:
1
<
script languate
=
"
VBScript
"
type
=
"
text/VBScript
"
>
2
Dim
pubS_Pix_x
3
Dim
pubS_Pix_y
4
Dim
pubS_Pix_z
5
Dim
pubS_Pix_cr
6
Dim
pubS_Pix_cg
7
Dim
pubS_Pix_cb
8
Dim
pubD_Mx
9
Dim
pubD_My
10
Dim
pubD_Mz
11
Dim
pubD_Rx
12
Dim
pubD_Ry
13
Dim
pubD_Rz
14
Dim
pubD_Mtx_Mx
15
Dim
pubD_Mtx_Mr
16
Dim
pubD_Pix_x
17
Dim
pubD_Pix_y
18
Dim
pubD_Pix_z
19
Dim
pubF_Va
20
Dim
pubF_Vd
21
Dim
pubV_Vx
22
Dim
pubV_Vy
23
Dim
pubV_Vz
24
Dim
pubV_Sc
25
Dim
pubV_Mtx_Mx
26
Dim
pubV_Mtx_Mr
27
Dim
pubV_Pix_x
28
Dim
pubV_Pix_y
29
Dim
pubV_Pix_z
30
Dim
pubElm
31
Dim
pubElm_Len
32
Dim
pubWeb_Tv
33
Dim
pubWeb_Tw
34
Dim
pubWeb_WW, pubWeb_WH
35
Dim
pubR, pubG, pubB
36
Dim
pubOR, pubOG, pubOB
37
'
Web DHTML 事件函数
38
Sub
window_onload()
39
MakeModule
40
41
With
document.body
42
pubWeb_WW
=
.clientWidth
43
pubWeb_WH
=
.clientHeight
44
End
With
45
pubD_Rz
=
0
46
pubD_Rx
=
0
47
pubD_Ry
=
0
48
pubF_Va
=
15
49
pubF_Vd
=
20
50
51
pubV_Vx
=
pubWeb_WW
\
2
52
pubV_Vy
=
pubWeb_WH
\
3
53
pubV_Vz
=
0
54
pubV_Sc
=
10
55
pubWeb_Tw
=
33
56
MTX_3DMixV pubV_Vx, pubV_Vy, pubV_Vz, pubV_Sc, pubV_Mtx_Mx, pubV_Mtx_Mr
57
58
Web_TimeLoop
59
60
End Sub
61
Sub
MakeModule
62
pubElm_Len
=
599
63
pubElm
=
ELM_Create(pubElm_Len)
64
ReDim
pubS_Pix_x(pubElm_Len), pubS_Pix_y(pubElm_Len), pubS_Pix_z(pubElm_Len)
65
ReDim
pubD_Pix_x(pubElm_Len), pubD_Pix_y(pubElm_Len), pubD_Pix_z(pubElm_Len)
66
ReDim
pubV_Pix_x(pubElm_Len), pubV_Pix_y(pubElm_Len), pubV_Pix_z(pubElm_Len)
67
ReDim
pubS_Pix_cr(pubElm_Len), pubS_Pix_cg(pubElm_Len), pubS_Pix_cb(pubElm_Len)
68
tH
=
100
69
tR
=
0
70
For
tI
=
1
To
1500
Step
15
71
tR
=
tI
*
15
/
1500
+
5
72
tA
=
tA
+
(
1000
/
(tR
*
2
*
3.14
))
73
tZ
=
30
-
tI
*
30
/
1500
74
tAr
=
Radian(tA)
75
For
tRd
=
Int
(tR)
To
Int
(tR)
-
5
Step
-
1
76
tX
=
Sin
(tAr)
*
tRd
77
tY
=
Cos
(tAr)
*
tRd
78
pubS_Pix_x(tAdd)
=
tX
79
pubS_Pix_y(tAdd)
=
tY
80
pubS_Pix_z(tAdd)
=
tZ
81
tAdd
=
tAdd
+
1
82
Next
83
Next
84
'
MsgBox tAdd
85
pubD_Mx
=
0
86
pubD_My
=
0
87
pubD_Mz
=
0
88
End Sub
89
Sub
Web_TimeLoop()
90
pubD_Rz
=
(pubD_Rz
+
1
)
Mod
360
91
pubD_Rx
=
45
92
pubD_Ry
=
0
93
MTX_3DMixD pubD_Mx, pubD_My, pubD_Mz, pubD_Rx, pubD_Ry, pubD_Rz, pubD_Mtx_Mx, pubD_Mtx_Mr
94
PXE_MTXTram3D pubS_Pix_x, pubS_Pix_y, pubS_Pix_z, pubD_Mtx_Mx, pubD_Mtx_Mr, pubD_Pix_x, pubD_Pix_y, pubD_Pix_z
95
FIT_PSV pubD_Pix_x, pubD_Pix_y, pubD_Pix_z, pubF_Va, pubF_Vd, pubD_Pix_x, pubD_Pix_y, pubD_Pix_z
96
PXE_MTXTram3D pubD_Pix_x, pubD_Pix_y, pubD_Pix_z, pubV_Mtx_Mx, pubV_Mtx_Mr, pubV_Pix_x, pubV_Pix_y, pubV_Pix_z
97
98
For
tI
=
0
To
5
99
For
tEi
=
pubElm_Len
To
0
Step
-
1
100
If
CBool
(tEi)
Then
101
pubS_Pix_cr(tEi)
=
pubS_Pix_cr(tEi
-
1
)
102
pubS_Pix_cg(tEi)
=
pubS_Pix_cg(tEi
-
1
)
103
pubS_Pix_cb(tEi)
=
pubS_Pix_cb(tEi
-
1
)
104
Else
105
If
pubR
<
pubOR
Then
pubR
=
pubR
+
1
106
If
pubR
>
pubOR
Then
pubR
=
pubR
-
1
107
If
pubG
<
pubOG
Then
pubG
=
pubG
+
1
108
If
pubG
>
pubOG
Then
pubG
=
pubG
-
1
109
If
pubB
<
pubOB
Then
pubB
=
pubB
+
1
110
If
pubB
>
pubOB
Then
pubB
=
pubB
-
1
111
If
pubR
=
pubOR
And
pubB
=
pubOB
And
pubG
=
pubOG
Then
112
pubOR
=
Int
(
Rnd
*
32
)
+
31
113
pubOG
=
Int
(
Rnd
*
32
)
+
31
114
pubOB
=
Int
(
Rnd
*
32
)
+
31
115
End
If
116
pubS_Pix_cr(tEi)
=
pubR
*
4
117
pubS_Pix_cg(tEi)
=
pubG
*
4
118
pubS_Pix_cb(tEi)
=
pubB
*
4
119
End
If
120
Next
121
Next
122
For
tEi
=
pubElm_Len
To
0
Step
-
1
123
With
pubElm(tEi).style
124
.left
=
pubV_Pix_x(tEi)
125
.top
=
pubV_Pix_y(tEi)
126
tL
=
tEi
Mod
6
+
1
127
.color
=
rgb
(pubS_Pix_cr(tEi)
\
tL,pubS_Pix_cg(tEi)
\
tL,pubS_Pix_cb(tEi)
\
tL)
128
End
With
129
Next
130
131
pubWeb_Tv
=
window.setTimeout(
"
Web_TimeLoop
"
, pubWeb_Tw)
132
End Sub
133
Function
ELM_Create(pEn)
134
ReDim
tElms(pEn)
135
For
tEi
=
0
To
pEn
136
With
document
137
Set
tElms(tEi)
=
.createElement(
"
SPAN
"
)
138
.body.insertAdjacentElement
"
beForeEnd
"
, tElms(tEi)
139
End
With
140
With
tElms(tEi)
141
.innerText
=
"
*
"
142
.style.position
=
"
absolute
"
143
.style.color
=
rgb
(
0
,
0
,
0
)
144
End
With
145
Next
146
ELM_Create
=
tElms
147
End Function
148
Sub
PXE_MTXTram2D(pPx(), pPy(), pM(), pMr, oPx(), oPy())
149
tPe
=
UBound
(pPx)
150
For
tPi
=
0
To
tPe
151
oPx(tPi)
=
pPx(tPi)
*
pM(
0
)
+
pPy(tPi)
*
pM(
1
)
+
pM(
2
)
152
oPy(tPi)
=
pPx(tPi)
*
pM(
3
)
+
pPy(tPi)
*
pM(
4
)
+
pM(
5
)
153
Next
154
End Sub
155
Sub
PXE_MTXTram3D(pPx(), pPy(), pPz(), pM(), pMr(), oPx(), oPy(), oPz())
156
tPe
=
UBound
(pPx)
157
For
tPi
=
0
To
tPe
158
oPx(tPi)
=
pPx(tPi)
*
pM(
0
)
+
pPy(tPi)
*
pM(
1
)
+
pPz(tPi)
*
pM(
2
)
+
pM(
3
)
159
oPy(tPi)
=
pPx(tPi)
*
pM(
4
)
+
pPy(tPi)
*
pM(
5
)
+
pPz(tPi)
*
pM(
6
)
+
pM(
7
)
160
oPz(tPi)
=
pPx(tPi)
*
pM(
8
)
+
pPy(tPi)
*
pM(
9
)
+
pPz(tPi)
*
pM(
10
)
+
pM(
11
)
161
Next
162
End Sub
163
Sub
FIT_PSV(iPx, iPy, iPz, iVa, iVd, oPx, oPy, oPz)
164
tPe
=
UBound
(iPx)
165
For
tPi
=
0
To
tPe
166
tVr
=
Sin
(Radian(iVa))
167
tZ
=
iPz(tPi)
+
iVd
168
oPx(tPi)
=
iPx(tPi)
*
tVr
*
tZ
/
(tVr
*
iVd)
169
oPy(tPi)
=
iPy(tPi)
*
tVr
*
tZ
/
(tVr
*
iVd)
170
oPz(tPi)
=
iPz(tPi)
171
Next
172
End Sub
173
Sub
MTX_2DPixMulti(iSc, oM(), oMr)
174
oMr
=
3
175
ReDim
oM(
8
)
176
oM
=
Array
(iSc,
0
,
0
,
0
, iSc,
0
,
0
,
0
,
1
)
177
End Sub
178
Sub
MTX_2DPixMove(iMx, iMy, oM(), oMr)
179
oMr
=
3
180
ReDim
oM(
8
)
181
oM
=
Array
(
1
,
0
, iMx,
0
,
1
, iMy,
0
,
0
,
1
)
182
End Sub
183
Sub
MTX_2DRot(iA, oM(), oMr)
184
tR
=
Radian(iA)
185
oMr
=
3
186
ReDim
oM(
8
)
187
oM
=
Array
(
cos
(tR),
-
sin
(tR),
0
,
sin
(tR),
cos
(tR),
0
,
0
,
0
,
1
)
188
End Sub
189
Sub
MTX_3DMixD(iMx, iMy, iMz, iRx, iRy, iRz, oMx, oMr)
190
MTX_3DPixMove tMtx_MV, oMr, iMx, iMy, iMz
191
MTX_3DPixRotZ tMtx_RTz, oMr, iRz
192
MTX_3DPixRotX tMtx_RTx, oMr, iRx
193
MTX_3DPixRotY tMtx_RTy, oMr, iRy
194
MTX_Multi tMtx_MV, oMr, tMtx_RTz, oMr, tMx, oMr
195
oMx
=
tMx
196
MTX_Multi oMx, oMr, tMtx_RTx, oMr, tMx, oMr
197
oMx
=
tMx
198
MTX_Multi oMx, oMr, tMtx_RTy, oMr, tMx, oMr
199
oMx
=
tMx
200
End Sub
201
Sub
MTX_3DMixV(iVx, iVy, iVz, iSc, oMx, oMr)
202
MTX_3DPixMulti tMtx_SC, oMr, iSc
203
MTX_3DPixMove tMtx_VM, oMr, iVx, iVy, iVz
204
MTX_Multi tMtx_SC, oMr, tMtx_VM, oMr, tMx, oMr
205
oMx
=
tMx
206
End Sub
207
Sub
MTX_3DPixMulti(oM(), oMr, iSc)
208
oMr
=
4
209
ReDim
oM(
15
)
210
oM
=
Array
(iSc,
0
,
0
,
0
,
0
, iSc,
0
,
0
,
0
,
0
, iSc,
0
,
0
,
0
,
0
,
1
)
211
End Sub
212
Sub
MTX_3DPixMove(oM(), oMr, iMx, iMy, iMz)
213
oMr
=
4
214
ReDim
oM(
15
)
215
oM
=
Array
(
1
,
0
,
0
, iMx,
0
,
1
,
0
, iMy,
0
,
0
,
1
, iMz,
0
,
0
,
0
,
1
)
216
End Sub
217
Sub
MTX_3DPixRotZ(oM(), oMr, iA)
218
oMr
=
4
219
ReDim
oM(
15
)
220
tR
=
Radian(iA) : tSin
=
sin
(tR) : tCos
=
cos
(tR)
221
oM
=
Array
(tCos,
-
tSin,
0
,
0
, tSin, tCos,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
)
222
End Sub
223
Sub
MTX_3DPixRotY(oM(), oMr, iA)
224
oMr
=
4
225
ReDim
oM(
15
)
226
tR
=
Radian(iA) : tSin
=
sin
(tR) : tCos
=
cos
(tR)
227
oM
=
Array
(tCos,
0
, tSin,
0
,
0
,
1
,
0
,
0
,
-
tSin,
0
, tCos,
0
,
0
,
0
,
0
,
1
)
228
End Sub
229
Sub
MTX_3DPixRotX(oM(), oMr, iA)
230
oMr
=
4
231
tR
=
Radian(iA)
232
tR
=
Radian(iA) : tSin
=
sin
(tR) : tCos
=
cos
(tR)
233
oM
=
Array
(
1
,
0
,
0
,
0
,
0
, tCos, tSin,
0
,
0
,
-
tSin, tCos,
0
,
0
,
0
,
0
,
1
)
234
End Sub
235
Sub
MTX_Multi(iMa(), iMar, iMb(), iMbr, oMc(), oMcr)
236
tN
=
(iMar
=
((
UBound
(iMb)
\
iMbr)
+
1
))
And
(iMar
-
1
)
237
238
If
CBool
(tN)
Then
239
240
tM
=
Ubound
(iMa)
\
iMar
241
tP
=
iMbr
-
1
242
243
oMcr
=
tP
+
1
244
245
ReDim
oMc(oMcr
*
(tM
+
1
)
-
1
)
246
247
For
tMi
=
0
To
tM
248
For
tPi
=
0
To
tP
249
For
tNi
=
0
To
tN
250
tMv
=
MTX_VGet(oMc, oMcr, tMi, tPi)
+
MTX_VGet(iMa, iMar, tMi, tNi)
*
MTX_VGet(iMb, iMbr, tNi, tPi)
251
MTX_VSet oMc, oMcr, tMi, tPi, tMv
252
253
Next
254
Next
255
Next
256
257
End
If
258
259
End Sub
260
Sub
MTX_VSet(pM(), pMr, pX, pY, pMv)
261
tMi
=
pY
*
pMr
+
pX
262
pM(tMi)
=
pMv
263
End Sub
264
Function
MTX_VGet(pM(), pMr, pX, pY)
265
tMi
=
pY
*
pMr
+
pX
266
MTX_VGet
=
pM(tMi)
267
End Function
268
Function
Radian(pA)
269
Radian
=
pA
*
71
/
4068
270
End Function
271
</
script
>
第二个:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
1
<
script languate
=
"
VBScript
"
type
=
"
text/VBScript
"
>
2
Dim
pubS_Pix_x
3
Dim
pubS_Pix_y
4
Dim
pubS_Pix_z
5
Dim
pubS_Pix_c
6
Dim
pubD_Mx
7
Dim
pubD_My
8
Dim
pubD_Mz
9
Dim
pubD_Rx
10
Dim
pubD_Ry
11
Dim
pubD_Rz
12
Dim
pubD_Mtx_Mx
13
Dim
pubD_Mtx_Mr
14
Dim
pubD_Pix_x
15
Dim
pubD_Pix_y
16
Dim
pubD_Pix_z
17
Dim
pubF_Va
18
Dim
pubF_Vd
19
Dim
pubV_Vx
20
Dim
pubV_Vy
21
Dim
pubV_Vz
22
Dim
pubV_Sc
23
Dim
pubV_Mtx_Mx
24
Dim
pubV_Mtx_Mr
25
Dim
pubV_Pix_x
26
Dim
pubV_Pix_y
27
Dim
pubV_Pix_z
28
Dim
pubElm
29
Dim
pubElm_Len
30
Dim
pubWeb_Tv
31
Dim
pubWeb_Tw
32
Dim
pubWeb_WW, pubWeb_WH
33
Dim
pubR, pubG, pubB
34
Dim
pubOR, pubOG, pubOB
35
'
Web DHTML 事件函数
36
Sub
window_onload()
37
MakeModule
38
39
With
document.body
40
pubWeb_WW
=
.clientWidth
41
pubWeb_WH
=
.clientHeight
42
End
With
43
pubD_Rz
=
0
44
pubD_Rx
=
0
45
pubD_Ry
=
0
46
pubF_Va
=
15
47
pubF_Vd
=
20
48
49
pubV_Vx
=
pubWeb_WW
\
2
50
pubV_Vy
=
pubWeb_WH
*
1.3
\
2
51
pubV_Vz
=
0
52
pubV_Sc
=
12
53
pubWeb_Tw
=
33
54
MTX_3DMixV pubV_Vx, pubV_Vy, pubV_Vz, pubV_Sc, pubV_Mtx_Mx, pubV_Mtx_Mr
55
56
Web_TimeLoop
57
58
End Sub
59
Sub
MakeModule
60
pubElm_Len
=
919
61
pubElm
=
ELM_Create(pubElm_Len)
62
ReDim
pubS_Pix_x(pubElm_Len), pubS_Pix_y(pubElm_Len), pubS_Pix_z(pubElm_Len)
63
ReDim
pubD_Pix_x(pubElm_Len), pubD_Pix_y(pubElm_Len), pubD_Pix_z(pubElm_Len)
64
ReDim
pubV_Pix_x(pubElm_Len), pubV_Pix_y(pubElm_Len), pubV_Pix_z(pubElm_Len)
65
ReDim
pubS_Pix_c(pubElm_Len)
66
tH
=
100
67
tR
=
0
68
For
tI
=
1
To
1500
Step
15
69
tR
=
tR
+
0.1
70
tA
=
tA
+
(
5
/
tR
*
2
*
3.14
)
71
tH
=
30
-
5
*
tR
'
2 * tR
72
tAr
=
Radian(tA)
73
tX
=
Sin
(tAr)
*
tR
*
3
74
tY
=
Cos
(tAr)
*
tR
*
3
75
For
tZ
=
Int
(tH)
To
0
Step
-
1
76
pubS_Pix_x(tAdd)
=
tX
77
pubS_Pix_y(tAdd)
=
tY
78
pubS_Pix_z(tAdd)
=
tZ
79
tAdd
=
tAdd
+
1
80
Next
81
Next
82
83
pubD_Mx
=
0
84
pubD_My
=
0
85
pubD_Mz
=
0
86
End Sub
87
Sub
Web_TimeLoop()
88
pubD_Rz
=
(pubD_Rz
+
5
)
Mod
360
89
pubD_Rx
=
-
45
90
pubD_Ry
=
0
91
MTX_3DMixD pubD_Mx, pubD_My, pubD_Mz, pubD_Rx, pubD_Ry, pubD_Rz, pubD_Mtx_Mx, pubD_Mtx_Mr
92
PXE_MTXTram3D pubS_Pix_x, pubS_Pix_y, pubS_Pix_z, pubD_Mtx_Mx, pubD_Mtx_Mr, pubD_Pix_x, pubD_Pix_y, pubD_Pix_z
93
FIT_PSV pubD_Pix_x, pubD_Pix_y, pubD_Pix_z, pubF_Va, pubF_Vd, pubD_Pix_x, pubD_Pix_y, pubD_Pix_z
94
PXE_MTXTram3D pubD_Pix_x, pubD_Pix_y, pubD_Pix_z, pubV_Mtx_Mx, pubV_Mtx_Mr, pubV_Pix_x, pubV_Pix_y, pubV_Pix_z
95
96
For
tI
=
0
To
10
97
For
tEi
=
pubElm_Len
To
0
Step
-
1
98
If
CBool
(tEi)
Then
99
pubS_Pix_c(tEi)
=
pubS_Pix_c(tEi
-
1
)
100
Else
101
If
pubR
<
pubOR
Then
pubR
=
pubR
+
1
102
If
pubR
>
pubOR
Then
pubR
=
pubR
-
1
103
If
pubG
<
pubOG
Then
pubG
=
pubG
+
1
104
If
pubG
>
pubOG
Then
pubG
=
pubG
-
1
105
If
pubB
<
pubOB
Then
pubB
=
pubB
+
1
106
If
pubB
>
pubOB
Then
pubB
=
pubB
-
1
107
If
pubR
=
pubOR
And
pubB
=
pubOB
And
pubG
=
pubOG
Then
108
pubOR
=
Int
(
Rnd
*
128
)
+
127
109
pubOG
=
Int
(
Rnd
*
128
)
+
127
110
pubOB
=
Int
(
Rnd
*
128
)
+
127
111
End
If
112
pubS_Pix_c(tEi)
=
rgb
(pubR, pubG, pubB)
113
End
If
114
Next
115
Next
116
For
tEi
=
pubElm_Len
To
0
Step
-
1
117
With
pubElm(tEi).style
118
.left
=
pubV_Pix_x(tEi)
119
.top
=
pubV_Pix_y(tEi)
120
.color
=
pubS_Pix_c(tEi)
121
End
With
122
Next
123
124
pubWeb_Tv
=
window.setTimeout(
"
Web_TimeLoop
"
, pubWeb_Tw)
125
End Sub
126
Function
ELM_Create(pEn)
127
ReDim
tElms(pEn)
128
For
tEi
=
0
To
pEn
129
With
document
130
Set
tElms(tEi)
=
.createElement(
"
SPAN
"
)
131
.body.insertAdjacentElement
"
beForeEnd
"
, tElms(tEi)
132
End
With
133
With
tElms(tEi)
134
.innerText
=
"
*
"
135
.style.position
=
"
absolute
"
136
.style.color
=
rgb
(
0
,
0
,
0
)
137
End
With
138
Next
139
ELM_Create
=
tElms
140
End Function
141
Sub
PXE_MTXTram2D(pPx(), pPy(), pM(), pMr, oPx(), oPy())
142
tPe
=
UBound
(pPx)
143
For
tPi
=
0
To
tPe
144
oPx(tPi)
=
pPx(tPi)
*
pM(
0
)
+
pPy(tPi)
*
pM(
1
)
+
pM(
2
)
145
oPy(tPi)
=
pPx(tPi)
*
pM(
3
)
+
pPy(tPi)
*
pM(
4
)
+
pM(
5
)
146
Next
147
End Sub
148
Sub
PXE_MTXTram3D(pPx(), pPy(), pPz(), pM(), pMr(), oPx(), oPy(), oPz())
149
tPe
=
UBound
(pPx)
150
For
tPi
=
0
To
tPe
151
oPx(tPi)
=
pPx(tPi)
*
pM(
0
)
+
pPy(tPi)
*
pM(
1
)
+
pPz(tPi)
*
pM(
2
)
+
pM(
3
)
152
oPy(tPi)
=
pPx(tPi)
*
pM(
4
)
+
pPy(tPi)
*
pM(
5
)
+
pPz(tPi)
*
pM(
6
)
+
pM(
7
)
153
oPz(tPi)
=
pPx(tPi)
*
pM(
8
)
+
pPy(tPi)
*
pM(
9
)
+
pPz(tPi)
*
pM(
10
)
+
pM(
11
)
154
Next
155
End Sub
156
Sub
FIT_PSV(iPx, iPy, iPz, iVa, iVd, oPx, oPy, oPz)
157
tPe
=
UBound
(iPx)
158
For
tPi
=
0
To
tPe
159
tVr
=
Sin
(Radian(iVa))
160
tZ
=
iPz(tPi)
+
iVd
161
oPx(tPi)
=
iPx(tPi)
*
tVr
*
tZ
/
(tVr
*
iVd)
162
oPy(tPi)
=
iPy(tPi)
*
tVr
*
tZ
/
(tVr
*
iVd)
163
oPz(tPi)
=
iPz(tPi)
164
Next
165
End Sub
166
Sub
MTX_2DPixMulti(iSc, oM(), oMr)
167
oMr
=
3
168
ReDim
oM(
8
)
169
oM
=
Array
(iSc,
0
,
0
,
0
, iSc,
0
,
0
,
0
,
1
)
170
End Sub
171
Sub
MTX_2DPixMove(iMx, iMy, oM(), oMr)
172
oMr
=
3
173
ReDim
oM(
8
)
174
oM
=
Array
(
1
,
0
, iMx,
0
,
1
, iMy,
0
,
0
,
1
)
175
End Sub
176
Sub
MTX_2DRot(iA, oM(), oMr)
177
tR
=
Radian(iA)
178
oMr
=
3
179
ReDim
oM(
8
)
180
oM
=
Array
(
cos
(tR),
-
sin
(tR),
0
,
sin
(tR),
cos
(tR),
0
,
0
,
0
,
1
)
181
End Sub
182
Sub
MTX_3DMixD(iMx, iMy, iMz, iRx, iRy, iRz, oMx, oMr)
183
MTX_3DPixMove tMtx_MV, oMr, iMx, iMy, iMz
184
MTX_3DPixRotZ tMtx_RTz, oMr, iRz
185
MTX_3DPixRotX tMtx_RTx, oMr, iRx
186
MTX_3DPixRotY tMtx_RTy, oMr, iRy
187
MTX_Multi tMtx_MV, oMr, tMtx_RTz, oMr, tMx, oMr
188
oMx
=
tMx
189
MTX_Multi oMx, oMr, tMtx_RTx, oMr, tMx, oMr
190
oMx
=
tMx
191
MTX_Multi oMx, oMr, tMtx_RTy, oMr, tMx, oMr
192
oMx
=
tMx
193
End Sub
194
Sub
MTX_3DMixV(iVx, iVy, iVz, iSc, oMx, oMr)
195
MTX_3DPixMulti tMtx_SC, oMr, iSc
196
MTX_3DPixMove tMtx_VM, oMr, iVx, iVy, iVz
197
MTX_Multi tMtx_SC, oMr, tMtx_VM, oMr, tMx, oMr
198
oMx
=
tMx
199
End Sub
200
Sub
MTX_3DPixMulti(oM(), oMr, iSc)
201
oMr
=
4
202
ReDim
oM(
15
)
203
oM
=
Array
(iSc,
0
,
0
,
0
,
0
, iSc,
0
,
0
,
0
,
0
, iSc,
0
,
0
,
0
,
0
,
1
)
204
End Sub
205
Sub
MTX_3DPixMove(oM(), oMr, iMx, iMy, iMz)
206
oMr
=
4
207
ReDim
oM(
15
)
208
oM
=
Array
(
1
,
0
,
0
, iMx,
0
,
1
,
0
, iMy,
0
,
0
,
1
, iMz,
0
,
0
,
0
,
1
)
209
End Sub
210
Sub
MTX_3DPixRotZ(oM(), oMr, iA)
211
oMr
=
4
212
ReDim
oM(
15
)
213
tR
=
Radian(iA) : tSin
=
sin
(tR) : tCos
=
cos
(tR)
214
oM
=
Array
(tCos,
-
tSin,
0
,
0
, tSin, tCos,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
)
215
End Sub
216
Sub
MTX_3DPixRotY(oM(), oMr, iA)
217
oMr
=
4
218
ReDim
oM(
15
)
219
tR
=
Radian(iA) : tSin
=
sin
(tR) : tCos
=
cos
(tR)
220
oM
=
Array
(tCos,
0
, tSin,
0
,
0
,
1
,
0
,
0
,
-
tSin,
0
, tCos,
0
,
0
,
0
,
0
,
1
)
221
End Sub
222
Sub
MTX_3DPixRotX(oM(), oMr, iA)
223
oMr
=
4
224
tR
=
Radian(iA)
225
tR
=
Radian(iA) : tSin
=
sin
(tR) : tCos
=
cos
(tR)
226
oM
=
Array
(
1
,
0
,
0
,
0
,
0
, tCos, tSin,
0
,
0
,
-
tSin, tCos,
0
,
0
,
0
,
0
,
1
)
227
End Sub
228
Sub
MTX_Multi(iMa(), iMar, iMb(), iMbr, oMc(), oMcr)
229
tN
=
(iMar
=
((
UBound
(iMb)
\
iMbr)
+
1
))
And
(iMar
-
1
)
230
231
If
CBool
(tN)
Then
232
233
tM
=
Ubound
(iMa)
\
iMar
234
tP
=
iMbr
-
1
235
236
oMcr
=
tP
+
1
237
238
ReDim
oMc(oMcr
*
(tM
+
1
)
-
1
)
239
240
For
tMi
=
0
To
tM
241
For
tPi
=
0
To
tP
242
For
tNi
=
0
To
tN
243
tMv
=
MTX_VGet(oMc, oMcr, tMi, tPi)
+
MTX_VGet(iMa, iMar, tMi, tNi)
*
MTX_VGet(iMb, iMbr, tNi, tPi)
244
MTX_VSet oMc, oMcr, tMi, tPi, tMv
245
246
Next
247
Next
248
Next
249
250
End
If
251
252
End Sub
253
Sub
MTX_VSet(pM(), pMr, pX, pY, pMv)
254
tMi
=
pY
*
pMr
+
pX
255
pM(tMi)
=
pMv
256
End Sub
257
Function
MTX_VGet(pM(), pMr, pX, pY)
258
tMi
=
pY
*
pMr
+
pX
259
MTX_VGet
=
pM(tMi)
260
End Function
261
Function
Radian(pA)
262
Radian
=
pA
*
71
/
4068
263
End Function
264
</
script
>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264