@predy-js/math 0.3.0-beta.48 → 0.3.0-beta.49

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.js CHANGED
@@ -1116,6 +1116,19 @@ function quatFromRotation(out, x, y, z) {
1116
1116
  out[3] = c1 * c2 * c3 + s1 * s2 * s3;
1117
1117
  return out;
1118
1118
  }
1119
+ function quatFromRotationXYZ(out, x, y, z) {
1120
+ const c1 = Math.cos((x * d2r) / 2);
1121
+ const c2 = Math.cos((y * d2r) / 2);
1122
+ const c3 = Math.cos((z * d2r) / 2);
1123
+ const s1 = Math.sin((x * d2r) / 2);
1124
+ const s2 = Math.sin((y * d2r) / 2);
1125
+ const s3 = Math.sin((z * d2r) / 2);
1126
+ out[0] = s1 * c2 * c3 + c1 * s2 * s3;
1127
+ out[1] = c1 * s2 * c3 - s1 * c2 * s3;
1128
+ out[2] = c1 * c2 * s3 + s1 * s2 * c3;
1129
+ out[3] = c1 * c2 * c3 - s1 * s2 * s3;
1130
+ return out;
1131
+ }
1119
1132
  function quatStar(out, quat) {
1120
1133
  const x = quat[0], y = quat[1], z = quat[2], w = quat[3];
1121
1134
  out[0] = -x;
@@ -1124,6 +1137,33 @@ function quatStar(out, quat) {
1124
1137
  out[3] = w;
1125
1138
  return out;
1126
1139
  }
1140
+ /**
1141
+ * @param {vec3} vstart
1142
+ * @param {vec3} vend
1143
+ * @returns {vec4}
1144
+ */
1145
+ function quatFromVec3s(v1, v2) {
1146
+ const cross = [
1147
+ v1[1] * v2[2] - v1[2] * v2[1],
1148
+ v1[2] * v2[0] - v1[0] * v2[2],
1149
+ v1[0] * v2[1] - v1[1] * v2[0],
1150
+ ];
1151
+ const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
1152
+ if (dot < -0.999999) {
1153
+ let orthogonalAxis = [1, 0, 0];
1154
+ if (Math.abs(v1[0]) > Math.abs(v1[2])) {
1155
+ orthogonalAxis = [0, 0, 1];
1156
+ }
1157
+ const orthogonalCross = [
1158
+ v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
1159
+ v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
1160
+ v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
1161
+ ];
1162
+ return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
1163
+ }
1164
+ 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;
1165
+ return vecNormalize([cross[0], cross[1], cross[2], w]);
1166
+ }
1127
1167
 
1128
1168
  exports.NumberEpsilon = NumberEpsilon;
1129
1169
  exports.clamp = clamp;
@@ -1158,6 +1198,8 @@ exports.mat4transpose = mat4transpose;
1158
1198
  exports.quatCreate = quatCreate;
1159
1199
  exports.quatEquals = quatEquals;
1160
1200
  exports.quatFromRotation = quatFromRotation;
1201
+ exports.quatFromRotationXYZ = quatFromRotationXYZ;
1202
+ exports.quatFromVec3s = quatFromVec3s;
1161
1203
  exports.quatMultiply = quatMultiply;
1162
1204
  exports.quatStar = quatStar;
1163
1205
  exports.rotateVec2 = rotateVec2;
package/dist/index.mjs CHANGED
@@ -1112,6 +1112,19 @@ function quatFromRotation(out, x, y, z) {
1112
1112
  out[3] = c1 * c2 * c3 + s1 * s2 * s3;
1113
1113
  return out;
1114
1114
  }
1115
+ function quatFromRotationXYZ(out, x, y, z) {
1116
+ const c1 = Math.cos((x * d2r) / 2);
1117
+ const c2 = Math.cos((y * d2r) / 2);
1118
+ const c3 = Math.cos((z * d2r) / 2);
1119
+ const s1 = Math.sin((x * d2r) / 2);
1120
+ const s2 = Math.sin((y * d2r) / 2);
1121
+ const s3 = Math.sin((z * d2r) / 2);
1122
+ out[0] = s1 * c2 * c3 + c1 * s2 * s3;
1123
+ out[1] = c1 * s2 * c3 - s1 * c2 * s3;
1124
+ out[2] = c1 * c2 * s3 + s1 * s2 * c3;
1125
+ out[3] = c1 * c2 * c3 - s1 * s2 * s3;
1126
+ return out;
1127
+ }
1115
1128
  function quatStar(out, quat) {
1116
1129
  const x = quat[0], y = quat[1], z = quat[2], w = quat[3];
1117
1130
  out[0] = -x;
@@ -1120,5 +1133,32 @@ function quatStar(out, quat) {
1120
1133
  out[3] = w;
1121
1134
  return out;
1122
1135
  }
1136
+ /**
1137
+ * @param {vec3} vstart
1138
+ * @param {vec3} vend
1139
+ * @returns {vec4}
1140
+ */
1141
+ function quatFromVec3s(v1, v2) {
1142
+ const cross = [
1143
+ v1[1] * v2[2] - v1[2] * v2[1],
1144
+ v1[2] * v2[0] - v1[0] * v2[2],
1145
+ v1[0] * v2[1] - v1[1] * v2[0],
1146
+ ];
1147
+ const dot = v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
1148
+ if (dot < -0.999999) {
1149
+ let orthogonalAxis = [1, 0, 0];
1150
+ if (Math.abs(v1[0]) > Math.abs(v1[2])) {
1151
+ orthogonalAxis = [0, 0, 1];
1152
+ }
1153
+ const orthogonalCross = [
1154
+ v1[1] * orthogonalAxis[2] - v1[2] * orthogonalAxis[1],
1155
+ v1[2] * orthogonalAxis[0] - v1[0] * orthogonalAxis[2],
1156
+ v1[0] * orthogonalAxis[1] - v1[1] * orthogonalAxis[0],
1157
+ ];
1158
+ return vecNormalize([orthogonalCross[0], orthogonalCross[1], orthogonalCross[2], 0]);
1159
+ }
1160
+ 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;
1161
+ return vecNormalize([cross[0], cross[1], cross[2], w]);
1162
+ }
1123
1163
 
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 };
1164
+ 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, 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.48",
3
+ "version": "0.3.0-beta.49",
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.48",
31
+ "@predy-js/render-interface": "0.3.0-beta.49",
32
32
  "@commitlint/cli": "^13.2.1",
33
33
  "@commitlint/config-conventional": "^13.2.0",
34
34
  "@rollup/plugin-commonjs": "^21.0.3",