efront 3.15.6 → 3.15.7
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/coms/basic/matrix.js +51 -28
- package/coms/zimoli/render.js +1 -1
- package/data/packexe-setup.sfx +0 -0
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/basic/matrix.js
CHANGED
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
// end
|
|
33
33
|
// end
|
|
34
34
|
"use strict";
|
|
35
|
-
|
|
36
35
|
var notMatchLength = new Error("矩阵长度不一致");
|
|
37
|
-
|
|
36
|
+
|
|
37
|
+
function transform(B, dots) {
|
|
38
38
|
var dimention = Math.sqrt(B.length - 1) | 0;
|
|
39
39
|
if (dots.length % dimention !== 0) throw notMatchLength;
|
|
40
40
|
if (dots === B) B = B.slice(0);
|
|
@@ -43,10 +43,11 @@ function transform(dots, B) {
|
|
|
43
43
|
for (var cx = 0, dx = dots.length; cx < dx; cx += dimention) {
|
|
44
44
|
for (var cy = 0, dy = dimention; cy < dy; cy++) {
|
|
45
45
|
var sum = 0;
|
|
46
|
+
var start = dim2 * cy;
|
|
46
47
|
for (var ct = 0, dt = dimention; ct < dt; ct++) {
|
|
47
|
-
sum += ds[cx + ct] * B[
|
|
48
|
+
sum += ds[cx + ct] * B[start + ct];
|
|
48
49
|
}
|
|
49
|
-
sum += B[
|
|
50
|
+
sum += B[start + dimention];
|
|
50
51
|
dots[cx + cy] = sum;
|
|
51
52
|
}
|
|
52
53
|
}
|
|
@@ -56,13 +57,12 @@ function transform(dots, B) {
|
|
|
56
57
|
function translate(A, delta) {
|
|
57
58
|
var [dim2, dim] = size(A);
|
|
58
59
|
var inc = 0;
|
|
59
|
-
for (var cx = dim
|
|
60
|
+
for (var cx = dim, dx = dim * dim2; cx < dx; cx += dim2) {
|
|
60
61
|
A[cx] = (A[cx] || 0) + delta[inc++];
|
|
61
62
|
}
|
|
62
63
|
return A;
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
|
|
66
66
|
function 负(a) {
|
|
67
67
|
return -a;
|
|
68
68
|
}
|
|
@@ -76,7 +76,7 @@ function multiply(A, B) {
|
|
|
76
76
|
for (var cy = 0, dy = dim; cy < dy; cy++) {
|
|
77
77
|
var sum = 0;
|
|
78
78
|
for (var ct = 0, dt = dim; ct < dt; ct++) {
|
|
79
|
-
sum +=
|
|
79
|
+
sum += B[cx + ct] * X[ct * dim + cy];
|
|
80
80
|
}
|
|
81
81
|
A[cx + cy] = sum;
|
|
82
82
|
}
|
|
@@ -132,15 +132,17 @@ function olinde(v, vector) {
|
|
|
132
132
|
}
|
|
133
133
|
return v;
|
|
134
134
|
}
|
|
135
|
+
|
|
135
136
|
function matrix2d(theta) {
|
|
136
137
|
var cosa = Math.cos(theta);
|
|
137
138
|
var sina = Math.sin(theta);
|
|
138
139
|
return new Matrix(
|
|
139
|
-
cosa, sina, 0,
|
|
140
|
-
|
|
140
|
+
cosa, -sina, 0,
|
|
141
|
+
sina, cosa, 0,
|
|
141
142
|
0, 0, 1
|
|
142
143
|
);
|
|
143
|
-
}
|
|
144
|
+
}
|
|
145
|
+
|
|
144
146
|
function matrix3d(factor) {
|
|
145
147
|
var theta = norm(factor);
|
|
146
148
|
var vec = times(factor, 1 / theta);
|
|
@@ -150,9 +152,9 @@ function matrix3d(factor) {
|
|
|
150
152
|
var [x_u, y_u, z_u] = factor ? [0, 0, 1] : vec;
|
|
151
153
|
|
|
152
154
|
return new Matrix(
|
|
153
|
-
cosa + x_u * x_u * vera, x_u * y_u * vera
|
|
154
|
-
x_u * y_u * vera
|
|
155
|
-
x_u * z_u * vera
|
|
155
|
+
cosa + x_u * x_u * vera, x_u * y_u * vera + z_u * sina, x_u * z_u * vera - y_u * sina, 0,
|
|
156
|
+
x_u * y_u * vera - z_u * sina, cosa + y_u * y_u * vera, y_u * z_u * vera + x_u * sina, 0,
|
|
157
|
+
x_u * z_u * vera + y_u * sina, y_u * z_u * vera - x_u * sina, cosa + z_u * z_u * vera, 0,
|
|
156
158
|
0, 0, 0, 1
|
|
157
159
|
);
|
|
158
160
|
}
|
|
@@ -173,42 +175,47 @@ var 逆 = function (A) {
|
|
|
173
175
|
A.push.apply(A, E);
|
|
174
176
|
for (var cx = 0, dx = dim; cx < dx; cx++) {
|
|
175
177
|
var start = cx * dim + cx;
|
|
176
|
-
|
|
177
|
-
|
|
178
|
+
var max_ct, v = 0;
|
|
179
|
+
for (var ct = start, dt = cx * dim + dim; ct < dt; ct++) {
|
|
180
|
+
var v0 = Math.abs(X[ct]);
|
|
181
|
+
if (v0 > v) {
|
|
182
|
+
max_ct = ct;
|
|
183
|
+
v = v0;
|
|
184
|
+
}
|
|
178
185
|
}
|
|
186
|
+
ct = max_ct;
|
|
179
187
|
if (ct !== start) {
|
|
180
188
|
var delta = ct - start;
|
|
181
|
-
var ratio = 1 / X[ct];
|
|
182
|
-
for (var cy = cx
|
|
189
|
+
var ratio = (1 - X[start]) / X[ct];
|
|
190
|
+
for (var cy = cx, dy = X.length; cy < dy; cy += dim) {
|
|
183
191
|
X[cy] += X[cy + delta] * ratio;
|
|
184
192
|
A[cy] += A[cy + delta] * ratio;
|
|
185
193
|
}
|
|
186
194
|
}
|
|
187
195
|
if (X[start] !== 1) {
|
|
188
|
-
var delta = ct - start;
|
|
189
196
|
var ratio = 1 / X[start];
|
|
190
|
-
for (var cy = cx
|
|
197
|
+
for (var cy = cx, dy = X.length; cy < dy; cy += dim) {
|
|
191
198
|
X[cy] *= ratio;
|
|
192
199
|
A[cy] *= ratio;
|
|
193
200
|
}
|
|
194
201
|
}
|
|
195
|
-
for (var ct = start +
|
|
202
|
+
for (var ct = start + 1, dt = start + dim - cx; ct < dt; ct++) {
|
|
196
203
|
if (X[ct] === 0) continue;
|
|
197
204
|
var ratio = -X[ct];
|
|
198
205
|
var delta = start - ct;
|
|
199
|
-
for (var cy = ct -
|
|
206
|
+
for (var cy = cx + ct - start, dy = X.length; cy < dy; cy += dim) {
|
|
200
207
|
X[cy] += X[cy + delta] * ratio;
|
|
201
208
|
A[cy] += A[cy + delta] * ratio;
|
|
202
209
|
}
|
|
203
210
|
}
|
|
204
211
|
}
|
|
205
|
-
for (var cx = dim -
|
|
206
|
-
var start = cx * dim + cx
|
|
207
|
-
for (var ct = start; ct >=
|
|
212
|
+
for (var cx = dim - 1; cx >= 0; cx--) {
|
|
213
|
+
var start = cx * dim + cx;
|
|
214
|
+
for (var ct = start - 1, dt = start - cx; ct >= dt; ct--) {
|
|
208
215
|
if (X[ct] === 0) continue;
|
|
209
216
|
var ratio = -X[ct];
|
|
210
|
-
var delta =
|
|
211
|
-
for (var cy = cx
|
|
217
|
+
var delta = start - ct;
|
|
218
|
+
for (var cy = cx + ct - start, dy = X.length; cy < dy; cy += dim) {
|
|
212
219
|
X[cy] += X[cy + delta] * ratio;
|
|
213
220
|
A[cy] += A[cy + delta] * ratio;
|
|
214
221
|
}
|
|
@@ -245,6 +252,19 @@ class Matrix extends Array {
|
|
|
245
252
|
if (this._invert) return this._invert;
|
|
246
253
|
return this._invert = this.slice().inverse();
|
|
247
254
|
}
|
|
255
|
+
transpose() {
|
|
256
|
+
var [size] = this.size();
|
|
257
|
+
for (var cx = 0, dx = size; cx < dx; cx++) {
|
|
258
|
+
for (var cy = cx + 1, dy = dx; cy < dy; cy++) {
|
|
259
|
+
var i = cx * size + cy;
|
|
260
|
+
var j = cy * size + cx;
|
|
261
|
+
var tmp = this[i];
|
|
262
|
+
this[i] = this[j];
|
|
263
|
+
this[j] = tmp;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return this;
|
|
267
|
+
}
|
|
248
268
|
inverse() {
|
|
249
269
|
this.dirty();
|
|
250
270
|
return 逆(this);
|
|
@@ -276,8 +296,11 @@ class Matrix extends Array {
|
|
|
276
296
|
return multiply(this, a);
|
|
277
297
|
}
|
|
278
298
|
transform(dots) {
|
|
279
|
-
if (dots instanceof Array) return transform(
|
|
280
|
-
if (
|
|
299
|
+
if (dots instanceof Array) return transform(this, dots);
|
|
300
|
+
if (arguments.length > 1) {
|
|
301
|
+
var a = Array.prototype.slice.apply(arguments, 0);
|
|
302
|
+
return transform(this, a);
|
|
303
|
+
}
|
|
281
304
|
return dots;
|
|
282
305
|
}
|
|
283
306
|
}
|
package/coms/zimoli/render.js
CHANGED
|
@@ -585,7 +585,7 @@ var emiters = {
|
|
|
585
585
|
emiters.v = emiters.ng = emiters.on;
|
|
586
586
|
|
|
587
587
|
function getFromScopes(key, scope, parentScopes) {
|
|
588
|
-
if (key in scope) {
|
|
588
|
+
if (scope) if (key in scope) {
|
|
589
589
|
return scope[key];
|
|
590
590
|
}
|
|
591
591
|
if (parentScopes) for (var cx = parentScopes.length - 1; cx >= 0; cx--) {
|
package/data/packexe-setup.sfx
CHANGED
|
Binary file
|