Esempio n. 1
0
	function touchstart( event ) {

		if ( _this.enabled === false ) return;

		switch ( event.touches.length ) {

			case 1:
				_state = STATE.TOUCH_ROTATE;
				_rotateStart.copy( getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );
				_rotateEnd.copy( _rotateStart );
				break;

			case 2:
				_state = STATE.TOUCH_ZOOM_PAN;
				var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;
				var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;
				_touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt( dx * dx + dy * dy );

				var x = ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ) / 2;
				var y = ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ) / 2;
				_panStart.copy( getMouseOnScreen( x, y ) );
				_panEnd.copy( _panStart );
				break;

			default:
				_state = STATE.NONE;

		}
		_this.dispatchEvent( startEvent );


	}
Esempio n. 2
0
 render() {
   this.a.set(
     (this.anchor.x - this.v.x) / 10,
     (this.anchor.y - this.v.y) / 10
   );
   this.v.add(this.a);
 }
Esempio n. 3
0
	function handleTouchMoveDolly( event ) {

		//console.log( 'handleTouchMoveDolly' );

		var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;
		var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;

		var distance = Math.sqrt( dx * dx + dy * dy );

		dollyEnd.set( 0, distance );

		dollyDelta.subVectors( dollyEnd, dollyStart );

		if ( dollyDelta.y > 0 ) {

			dollyOut( getZoomScale() );

		} else if ( dollyDelta.y < 0 ) {

			dollyIn( getZoomScale() );

		}

		dollyStart.copy( dollyEnd );

		scope.update();

	}
Esempio n. 4
0
  this.panCamera = function() {

    var mouseChange = _panEnd.clone().sub(_panStart);

    if (mouseChange.lengthSq()) {

      mouseChange.multiplyScalar(_eye.length() * _this.panSpeed);

      var pan = _eye.clone().cross(_this.object.up).setLength(mouseChange.x);
      pan.add(_this.object.up.clone().setLength(mouseChange.y));

      _this.object.position.add(pan);
      _this.target.add(pan);

      if (_this.staticMoving) {

        _panStart = _panEnd;

      } else {

        _panStart.add(mouseChange.subVectors(_panEnd, _panStart).multiplyScalar(_this.dynamicDampingFactor));

      }

    }

  };
	function touchend( event ) {

		if ( _this.enabled === false ) return;

		switch ( event.touches.length ) {

		case 1:
			_rotateEnd.copy( getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );
			_rotateStart.copy( _rotateEnd );
			break;

		case 2:
			_touchZoomDistanceStart = _touchZoomDistanceEnd = 0;

			var x = ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ) / 2;
			var y = ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ) / 2;
			_panEnd.copy( getMouseOnScreen( x, y ) );
			_panStart.copy( _panEnd );
			break;

		}

		_state = STATE.NONE;
		_this.dispatchEvent( endEvent );

	}
Esempio n. 6
0
	function onMouseDown( event ) {

		if ( scope.enabled === false ) return;
		event.preventDefault();

		if ( event.button === scope.mouseButtons.ORBIT ) {
			if ( scope.noRotate === true ) return;

			state = STATE.ROTATE;

			rotateStart.set( event.clientX, event.clientY );

		} else if ( event.button === scope.mouseButtons.ZOOM ) {
			if ( scope.noZoom === true ) return;

			state = STATE.DOLLY;

			dollyStart.set( event.clientX, event.clientY );

		} else if ( event.button === scope.mouseButtons.PAN ) {
			if ( scope.noPan === true ) return;

			state = STATE.PAN;

			panStart.set( event.clientX, event.clientY );

		}

		if ( state !== STATE.NONE ) {
			document.addEventListener( 'mousemove', onMouseMove, false );
			document.addEventListener( 'mouseup', onMouseUp, false );
			scope.dispatchEvent( startEvent );
		}

	}
Esempio n. 7
0
function mousedown(event) {
  event.preventDefault();
  event.stopPropagation();

  currMouse.copy(getMouseOnCircle(event.pageX, event.pageY));
  prevMouse.copy(currMouse);

  document.addEventListener('mousemove', mousemove, false);
  document.addEventListener('mouseup', mouseup, false);
}
Esempio n. 8
0
  touchStart(e) {
    // If be using PC, event.preventDefault runs at first.
    if (!e.touches) e.preventDefault();

    this.vPrev.copy(this.v);
    this.a.set(0, 0);
    this.vTouchStart.set(
      (e.touches) ? e.touches[0].clientX : e.clientX,
      (e.touches) ? e.touches[0].clientY : e.clientY
    );
    this.isTouched = true;
  }
Esempio n. 9
0
		function onMouseMove( event ) {

			if ( scope.enabled === false ) return;

			event.preventDefault();

			var element = scope.domElement === document ? scope.domElement.body : scope.domElement;

			if ( state === STATE.ROTATE ) {

				if ( scope.enableRotate === false ) return;

				rotateEnd.set( event.clientX, event.clientY );
				rotateDelta.subVectors( rotateEnd, rotateStart );

				// rotating across whole screen goes 360 degrees around
				constraint.rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );

				// rotating up and down along whole screen attempts to go 360, but limited to 180
				constraint.rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );

				rotateStart.copy( rotateEnd );

			} else if ( state === STATE.DOLLY ) {

				if ( scope.enableZoom === false ) return;

				dollyEnd.set( event.clientX, event.clientY );
				dollyDelta.subVectors( dollyEnd, dollyStart );

				if ( dollyDelta.y > 0 ) {

					constraint.dollyIn( getZoomScale() );

				} else if ( dollyDelta.y < 0 ) {

					constraint.dollyOut( getZoomScale() );

				}

				dollyStart.copy( dollyEnd );

			} else if ( state === STATE.PAN ) {

				if ( scope.enablePan === false ) return;

				panEnd.set( event.clientX, event.clientY );
				panDelta.subVectors( panEnd, panStart );

				pan( panDelta.x, panDelta.y );

				panStart.copy( panEnd );

			}

			if ( state !== STATE.NONE ) scope.update();

		}
Esempio n. 10
0
    _getRelativeMouseCoords(screenMouseCoords) {
        const containerRect = this._containerRect;

        const relativeMouseCoords = screenMouseCoords.clone()
        .sub(tempVector2.set(containerRect.left, containerRect.top))
        .divide(tempVector2.set(containerRect.width, containerRect.height));

        relativeMouseCoords.x = relativeMouseCoords.x * 2 - 1;
        relativeMouseCoords.y = -relativeMouseCoords.y * 2 + 1;

        return relativeMouseCoords;
    }
Esempio n. 11
0
    this.checkDistances = () => {
      if (!_this.noZoom || !_this.noPan) {
        if (_eye.lengthSq() > _this.maxDistance * _this.maxDistance) {
          _this.object.position.addVectors(_this.target, _eye.setLength(_this.maxDistance));
          _zoomStart.copy(_zoomEnd);
        }

        if (_eye.lengthSq() < _this.minDistance * _this.minDistance) {
          _this.object.position.addVectors(_this.target, _eye.setLength(_this.minDistance));
          _zoomStart.copy(_zoomEnd);
        }
      }
    };
  function handleMouseMovePan(event) {
    //console.log( 'handleMouseMovePan' );

    panEnd.set(event.clientX, event.clientY);

    panDelta.subVectors(panEnd, panStart);

    pan(panDelta.x, panDelta.y);

    panStart.copy(panEnd);

    scope.update();
  }
  function handleTouchMovePan(event) {
    //console.log( 'handleTouchMovePan' );

    panEnd.set(event.touches[0].pageX, event.touches[0].pageY);

    panDelta.subVectors(panEnd, panStart);

    pan(panDelta.x, panDelta.y);

    panStart.copy(panEnd);

    scope.update();
  }
Esempio n. 14
0
  function handleMouseMovePan(event) {
    //console.log( 'handleMouseMovePan' );

    panEnd.set(event.clientX, event.clientY)

    panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed)

    pan(panDelta.x, panDelta.y)

    panStart.copy(panEnd)

    scope.update()
  }
Esempio n. 15
0
  _getRelativeMouseCoords (screenMouseCoords) {
    const containerRect = this._containerRect

    const relativeMouseCoords = screenMouseCoords.clone()
      .sub(tempVector2.set(containerRect.left, containerRect.top))
      .divide(tempVector2.set(containerRect.width, containerRect.height))

    // mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
    // mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;

    relativeMouseCoords.x = relativeMouseCoords.x * 2 - 1
    relativeMouseCoords.y = -relativeMouseCoords.y * 2 + 1

    return relativeMouseCoords
  }
Esempio n. 16
0
    function mousemove(event) {
      if (_this.enabled === false) return;

      event.preventDefault();
      event.stopPropagation();

      if (_state === STATE.ROTATE && !_this.noRotate) {
        _movePrev.copy(_moveCurr);
        _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));
      } else if (_state === STATE.ZOOM && !_this.noZoom) {
        _zoomEnd.copy(getMouseOnScreen(event.pageX, event.pageY));
      } else if (_state === STATE.PAN && !_this.noPan) {
        _panEnd.copy(getMouseOnScreen(event.pageX, event.pageY));
      }
    }
Esempio n. 17
0
	PointCollector.prototype.push = function(x, y, p, isNew) {
		var newPos = new THREE.Vector2(x, y);
		for (var i = 0; i < this.points.length ; i ++) {
			if (newPos.distanceTo(this.points[i].screenPos) < 16.0) {
				// the user clicked on one of the points
				var thisPoint = this.points[i];

				this.orthoScene.remove(this.points[i].sprite);
				this.points.splice(i, 1);

				$.event.trigger({
					type: 'plasio.mensuration.pointRemoved',
					point: thisPoint
				});

				needRefresh = true;
				return;
			}
		}

		if (p.x === 0.0 && p.y === 0.0 && p.z === 0.0)
			return; // didn't click on a point

		if (this.points.length === 0) // first point starts with id == 1.
			p.id = 1;
		else if (isNew) { // if a new id increment, or use the parents
			p.id = this.points[this.points.length - 1].id + 1;
		}
		else {
			p.id = this.points[this.points.length - 1].id;
		}


		// the user intends to add a new point
		p.sprite = null;
		p.screenPos = newPos;
		p.color = new THREE.Color();
		p.color.setHSL(Math.random(), 0.8, 0.8);

		this.points.push(p);

		$.event.trigger({
			type: 'plasio.mensuration.pointAdded',
			point: p
		});

		needRefresh = true;
	};
Esempio n. 18
0
	function handleTouchStartRotate( event ) {

		//console.log( 'handleTouchStartRotate' );

		rotateStart.set( event.pointers[ 0 ].pageX, event.pointers[ 0 ].pageY );

	}
Esempio n. 19
0
	function handleMouseDownPan( event ) {

		//console.log( 'handleMouseDownPan' );

		panStart.set( event.clientX, event.clientY );

	}
Esempio n. 20
0
	function handleMouseDownDolly( event ) {

		//console.log( 'handleMouseDownDolly' );

		dollyStart.set( event.clientX, event.clientY );

	}
Esempio n. 21
0
	function handleMouseDownRotate( event ) {

		//console.log( 'handleMouseDownRotate' );

		rotateStart.set( event.clientX, event.clientY );

	}
Esempio n. 22
0
	function touchmove( event ) {

		if ( _this.enabled === false ) return;

		event.preventDefault();
		event.stopPropagation();

		switch ( event.touches.length ) {

			case 1:
				_rotateEnd.copy( getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );
				break;

			case 2:
				var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;
				var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;
				_touchZoomDistanceEnd = Math.sqrt( dx * dx + dy * dy );

				var x = ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ) / 2;
				var y = ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ) / 2;
				_panEnd.copy( getMouseOnScreen( x, y ) );
				break;

			default:
				_state = STATE.NONE;

		}

	}
Esempio n. 23
0
        this._onMouseMove = (event) => {
            this._mouse.set(event.clientX, event.clientY);

            if (!this._active) {
                this._updateEnterLeave();
            }
        };
Esempio n. 24
0
	this.panCamera = ( function() {

		var mouseChange = new THREE.Vector2(),
			objectUp = new THREE.Vector3(),
			pan = new THREE.Vector3();

		return function panCamera() {

			mouseChange.copy( _panEnd ).sub( _panStart );

			if ( mouseChange.lengthSq() ) {

				mouseChange.multiplyScalar( _eye.length() * _this.panSpeed );

				pan.copy( _eye ).cross( _this.object.up ).setLength( mouseChange.x );
				pan.add( objectUp.copy( _this.object.up ).setLength( mouseChange.y ) );

				_this.object.position.add( pan );
				_this.target.add( pan );

				if ( _this.staticMoving ) {

					_panStart.copy( _panEnd );

				} else {

					_panStart.add( mouseChange.subVectors( _panEnd, _panStart ).multiplyScalar( _this.dynamicDampingFactor ) );

				}

			}

		};

	}() );
Esempio n. 25
0
	this.zoomCamera = function () {

		var factor;

		if ( _state === STATE.TOUCH_ZOOM_PAN ) {

			factor = _touchZoomDistanceStart / _touchZoomDistanceEnd;
			_touchZoomDistanceStart = _touchZoomDistanceEnd;
			_eye.multiplyScalar( factor );

		} else {

			factor = 1.0 + ( _zoomEnd.y - _zoomStart.y ) * _this.zoomSpeed;

			if ( factor !== 1.0 && factor > 0.0 ) {

				_eye.multiplyScalar( factor );

				if ( _this.staticMoving ) {

					_zoomStart.copy( _zoomEnd );

				} else {

					_zoomStart.y += ( _zoomEnd.y - _zoomStart.y ) * this.dynamicDampingFactor;

				}

			}

		}

	};
Esempio n. 26
0
	function handleTouchStartPan( event ) {

		//console.log( 'handleTouchStartPan' );

		panStart.set( event.deltaX, event.deltaY );

	}
Esempio n. 27
0
function onPointerMove(event) {
    if (elasticObjectState === ELASTIC_OBJECT_STATES.rest) return;
    event.preventDefault();
	var pointerPos = GetPointerPosition(event);
	var pointerDelta = new THREE.Vector2().copy( lastPointerPos ).sub( pointerPos );
    pointerDelta.y *= -1;
	lastPointerPos.copy( pointerPos );
	if(elasticObjectState === ELASTIC_OBJECT_STATES.stretching) {
        var distToPointer = new THREE.Vector2()
            .copy( pointerPos )
            .sub( pointerStartPosition )
            .length();
        if (distToPointer < maxStretchDistance) {
            var stretchDistance = 1.0 - distToPointer / maxStretchDistance;
    		geometryStretcher.stretch(elasticObject, raycastHitInfo.point, pointerDelta, stretchDistance);
        } else {
            elasticObjectState = ELASTIC_OBJECT_STATES.rest;
        }
	} else if(elasticObjectState === ELASTIC_OBJECT_STATES.rotating) {
		elasticObject.rotation.y -= pointerDelta.x * rotateSpeed;
		if (elasticObject.rotation.y < startRotation - Math.PI) {
			elasticObject.rotation.y += Math.PI * 2;
		} else if(elasticObject.rotation.y > startRotation + Math.PI) {
			elasticObject.rotation.y -= Math.PI * 2;
		}
	}
}
Esempio n. 28
0
	function handleTouchStartPan( event ) {

		//console.log( 'handleTouchStartPan' );

		panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );

	}
Esempio n. 29
0
  function onDocumentMouseUp( event ) {
    event.preventDefault()
    isMouseDown = false
    onMouseDownPosition.x = event.clientX - onMouseDownPosition.x
    onMouseDownPosition.y = event.clientY - onMouseDownPosition.y

    if ( onMouseDownPosition.length() > 5 ) return

    var intersect = getIntersecting()

    if ( intersect ) {
      if ( isShiftDown ) {
        if ( intersect.object != plane ) {
          scene.remove( intersect.object.wireMesh )
          scene.remove( intersect.object )
        }
      } else {
        if (brush.position.y != 2000) addVoxel(brush.position.x, brush.position.y, brush.position.z, color)
      }
    }

    updateHash()
    render()
    interact()
  }
Esempio n. 30
0
    function onMouseDown( event ) {

        if ( scope.enabled === false ) return;

        if ( event.button === 0 ) {

            state = STATE.ROTATE;

        } else if ( event.button === 1 ) {

            state = STATE.ZOOM;

        } else if ( event.button === 2 ) {

            state = STATE.PAN;

        }

        pointerOld.set( event.clientX, event.clientY );

        domElement.addEventListener( 'mousemove', onMouseMove, false );
        domElement.addEventListener( 'mouseup', onMouseUp, false );
        domElement.addEventListener( 'mouseout', onMouseUp, false );
        domElement.addEventListener( 'dblclick', onMouseUp, false );

    }