@predy-js/math 0.3.0-beta.30 → 0.3.0-beta.32

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
@@ -1086,6 +1086,19 @@ function quatFromRotation(out, x, y, z) {
1086
1086
  out[3] = c1 * c2 * c3 + s1 * s2 * s3;
1087
1087
  return out;
1088
1088
  }
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
+ }
1089
1102
  function quatStar(out, quat) {
1090
1103
  const x = quat[0], y = quat[1], z = quat[2], w = quat[3];
1091
1104
  out[0] = -x;
@@ -1094,6 +1107,28 @@ function quatStar(out, quat) {
1094
1107
  out[3] = w;
1095
1108
  return out;
1096
1109
  }
1110
+ function quatFromVec3s(v1, v2) {
1111
+ const cross = [
1112
+ v1[1] * v2[2] - v1[2] * v2[1],
1113
+ v1[2] * v2[0] - v1[0] * v2[2],
1114
+ v1[0] * v2[1] - v1[1] * v2[0],
1115
+ ];
1116
+ const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
1117
+ if (dot < -0.999999) {
1118
+ let orthogonalAxis = [1, 0, 0];
1119
+ if (Math.abs(v1[0]) > Math.abs(v1[2])) {
1120
+ orthogonalAxis = [0, 0, 1];
1121
+ }
1122
+ const orthogonalCross = [
1123
+ v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
1124
+ v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
1125
+ v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
1126
+ ];
1127
+ return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
1128
+ }
1129
+ 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;
1130
+ return vecNormalize([cross[0], cross[1], cross[2], w]);
1131
+ }
1097
1132
 
1098
1133
  exports.NumberEpsilon = NumberEpsilon;
1099
1134
  exports.clamp = clamp;
@@ -1126,6 +1161,8 @@ exports.mat4translate = mat4translate;
1126
1161
  exports.quatCreate = quatCreate;
1127
1162
  exports.quatEquals = quatEquals;
1128
1163
  exports.quatFromRotation = quatFromRotation;
1164
+ exports.quatFromRotationXYZ = quatFromRotationXYZ;
1165
+ exports.quatFromVec3s = quatFromVec3s;
1129
1166
  exports.quatMultiply = quatMultiply;
1130
1167
  exports.quatStar = quatStar;
1131
1168
  exports.rotateVec2 = rotateVec2;
package/dist/index.mjs CHANGED
@@ -1082,6 +1082,19 @@ function quatFromRotation(out, x, y, z) {
1082
1082
  out[3] = c1 * c2 * c3 + s1 * s2 * s3;
1083
1083
  return out;
1084
1084
  }
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
+ }
1085
1098
  function quatStar(out, quat) {
1086
1099
  const x = quat[0], y = quat[1], z = quat[2], w = quat[3];
1087
1100
  out[0] = -x;
@@ -1090,5 +1103,27 @@ function quatStar(out, quat) {
1090
1103
  out[3] = w;
1091
1104
  return out;
1092
1105
  }
1106
+ function quatFromVec3s(v1, v2) {
1107
+ const cross = [
1108
+ v1[1] * v2[2] - v1[2] * v2[1],
1109
+ v1[2] * v2[0] - v1[0] * v2[2],
1110
+ v1[0] * v2[1] - v1[1] * v2[0],
1111
+ ];
1112
+ const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
1113
+ if (dot < -0.999999) {
1114
+ let orthogonalAxis = [1, 0, 0];
1115
+ if (Math.abs(v1[0]) > Math.abs(v1[2])) {
1116
+ orthogonalAxis = [0, 0, 1];
1117
+ }
1118
+ const orthogonalCross = [
1119
+ v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
1120
+ v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
1121
+ v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
1122
+ ];
1123
+ return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
1124
+ }
1125
+ 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;
1126
+ return vecNormalize([cross[0], cross[1], cross[2], w]);
1127
+ }
1093
1128
 
1094
- 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, 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 };
1129
+ 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 };
package/dist/quat.d.ts CHANGED
@@ -1,7 +1,9 @@
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;
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;
7
8
  export declare function quatStar(out: vec4, quat: vec4): vec4;
9
+ 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.30",
3
+ "version": "0.3.0-beta.32",
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.30",
31
+ "@predy-js/render-interface": "0.3.0-beta.32",
32
32
  "@commitlint/cli": "^13.2.1",
33
33
  "@commitlint/config-conventional": "^13.2.0",
34
34
  "@rollup/plugin-commonjs": "^21.0.3",