@thewtex/vtk.js-esm
Version:
Visualization Toolkit for the Web
47 lines (37 loc) • 2.12 kB
JavaScript
import macro from '../../macro.js';
import vtkPlane from '../../Common/DataModel/Plane.js';
function intersectDisplayWithPlane(x, y, planeOrigin, planeNormal, renderer, glRenderWindow) {
var near = glRenderWindow.displayToWorld(x, y, 0, renderer);
var far = glRenderWindow.displayToWorld(x, y, 1, renderer);
return vtkPlane.intersectWithLine(near, far, planeOrigin, planeNormal).x;
} // ----------------------------------------------------------------------------
// vtkPlaneManipulator methods
// ----------------------------------------------------------------------------
function vtkPlaneManipulator(publicAPI, model) {
// Set our className
model.classHierarchy.push('vtkPlaneManipulator'); // --------------------------------------------------------------------------
publicAPI.handleEvent = function (callData, glRenderWindow) {
return intersectDisplayWithPlane(callData.position.x, callData.position.y, model.origin, model.normal, callData.pokedRenderer, glRenderWindow);
};
} // ----------------------------------------------------------------------------
// Object factory
// ----------------------------------------------------------------------------
var DEFAULT_VALUES = {
normal: [0, 0, 1],
origin: [0, 0, 0]
}; // ----------------------------------------------------------------------------
function extend(publicAPI, model) {
var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
Object.assign(model, DEFAULT_VALUES, initialValues);
macro.obj(publicAPI, model);
macro.setGetArray(publicAPI, model, ['normal', 'origin'], 3);
vtkPlaneManipulator(publicAPI, model);
} // ----------------------------------------------------------------------------
var newInstance = macro.newInstance(extend, 'vtkPlaneManipulator'); // ----------------------------------------------------------------------------
var vtkPlanePointManipulator = {
intersectDisplayWithPlane: intersectDisplayWithPlane,
extend: extend,
newInstance: newInstance
};
export default vtkPlanePointManipulator;
export { extend, intersectDisplayWithPlane, newInstance };