Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import { CPUFallbackViewport, Point2 } from '../../../../types';
type Shift = {
x: number;
y: number;
};
/**
* Corrects the shift by accounting for viewport rotation and flips.
*
* @param shift - The shift to correct.
* @param viewportOrientation - Object containing information on the viewport orientation.
*/
export default function (
shift: Shift,
viewportOrientation: CPUFallbackViewport
): Shift {
const { hflip, vflip, rotation } = viewportOrientation;
// Apply Flips
shift.x *= hflip ? -1 : 1;
shift.y *= vflip ? -1 : 1;
// Apply rotations
if (rotation !== 0) {
const angle = (rotation * Math.PI) / 180;
const cosA = Math.cos(angle);
const sinA = Math.sin(angle);
const newX = shift.x * cosA - shift.y * sinA;
const newY = shift.x * sinA + shift.y * cosA;
shift.x = newX;
shift.y = newY;
}
return shift;
}
|