@predy-js/math 0.3.0-beta.46 → 0.3.0-beta.48
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 +32 -42
- package/dist/index.mjs +31 -41
- package/dist/mat4.d.ts +2 -0
- package/dist/quat.d.ts +1 -8
- package/dist/vec4.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];
|
@@ -1086,19 +1116,6 @@ function quatFromRotation(out, x, y, z) {
|
|
1086
1116
|
out[3] = c1 * c2 * c3 + s1 * s2 * s3;
|
1087
1117
|
return out;
|
1088
1118
|
}
|
1089
|
-
function quatFromRotationXYZ(out, x, y, z) {
|
1090
|
-
const c1 = Math.cos((x * d2r) / 2);
|
1091
|
-
const c2 = Math.cos((y * d2r) / 2);
|
1092
|
-
const c3 = Math.cos((z * d2r) / 2);
|
1093
|
-
const s1 = Math.sin((x * d2r) / 2);
|
1094
|
-
const s2 = Math.sin((y * d2r) / 2);
|
1095
|
-
const s3 = Math.sin((z * d2r) / 2);
|
1096
|
-
out[0] = s1 * c2 * c3 + c1 * s2 * s3;
|
1097
|
-
out[1] = c1 * s2 * c3 - s1 * c2 * s3;
|
1098
|
-
out[2] = c1 * c2 * s3 + s1 * s2 * c3;
|
1099
|
-
out[3] = c1 * c2 * c3 - s1 * s2 * s3;
|
1100
|
-
return out;
|
1101
|
-
}
|
1102
1119
|
function quatStar(out, quat) {
|
1103
1120
|
const x = quat[0], y = quat[1], z = quat[2], w = quat[3];
|
1104
1121
|
out[0] = -x;
|
@@ -1107,33 +1124,6 @@ function quatStar(out, quat) {
|
|
1107
1124
|
out[3] = w;
|
1108
1125
|
return out;
|
1109
1126
|
}
|
1110
|
-
/**
|
1111
|
-
* @param {vec3} vstart
|
1112
|
-
* @param {vec3} vend
|
1113
|
-
* @returns {vec4}
|
1114
|
-
*/
|
1115
|
-
function quatFromVec3s(v1, v2) {
|
1116
|
-
const cross = [
|
1117
|
-
v1[1] * v2[2] - v1[2] * v2[1],
|
1118
|
-
v1[2] * v2[0] - v1[0] * v2[2],
|
1119
|
-
v1[0] * v2[1] - v1[1] * v2[0],
|
1120
|
-
];
|
1121
|
-
const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
|
1122
|
-
if (dot < -0.999999) {
|
1123
|
-
let orthogonalAxis = [1, 0, 0];
|
1124
|
-
if (Math.abs(v1[0]) > Math.abs(v1[2])) {
|
1125
|
-
orthogonalAxis = [0, 0, 1];
|
1126
|
-
}
|
1127
|
-
const orthogonalCross = [
|
1128
|
-
v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
|
1129
|
-
v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
|
1130
|
-
v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
|
1131
|
-
];
|
1132
|
-
return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
|
1133
|
-
}
|
1134
|
-
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;
|
1135
|
-
return vecNormalize([cross[0], cross[1], cross[2], w]);
|
1136
|
-
}
|
1137
1127
|
|
1138
1128
|
exports.NumberEpsilon = NumberEpsilon;
|
1139
1129
|
exports.clamp = clamp;
|
@@ -1154,6 +1144,7 @@ exports.mat3Translate = mat3Translate;
|
|
1154
1144
|
exports.mat3create = mat3create;
|
1155
1145
|
exports.mat4Clone = mat4Clone;
|
1156
1146
|
exports.mat4Determinate = mat4Determinate;
|
1147
|
+
exports.mat4FromArray = mat4FromArray;
|
1157
1148
|
exports.mat4create = mat4create;
|
1158
1149
|
exports.mat4fromRotationTranslationScale = mat4fromRotationTranslationScale;
|
1159
1150
|
exports.mat4identity = mat4identity;
|
@@ -1163,11 +1154,10 @@ exports.mat4perspective = mat4perspective;
|
|
1163
1154
|
exports.mat4rotate = mat4rotate;
|
1164
1155
|
exports.mat4scale = mat4scale;
|
1165
1156
|
exports.mat4translate = mat4translate;
|
1157
|
+
exports.mat4transpose = mat4transpose;
|
1166
1158
|
exports.quatCreate = quatCreate;
|
1167
1159
|
exports.quatEquals = quatEquals;
|
1168
1160
|
exports.quatFromRotation = quatFromRotation;
|
1169
|
-
exports.quatFromRotationXYZ = quatFromRotationXYZ;
|
1170
|
-
exports.quatFromVec3s = quatFromVec3s;
|
1171
1161
|
exports.quatMultiply = quatMultiply;
|
1172
1162
|
exports.quatStar = quatStar;
|
1173
1163
|
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];
|
@@ -1082,19 +1112,6 @@ function quatFromRotation(out, x, y, z) {
|
|
1082
1112
|
out[3] = c1 * c2 * c3 + s1 * s2 * s3;
|
1083
1113
|
return out;
|
1084
1114
|
}
|
1085
|
-
function quatFromRotationXYZ(out, x, y, z) {
|
1086
|
-
const c1 = Math.cos((x * d2r) / 2);
|
1087
|
-
const c2 = Math.cos((y * d2r) / 2);
|
1088
|
-
const c3 = Math.cos((z * d2r) / 2);
|
1089
|
-
const s1 = Math.sin((x * d2r) / 2);
|
1090
|
-
const s2 = Math.sin((y * d2r) / 2);
|
1091
|
-
const s3 = Math.sin((z * d2r) / 2);
|
1092
|
-
out[0] = s1 * c2 * c3 + c1 * s2 * s3;
|
1093
|
-
out[1] = c1 * s2 * c3 - s1 * c2 * s3;
|
1094
|
-
out[2] = c1 * c2 * s3 + s1 * s2 * c3;
|
1095
|
-
out[3] = c1 * c2 * c3 - s1 * s2 * s3;
|
1096
|
-
return out;
|
1097
|
-
}
|
1098
1115
|
function quatStar(out, quat) {
|
1099
1116
|
const x = quat[0], y = quat[1], z = quat[2], w = quat[3];
|
1100
1117
|
out[0] = -x;
|
@@ -1103,32 +1120,5 @@ function quatStar(out, quat) {
|
|
1103
1120
|
out[3] = w;
|
1104
1121
|
return out;
|
1105
1122
|
}
|
1106
|
-
/**
|
1107
|
-
* @param {vec3} vstart
|
1108
|
-
* @param {vec3} vend
|
1109
|
-
* @returns {vec4}
|
1110
|
-
*/
|
1111
|
-
function quatFromVec3s(v1, v2) {
|
1112
|
-
const cross = [
|
1113
|
-
v1[1] * v2[2] - v1[2] * v2[1],
|
1114
|
-
v1[2] * v2[0] - v1[0] * v2[2],
|
1115
|
-
v1[0] * v2[1] - v1[1] * v2[0],
|
1116
|
-
];
|
1117
|
-
const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
|
1118
|
-
if (dot < -0.999999) {
|
1119
|
-
let orthogonalAxis = [1, 0, 0];
|
1120
|
-
if (Math.abs(v1[0]) > Math.abs(v1[2])) {
|
1121
|
-
orthogonalAxis = [0, 0, 1];
|
1122
|
-
}
|
1123
|
-
const orthogonalCross = [
|
1124
|
-
v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
|
1125
|
-
v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
|
1126
|
-
v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
|
1127
|
-
];
|
1128
|
-
return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
|
1129
|
-
}
|
1130
|
-
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;
|
1131
|
-
return vecNormalize([cross[0], cross[1], cross[2], w]);
|
1132
|
-
}
|
1133
1123
|
|
1134
|
-
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,
|
1124
|
+
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, 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,14 +1,7 @@
|
|
1
|
-
import type { mat3,
|
1
|
+
import type { mat3, 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;
|
5
5
|
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
|
-
export declare function quatFromRotationXYZ(out: vec4, x: number, y: number, z: number): vec4;
|
8
7
|
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/vec4.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
import type { vec4 } from '@predy-js/render-interface';
|
2
|
-
export declare function vec4Create(v
|
2
|
+
export declare function vec4Create(v: vec4): vec4;
|
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.48",
|
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.48",
|
32
32
|
"@commitlint/cli": "^13.2.1",
|
33
33
|
"@commitlint/config-conventional": "^13.2.0",
|
34
34
|
"@rollup/plugin-commonjs": "^21.0.3",
|