@predy-js/math 0.3.0-beta.4 → 0.3.0-beta.41

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,33 @@ function quatStar(out, quat) {
1094
1107
  out[3] = w;
1095
1108
  return out;
1096
1109
  }
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
+ }
1097
1137
 
1098
1138
  exports.NumberEpsilon = NumberEpsilon;
1099
1139
  exports.clamp = clamp;
@@ -1126,6 +1166,8 @@ exports.mat4translate = mat4translate;
1126
1166
  exports.quatCreate = quatCreate;
1127
1167
  exports.quatEquals = quatEquals;
1128
1168
  exports.quatFromRotation = quatFromRotation;
1169
+ exports.quatFromRotationXYZ = quatFromRotationXYZ;
1170
+ exports.quatFromVec3s = quatFromVec3s;
1129
1171
  exports.quatMultiply = quatMultiply;
1130
1172
  exports.quatStar = quatStar;
1131
1173
  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,32 @@ function quatStar(out, quat) {
1090
1103
  out[3] = w;
1091
1104
  return out;
1092
1105
  }
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
+ }
1093
1133
 
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 };
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 };
package/dist/quat.d.ts CHANGED
@@ -1,7 +1,14 @@
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
+ /**
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.4",
3
+ "version": "0.3.0-beta.41",
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.4",
31
+ "@predy-js/render-interface": "0.3.0-beta.41",
32
32
  "@commitlint/cli": "^13.2.1",
33
33
  "@commitlint/config-conventional": "^13.2.0",
34
34
  "@rollup/plugin-commonjs": "^21.0.3",