pan method
Implementation
void pan(double deltaX, double deltaY) {
final element = scope.domElement;
if (scope.object is PerspectiveCamera) {
// perspective
final position = scope.object.position;
offset.setFrom(position).sub(scope.target);
double targetDistance = offset.length;
// half of the fov is center to top of screen
targetDistance *= math.tan((scope.object.fov / 2) * math.pi / 180.0);
// we use only clientHeight here so aspect ratio does not distort speed
panLeft(2 * deltaX * targetDistance / element.clientHeight,
scope.object.matrix);
panUp(2 * deltaY * targetDistance / element.clientHeight,
scope.object.matrix);
} else if (scope.object is OrthographicCamera) {
// orthographic
panLeft(
deltaX *
(scope.object.right - scope.object.left) /
scope.object.zoom /
element.clientWidth,
scope.object.matrix);
panUp(
deltaY *
(scope.object.top - scope.object.bottom) /
scope.object.zoom /
element.clientHeight,
scope.object.matrix);
} else {
// camera neither orthographic nor perspective
console.warning('OrbitControls.js encountered an unknown camera type - pan disabled.');
scope.enablePan = false;
}
}