wonder.js
Version:
32 lines (28 loc) • 1.5 kB
JavaScript
;
var Matrix4Service$Wonderjs = require("../../../atom/Matrix4Service.js");
var PMatrixService$Wonderjs = require("../../../primitive/PMatrixService.js");
var Vector4Service$Wonderjs = require("../../../atom/Vector4Service.js");
var ViewMatrixBasicCameraViewMainService$Wonderjs = require("../basic_camera_view/ViewMatrixBasicCameraViewMainService.js");
function convertWorldToScreen(cameraView, cameraProjection, param, state) {
var normalizedDeviceCoordinate = Vector4Service$Wonderjs.transformMat4Tuple(/* tuple */[
param[0],
param[1],
param[2],
1
], Matrix4Service$Wonderjs.multiply(PMatrixService$Wonderjs.unsafeGetPMatrix(cameraProjection, state[/* perspectiveCameraProjectionRecord */14][/* pMatrixMap */2]), ViewMatrixBasicCameraViewMainService$Wonderjs.getBasicCameraViewWorldToCameraMatrix(cameraView, state), Matrix4Service$Wonderjs.createIdentityMatrix4(/* () */0)));
var w = normalizedDeviceCoordinate[3];
var match = w < 0;
if (match) {
return undefined;
} else {
var ndcSpacePos_000 = normalizedDeviceCoordinate[0] / w;
var ndcSpacePos_001 = normalizedDeviceCoordinate[1] / w;
var ndcSpacePos_002 = normalizedDeviceCoordinate[2] / w;
return /* tuple */[
Math.round((ndcSpacePos_000 + 1) / 2 * param[3]),
Math.round((1 - ndcSpacePos_001) / 2 * param[4])
];
}
}
exports.convertWorldToScreen = convertWorldToScreen;
/* Matrix4Service-Wonderjs Not a pure module */