CADViewComponent/dist/PointPick.js

38 lines
1.2 KiB
JavaScript
Raw Normal View History

2018-05-28 09:49:45 +08:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const three_1 = require("three");
/**
* 点选
*
* @export
* @param {Viewer} view
* @param {number} ptx
* @param {number} pty
* @returns {(Mesh | undefined)}
*/
function PointPick(view, ptx, pty) {
let raycaster = new three_1.Raycaster();
raycaster.setFromCamera({
x: (ptx / view._Width) * 2 - 1,
y: -(pty / view._Height) * 2 + 1 //y轴相反
}, view.m_Camera.Camera);
//https://github.com/mrdoob/three.js/issues/14128
raycaster.ray.origin.set((ptx / view._Width) * 2 - 1, -(pty / view._Height) * 2 + 1, -1).unproject(view.m_Camera.Camera);
let minDis = Infinity;
let minObj = undefined;
view.m_Scene.children.forEach(obj => {
if (obj instanceof three_1.Mesh) {
let intersects = [];
obj.raycast(raycaster, intersects);
for (let i of intersects) {
if (i.distance < minDis) {
minObj = obj;
minDis = i.distance;
}
}
}
});
return minObj;
}
exports.PointPick = PointPick;
//# sourceMappingURL=PointPick.js.map