1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- let moveSpeed, movePlane, moveLine, moveStartVector, moveEndVector;
- //初始化平移切面参数
- function initMoveClipPlaneArgs() {
- moveSpeed = 5;
- movePlane = new THREE.Plane();
- moveLine = new THREE.Line3();
- moveStartVector = new THREE.Vector3();
- moveEndVector = new THREE.Vector3();
- }
- //平移切面
- function moveClipPlane(currentMouse, lastMouse) {
- let distance = getMoveDistance(currentMouse, lastMouse);
- if (distance == undefined || !canMoveForward(distance)) {
- return;
- }
- let newConstant = ClipPlaneManager.activeMeshInfo.Mesh.Plane.constant + distance;
- movePlane.set(ClipPlaneManager.activeMeshInfo.Mesh.Plane.normal, newConstant);
- refreshClipMesh(movePlane,
- ClipPlaneManager.activeMeshInfo.Mesh.Object,
- ClipPlaneManager.activeMeshInfo.Mesh.ImageName,
- function () {
- if (ClipPlaneManager.activeMeshInfo != undefined) {
- ClipPlaneManager.activeMeshInfo.Mesh.Plane.set(movePlane.normal, newConstant);
- addRotateInfo();
- }
- EventCenter.emit("updateLastMousePos", currentMouse);
- });
- }
- //计算平移距离
- function getMoveDistance(currentMouse, lastMouse) {
- setMouseVector(OSHelper.clientX(currentMouse), OSHelper.clientY(currentMouse), moveEndVector);
- setMouseVector(lastMouse.x, lastMouse.y, moveStartVector);
- moveLine.set(moveStartVector, moveEndVector);
- let distance = moveLine.distance() * moveSpeed;
- if (distance <= 2) {
- return undefined;
- }
- if (moveEndVector.clone().sub(moveStartVector).dot(ClipPlaneManager.activeMeshInfo.Mesh.Plane.normal) > 0) {
- distance = -distance;
- }
- return distance;
- }
- //判断切面是否移动到了最远点
- function canMoveForward(moveDistance) {
- if (ClipPlaneManager.activeMeshInfo.Mesh != undefined) {
- if (moveDistance > 0 ||
- ClipPlaneManager.activeMeshInfo.Mesh.Plane.constant + moveDistance >
- ClipPlaneManager.activeMeshInfo.MaxForwardDistance) {
- return true;
- }
- }
- return false;
- }
- //平面鼠标坐标转三维坐标
- function setMouseVector(mouseX,mouseY, MouseVector) {
- MouseVector.set((mouseX / window.innerWidth) * 2 - 1,
- 1 - (mouseY / window.innerHeight) * 2, 0.5);
- MouseVector.unproject(camera);
- }
|