@predy-js/math 0.3.0-beta.24 → 0.3.0-beta.27

Sign up to get free protection for your applications and to get access to all the features.
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.24",
3
+ "version": "0.3.0-beta.27",
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.24",
31
+ "@predy-js/render-interface": "0.3.0-beta.27",
32
32
  "@commitlint/cli": "^13.2.1",
33
33
  "@commitlint/config-conventional": "^13.2.0",
34
34
  "@rollup/plugin-commonjs": "^21.0.3",