722c498abe
* Bump prettier from 1.19.1 to 2.0.1 Bumps [prettier](https://github.com/prettier/prettier) from 1.19.1 to 2.0.1. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/1.19.1...2.0.1) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Update formatting Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Panayiotis Lipiridis <lipiridis@gmail.com>
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { Point } from "./types";
|
|
|
|
export function getSizeFromPoints(points: readonly Point[]) {
|
|
const xs = points.map((point) => point[0]);
|
|
const ys = points.map((point) => point[1]);
|
|
return {
|
|
width: Math.max(...xs) - Math.min(...xs),
|
|
height: Math.max(...ys) - Math.min(...ys),
|
|
};
|
|
}
|
|
export function rescalePoints(
|
|
dimension: 0 | 1,
|
|
nextDimensionSize: number,
|
|
prevPoints: readonly Point[],
|
|
): Point[] {
|
|
const prevDimValues = prevPoints.map((point) => point[dimension]);
|
|
const prevMaxDimension = Math.max(...prevDimValues);
|
|
const prevMinDimension = Math.min(...prevDimValues);
|
|
const prevDimensionSize = prevMaxDimension - prevMinDimension;
|
|
|
|
const dimensionScaleFactor = nextDimensionSize / prevDimensionSize;
|
|
|
|
let nextMinDimension = Infinity;
|
|
|
|
const scaledPoints = prevPoints.map((prevPoint) =>
|
|
prevPoint.map((value, currentDimension) => {
|
|
if (currentDimension !== dimension) {
|
|
return value;
|
|
}
|
|
const scaledValue = value * dimensionScaleFactor;
|
|
nextMinDimension = Math.min(scaledValue, nextMinDimension);
|
|
return scaledValue;
|
|
}),
|
|
);
|
|
|
|
const translation = prevMinDimension - nextMinDimension;
|
|
|
|
const nextPoints = scaledPoints.map(
|
|
(scaledPoint) =>
|
|
scaledPoint.map((value, currentDimension) => {
|
|
return currentDimension === dimension ? value + translation : value;
|
|
}) as [number, number],
|
|
);
|
|
|
|
return nextPoints;
|
|
}
|