pan method

Map<String, Matrix4> pan(
  1. Vector3 p0,
  2. Vector3 p1, [
  3. bool adjust = false
])
  • Perform pan operation moving camera between two points
  • @param {Vector3} p0 Initial point
  • @param {Vector3} p1 Ending point
  • @param {Boolean} adjust If movement should be adjusted considering camera distance (Perspective only)

Implementation

/// * Perform pan operation moving camera between two points
	/// * @param {Vector3} p0 Initial point
	/// * @param {Vector3} p1 Ending point
	/// * @param {Boolean} adjust If movement should be adjusted considering camera distance (Perspective only)
	/// *
Map<String, Matrix4> pan(Vector3 p0, Vector3 p1, [bool adjust = false]) {
  final movement = p0.clone().sub(p1);

  if (camera is OrthographicCamera) {
    //adjust movement amount
    movement.scale(1 / camera.zoom);
  }
  else if (camera is PerspectiveCamera && adjust) {
    //adjust movement amount
    _v3_1.setFromMatrixPosition(
        _cameraMatrixState0); //camera's initial position
    _v3_2.setFromMatrixPosition(
        _gizmoMatrixState0); //gizmo's initial position
    final distanceFactor = _v3_1.distanceTo(_v3_2) /
        camera.position.distanceTo(_gizmos.position);
    movement.scale(1 / distanceFactor);
  }

  _v3_1
      .setValues(movement.x, movement.y, 0)
      .applyQuaternion(camera.quaternion);

  _m4_1.makeTranslation(_v3_1.x, _v3_1.y, _v3_1.z);

  setTransformationMatrices(_m4_1, _m4_1);
  return _transformation;
}