@predy-js/math 0.3.0-beta.26 → 0.3.0-beta.260
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/dist/index.js +66 -6
- package/dist/index.mjs +64 -7
- package/dist/mat4.d.ts +2 -0
- package/dist/quat.d.ts +7 -1
- package/dist/vec2.d.ts +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -170,6 +170,13 @@ const temps = [0, 0, 0];
|
|
170
170
|
function mat4create() {
|
171
171
|
return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
172
172
|
}
|
173
|
+
function mat4FromArray(arrLike, index = 0) {
|
174
|
+
const ret = new Float32Array(16);
|
175
|
+
for (let i = 0; i < 16; i++) {
|
176
|
+
ret[i] = (arrLike[index + i]) || 0;
|
177
|
+
}
|
178
|
+
return ret;
|
179
|
+
}
|
173
180
|
function mat4fromRotationTranslationScale(out, q, v, s) {
|
174
181
|
const x = q[0];
|
175
182
|
const y = q[1];
|
@@ -541,6 +548,29 @@ function mat4scale(out, a, v) {
|
|
541
548
|
out[15] = a[15];
|
542
549
|
return out;
|
543
550
|
}
|
551
|
+
function mat4transpose(out, a) {
|
552
|
+
//transpose mat4
|
553
|
+
const a01 = a[1], a02 = a[2], a03 = a[3];
|
554
|
+
const a12 = a[6], a13 = a[7];
|
555
|
+
const a23 = a[11];
|
556
|
+
out[0] = a[0];
|
557
|
+
out[1] = a[4];
|
558
|
+
out[2] = a[8];
|
559
|
+
out[3] = a[12];
|
560
|
+
out[4] = a01;
|
561
|
+
out[5] = a[5];
|
562
|
+
out[6] = a[9];
|
563
|
+
out[7] = a[13];
|
564
|
+
out[8] = a02;
|
565
|
+
out[9] = a12;
|
566
|
+
out[10] = a[10];
|
567
|
+
out[11] = a[14];
|
568
|
+
out[12] = a03;
|
569
|
+
out[13] = a13;
|
570
|
+
out[14] = a23;
|
571
|
+
out[15] = a[15];
|
572
|
+
return out;
|
573
|
+
}
|
544
574
|
function mat4rotate(out, a, rad, axis) {
|
545
575
|
let x = axis[0];
|
546
576
|
let y = axis[1];
|
@@ -752,9 +782,9 @@ function getMat4Transform(te) {
|
|
752
782
|
// create vec2
|
753
783
|
function vec2Create(v2) {
|
754
784
|
if (v2) {
|
755
|
-
return [v2[0], v2[1]];
|
785
|
+
return new Float32Array([v2[0], v2[1]]);
|
756
786
|
}
|
757
|
-
return [0, 0];
|
787
|
+
return new Float32Array([0, 0]);
|
758
788
|
}
|
759
789
|
// vec2 add vec2
|
760
790
|
function vec2AddVec2(out, a, b) {
|
@@ -917,9 +947,9 @@ function clamp(v, min, max) {
|
|
917
947
|
const r2d = 180 / Math.PI;
|
918
948
|
function vec3Create(v) {
|
919
949
|
if (v) {
|
920
|
-
return [v[0], v[1], v[2]];
|
950
|
+
return new Float32Array([v[0], v[1], v[2]]);
|
921
951
|
}
|
922
|
-
return [0, 0, 0];
|
952
|
+
return new Float32Array([0, 0, 0]);
|
923
953
|
}
|
924
954
|
function vec3MulVec3(out, a, b) {
|
925
955
|
out[0] = a[0] * b[0];
|
@@ -1023,9 +1053,9 @@ function vec3RotateByQuat(out, a, quat) {
|
|
1023
1053
|
|
1024
1054
|
function vec4Create(v) {
|
1025
1055
|
if (v) {
|
1026
|
-
return [v[0], v[1], v[2], v[3]];
|
1056
|
+
return new Float32Array([v[0], v[1], v[2], v[3]]);
|
1027
1057
|
}
|
1028
|
-
return [0, 0, 0, 0];
|
1058
|
+
return new Float32Array([0, 0, 0, 0]);
|
1029
1059
|
}
|
1030
1060
|
|
1031
1061
|
const d2r = Math.PI / 180;
|
@@ -1107,6 +1137,33 @@ function quatStar(out, quat) {
|
|
1107
1137
|
out[3] = w;
|
1108
1138
|
return out;
|
1109
1139
|
}
|
1140
|
+
/**
|
1141
|
+
* @param {vec3} vstart
|
1142
|
+
* @param {vec3} vend
|
1143
|
+
* @returns {vec4}
|
1144
|
+
*/
|
1145
|
+
function quatFromVec3s(v1, v2) {
|
1146
|
+
const cross = [
|
1147
|
+
v1[1] * v2[2] - v1[2] * v2[1],
|
1148
|
+
v1[2] * v2[0] - v1[0] * v2[2],
|
1149
|
+
v1[0] * v2[1] - v1[1] * v2[0],
|
1150
|
+
];
|
1151
|
+
const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
|
1152
|
+
if (dot < -0.999999) {
|
1153
|
+
let orthogonalAxis = [1, 0, 0];
|
1154
|
+
if (Math.abs(v1[0]) > Math.abs(v1[2])) {
|
1155
|
+
orthogonalAxis = [0, 0, 1];
|
1156
|
+
}
|
1157
|
+
const orthogonalCross = [
|
1158
|
+
v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
|
1159
|
+
v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
|
1160
|
+
v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
|
1161
|
+
];
|
1162
|
+
return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
|
1163
|
+
}
|
1164
|
+
const w = Math.sqrt((Math.pow(v1[0], 2) + Math.pow(v1[1], 2) + Math.pow(v1[2], 2)) * (Math.pow(v2[0], 2) + Math.pow(v2[1], 2) + Math.pow(v2[2], 2))) + dot;
|
1165
|
+
return vecNormalize([cross[0], cross[1], cross[2], w]);
|
1166
|
+
}
|
1110
1167
|
|
1111
1168
|
exports.NumberEpsilon = NumberEpsilon;
|
1112
1169
|
exports.clamp = clamp;
|
@@ -1127,6 +1184,7 @@ exports.mat3Translate = mat3Translate;
|
|
1127
1184
|
exports.mat3create = mat3create;
|
1128
1185
|
exports.mat4Clone = mat4Clone;
|
1129
1186
|
exports.mat4Determinate = mat4Determinate;
|
1187
|
+
exports.mat4FromArray = mat4FromArray;
|
1130
1188
|
exports.mat4create = mat4create;
|
1131
1189
|
exports.mat4fromRotationTranslationScale = mat4fromRotationTranslationScale;
|
1132
1190
|
exports.mat4identity = mat4identity;
|
@@ -1136,10 +1194,12 @@ exports.mat4perspective = mat4perspective;
|
|
1136
1194
|
exports.mat4rotate = mat4rotate;
|
1137
1195
|
exports.mat4scale = mat4scale;
|
1138
1196
|
exports.mat4translate = mat4translate;
|
1197
|
+
exports.mat4transpose = mat4transpose;
|
1139
1198
|
exports.quatCreate = quatCreate;
|
1140
1199
|
exports.quatEquals = quatEquals;
|
1141
1200
|
exports.quatFromRotation = quatFromRotation;
|
1142
1201
|
exports.quatFromRotationXYZ = quatFromRotationXYZ;
|
1202
|
+
exports.quatFromVec3s = quatFromVec3s;
|
1143
1203
|
exports.quatMultiply = quatMultiply;
|
1144
1204
|
exports.quatStar = quatStar;
|
1145
1205
|
exports.rotateVec2 = rotateVec2;
|
package/dist/index.mjs
CHANGED
@@ -166,6 +166,13 @@ const temps = [0, 0, 0];
|
|
166
166
|
function mat4create() {
|
167
167
|
return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
168
168
|
}
|
169
|
+
function mat4FromArray(arrLike, index = 0) {
|
170
|
+
const ret = new Float32Array(16);
|
171
|
+
for (let i = 0; i < 16; i++) {
|
172
|
+
ret[i] = (arrLike[index + i]) || 0;
|
173
|
+
}
|
174
|
+
return ret;
|
175
|
+
}
|
169
176
|
function mat4fromRotationTranslationScale(out, q, v, s) {
|
170
177
|
const x = q[0];
|
171
178
|
const y = q[1];
|
@@ -537,6 +544,29 @@ function mat4scale(out, a, v) {
|
|
537
544
|
out[15] = a[15];
|
538
545
|
return out;
|
539
546
|
}
|
547
|
+
function mat4transpose(out, a) {
|
548
|
+
//transpose mat4
|
549
|
+
const a01 = a[1], a02 = a[2], a03 = a[3];
|
550
|
+
const a12 = a[6], a13 = a[7];
|
551
|
+
const a23 = a[11];
|
552
|
+
out[0] = a[0];
|
553
|
+
out[1] = a[4];
|
554
|
+
out[2] = a[8];
|
555
|
+
out[3] = a[12];
|
556
|
+
out[4] = a01;
|
557
|
+
out[5] = a[5];
|
558
|
+
out[6] = a[9];
|
559
|
+
out[7] = a[13];
|
560
|
+
out[8] = a02;
|
561
|
+
out[9] = a12;
|
562
|
+
out[10] = a[10];
|
563
|
+
out[11] = a[14];
|
564
|
+
out[12] = a03;
|
565
|
+
out[13] = a13;
|
566
|
+
out[14] = a23;
|
567
|
+
out[15] = a[15];
|
568
|
+
return out;
|
569
|
+
}
|
540
570
|
function mat4rotate(out, a, rad, axis) {
|
541
571
|
let x = axis[0];
|
542
572
|
let y = axis[1];
|
@@ -748,9 +778,9 @@ function getMat4Transform(te) {
|
|
748
778
|
// create vec2
|
749
779
|
function vec2Create(v2) {
|
750
780
|
if (v2) {
|
751
|
-
return [v2[0], v2[1]];
|
781
|
+
return new Float32Array([v2[0], v2[1]]);
|
752
782
|
}
|
753
|
-
return [0, 0];
|
783
|
+
return new Float32Array([0, 0]);
|
754
784
|
}
|
755
785
|
// vec2 add vec2
|
756
786
|
function vec2AddVec2(out, a, b) {
|
@@ -913,9 +943,9 @@ function clamp(v, min, max) {
|
|
913
943
|
const r2d = 180 / Math.PI;
|
914
944
|
function vec3Create(v) {
|
915
945
|
if (v) {
|
916
|
-
return [v[0], v[1], v[2]];
|
946
|
+
return new Float32Array([v[0], v[1], v[2]]);
|
917
947
|
}
|
918
|
-
return [0, 0, 0];
|
948
|
+
return new Float32Array([0, 0, 0]);
|
919
949
|
}
|
920
950
|
function vec3MulVec3(out, a, b) {
|
921
951
|
out[0] = a[0] * b[0];
|
@@ -1019,9 +1049,9 @@ function vec3RotateByQuat(out, a, quat) {
|
|
1019
1049
|
|
1020
1050
|
function vec4Create(v) {
|
1021
1051
|
if (v) {
|
1022
|
-
return [v[0], v[1], v[2], v[3]];
|
1052
|
+
return new Float32Array([v[0], v[1], v[2], v[3]]);
|
1023
1053
|
}
|
1024
|
-
return [0, 0, 0, 0];
|
1054
|
+
return new Float32Array([0, 0, 0, 0]);
|
1025
1055
|
}
|
1026
1056
|
|
1027
1057
|
const d2r = Math.PI / 180;
|
@@ -1103,5 +1133,32 @@ function quatStar(out, quat) {
|
|
1103
1133
|
out[3] = w;
|
1104
1134
|
return out;
|
1105
1135
|
}
|
1136
|
+
/**
|
1137
|
+
* @param {vec3} vstart
|
1138
|
+
* @param {vec3} vend
|
1139
|
+
* @returns {vec4}
|
1140
|
+
*/
|
1141
|
+
function quatFromVec3s(v1, v2) {
|
1142
|
+
const cross = [
|
1143
|
+
v1[1] * v2[2] - v1[2] * v2[1],
|
1144
|
+
v1[2] * v2[0] - v1[0] * v2[2],
|
1145
|
+
v1[0] * v2[1] - v1[1] * v2[0],
|
1146
|
+
];
|
1147
|
+
const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
|
1148
|
+
if (dot < -0.999999) {
|
1149
|
+
let orthogonalAxis = [1, 0, 0];
|
1150
|
+
if (Math.abs(v1[0]) > Math.abs(v1[2])) {
|
1151
|
+
orthogonalAxis = [0, 0, 1];
|
1152
|
+
}
|
1153
|
+
const orthogonalCross = [
|
1154
|
+
v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
|
1155
|
+
v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
|
1156
|
+
v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
|
1157
|
+
];
|
1158
|
+
return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
|
1159
|
+
}
|
1160
|
+
const w = Math.sqrt((Math.pow(v1[0], 2) + Math.pow(v1[1], 2) + Math.pow(v1[2], 2)) * (Math.pow(v2[0], 2) + Math.pow(v2[1], 2) + Math.pow(v2[2], 2))) + dot;
|
1161
|
+
return vecNormalize([cross[0], cross[1], cross[2], w]);
|
1162
|
+
}
|
1106
1163
|
|
1107
|
-
export { NumberEpsilon, clamp, ensureVec3, getMat4TR, getMat4TRS, getMat4Transform, invertMat4, isZeroVec, mat3FromQuat, mat3FromRotation, mat3FromRotationZ, mat3MulMat3, mat3NormalFromMat4, mat3Rotate, mat3Scale, mat3Translate, mat3create, mat4Clone, mat4Determinate, mat4create, mat4fromRotationTranslationScale, mat4identity, mat4invert, mat4multiply, mat4perspective, mat4rotate, mat4scale, mat4translate, quatCreate, quatEquals, quatFromRotation, quatFromRotationXYZ, quatMultiply, quatStar, rotateVec2, rotationFromMat3, transposeMat3, transposeMat4, vec2AddVec2, vec2Create, vec2MulMat3, vec2MulVec2, vec2SubVec2, vec2TransformByMat3, vec3AddVec3, vec3Create, vec3Cross, vec3MulMat3, vec3MulMat4, vec3MulNum, vec3MulVec3, vec3RotateByMat4, vec3RotateByQuat, vec3TranslateByMat4, vec4Create, vecAdd, vecAddCombine, vecAssign, vecDot, vecFill, vecMinus, vecMulCombine, vecMulScalar, vecNormalize, vecSquareDistance, vecSub };
|
1164
|
+
export { NumberEpsilon, clamp, ensureVec3, getMat4TR, getMat4TRS, getMat4Transform, invertMat4, isZeroVec, mat3FromQuat, mat3FromRotation, mat3FromRotationZ, mat3MulMat3, mat3NormalFromMat4, mat3Rotate, mat3Scale, mat3Translate, mat3create, mat4Clone, mat4Determinate, mat4FromArray, mat4create, mat4fromRotationTranslationScale, mat4identity, mat4invert, mat4multiply, mat4perspective, mat4rotate, mat4scale, mat4translate, mat4transpose, quatCreate, quatEquals, quatFromRotation, quatFromRotationXYZ, quatFromVec3s, quatMultiply, quatStar, rotateVec2, rotationFromMat3, transposeMat3, transposeMat4, vec2AddVec2, vec2Create, vec2MulMat3, vec2MulVec2, vec2SubVec2, vec2TransformByMat3, vec3AddVec3, vec3Create, vec3Cross, vec3MulMat3, vec3MulMat4, vec3MulNum, vec3MulVec3, vec3RotateByMat4, vec3RotateByQuat, vec3TranslateByMat4, vec4Create, vecAdd, vecAddCombine, vecAssign, vecDot, vecFill, vecMinus, vecMulCombine, vecMulScalar, vecNormalize, vecSquareDistance, vecSub };
|
package/dist/mat4.d.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import type { mat4 } from '@predy-js/render-interface';
|
2
2
|
import type { vec3, vec4 } from '@predy-js/render-interface';
|
3
3
|
export declare function mat4create(): mat4;
|
4
|
+
export declare function mat4FromArray(arrLike: ArrayLike<number>, index?: number): mat4;
|
4
5
|
export declare function mat4fromRotationTranslationScale(out: mat4 | number[], q: vec4, v: vec3, s: vec3): mat4;
|
5
6
|
export declare function invertMat4(out: mat4 | number[], a: mat4): mat4;
|
6
7
|
export declare function mat4Determinate(a: mat4): number;
|
@@ -11,6 +12,7 @@ export declare function mat4Clone(out: mat4 | number[], from: mat4): mat4;
|
|
11
12
|
export declare function mat4invert(out: mat4 | number[], a: mat4): mat4;
|
12
13
|
export declare function mat4translate(out: mat4, a: mat4, v: vec3): mat4;
|
13
14
|
export declare function mat4scale(out: mat4, a: mat4, v: vec3): mat4;
|
15
|
+
export declare function mat4transpose(out: mat4, a: mat4): mat4;
|
14
16
|
export declare function mat4rotate(out: mat4, a: mat4, rad: number, axis: vec3): mat4;
|
15
17
|
export declare function mat4perspective(out: number[] | mat4, fovy: number, aspect: number, near: number, far: number, reverse?: boolean): mat4;
|
16
18
|
export declare function mat4identity(out: mat4): void;
|
package/dist/quat.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { mat3, vec4 } from '@predy-js/render-interface';
|
1
|
+
import type { mat3, vec3, vec4 } from '@predy-js/render-interface';
|
2
2
|
export declare function quatCreate(): vec4;
|
3
3
|
export declare function quatMultiply(out: vec4, a: vec4, b: vec4): vec4;
|
4
4
|
export declare function mat3FromQuat(out: mat3 | number[], quat: vec4): mat3;
|
@@ -6,3 +6,9 @@ export declare function quatEquals(q1: vec4, q2: vec4): boolean;
|
|
6
6
|
export declare function quatFromRotation(out: vec4, x: number, y: number, z: number): vec4;
|
7
7
|
export declare function quatFromRotationXYZ(out: vec4, x: number, y: number, z: number): vec4;
|
8
8
|
export declare function quatStar(out: vec4, quat: vec4): vec4;
|
9
|
+
/**
|
10
|
+
* @param {vec3} vstart
|
11
|
+
* @param {vec3} vend
|
12
|
+
* @returns {vec4}
|
13
|
+
*/
|
14
|
+
export declare function quatFromVec3s(v1: vec3, v2: vec3): vec4;
|
package/dist/vec2.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { vec2, mat3 } from '@predy-js/render-interface';
|
2
|
-
export declare function vec2Create(v2?: vec2):
|
2
|
+
export declare function vec2Create(v2?: vec2): any;
|
3
3
|
export declare function vec2AddVec2(out: vec2, a: vec2, b: vec2): vec2;
|
4
4
|
export declare function vec2SubVec2(out: vec2, a: vec2, b: vec2): vec2;
|
5
5
|
export declare function vec2MulVec2(out: vec2, a: vec2, b: vec2): vec2;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@predy-js/math",
|
3
|
-
"version": "0.3.0-beta.
|
3
|
+
"version": "0.3.0-beta.260",
|
4
4
|
"description": "Mars JSON Specification",
|
5
5
|
"module": "./dist/index.mjs",
|
6
6
|
"main": "./dist/index.js",
|
@@ -28,7 +28,7 @@
|
|
28
28
|
"prepublishOnly": "npm run build"
|
29
29
|
},
|
30
30
|
"devDependencies": {
|
31
|
-
"@predy-js/render-interface": "0.3.0-beta.
|
31
|
+
"@predy-js/render-interface": "0.3.0-beta.260",
|
32
32
|
"@commitlint/cli": "^13.2.1",
|
33
33
|
"@commitlint/config-conventional": "^13.2.0",
|
34
34
|
"@rollup/plugin-commonjs": "^21.0.3",
|