@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 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, 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 };
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, vec3, vec4 } from '@predy-js/render-interface';
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?: vec4): vec4;
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.46",
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.46",
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",