wonder.js
Version:
120 lines (104 loc) • 3.37 kB
JavaScript
;
var Caml_obj = require("bs-platform/lib/js/caml_obj.js");
var Caml_int32 = require("bs-platform/lib/js/caml_int32.js");
var Matrix4Service$Wonderjs = require("../service/atom/Matrix4Service.js");
var Vector3Service$Wonderjs = require("../service/atom/Vector3Service.js");
function unproject(vec3, cameraToWorldMatrix, projectionMatrix) {
return Vector3Service$Wonderjs.transformMat4Tuple(vec3, Matrix4Service$Wonderjs.multiply(cameraToWorldMatrix, Matrix4Service$Wonderjs.invert(projectionMatrix, Matrix4Service$Wonderjs.createIdentityMatrix4(/* () */0)), Matrix4Service$Wonderjs.createIdentityMatrix4(/* () */0)));
}
function multiplyScalar(param, scalar) {
return /* tuple */[
param[0] * scalar,
param[1] * scalar,
param[2] * scalar
];
}
function addScalar(param, scalar) {
return /* tuple */[
param[0] + scalar,
param[1] + scalar,
param[2] + scalar
];
}
function fromBufferAttribute(vertices, index) {
var vIndex = Caml_int32.imul(index, 3);
return /* tuple */[
vertices[vIndex],
vertices[vIndex + 1 | 0],
vertices[vIndex + 2 | 0]
];
}
function distanceToSquared(param, param$1) {
var dx = param[0] - param$1[0];
var dy = param[1] - param$1[1];
var dz = param[2] - param$1[2];
return dx * dx + dy * dy + dz * dz;
}
function distanceTo(vec, v) {
return Math.sqrt(distanceToSquared(vec, v));
}
function dot(param, param$1) {
return param[0] * param$1[0] + param[1] * param$1[1] + param[2] * param$1[2];
}
function min(param, param$1) {
var vz = param$1[2];
var vy = param$1[1];
var vx = param$1[0];
var z = param[2];
var y = param[1];
var x = param[0];
var match = Caml_obj.caml_greaterthan(x, vx);
var match$1 = Caml_obj.caml_greaterthan(y, vy);
var match$2 = Caml_obj.caml_greaterthan(z, vz);
return /* tuple */[
match ? vx : x,
match$1 ? vy : y,
match$2 ? vz : z
];
}
function max(param, param$1) {
var vz = param$1[2];
var vy = param$1[1];
var vx = param$1[0];
var z = param[2];
var y = param[1];
var x = param[0];
var match = Caml_obj.caml_lessthan(x, vx);
var match$1 = Caml_obj.caml_lessthan(y, vy);
var match$2 = Caml_obj.caml_lessthan(z, vz);
return /* tuple */[
match ? vx : x,
match$1 ? vy : y,
match$2 ? vz : z
];
}
function lengthSq(param) {
var z = param[2];
var y = param[1];
var x = param[0];
return x * x + y * y + z * z;
}
function length(vec) {
return Math.sqrt(lengthSq(vec));
}
function projectOnVector(sourceVec, targetVec) {
var scalar = dot(targetVec, sourceVec) / lengthSq(targetVec);
return multiplyScalar(targetVec, scalar);
}
function projectOnPlane(planeNormal, vec) {
return Vector3Service$Wonderjs.sub(/* Float */0, vec, projectOnVector(vec, planeNormal));
}
exports.unproject = unproject;
exports.multiplyScalar = multiplyScalar;
exports.addScalar = addScalar;
exports.fromBufferAttribute = fromBufferAttribute;
exports.distanceToSquared = distanceToSquared;
exports.distanceTo = distanceTo;
exports.dot = dot;
exports.min = min;
exports.max = max;
exports.lengthSq = lengthSq;
exports.length = length;
exports.projectOnVector = projectOnVector;
exports.projectOnPlane = projectOnPlane;
/* Matrix4Service-Wonderjs Not a pure module */