@technobuddha/library
Version:
A large library of useful functions
30 lines • 2.49 kB
JavaScript
/**
* Scales a point relative to a given origin by a specified amount.
* @param point - The point to be scaled, represented as a Cartesian coordinate.
* @param amount - The scaling factor. Can be a single number (uniform scaling) or a Cartesian object for non-uniform scaling.
* @param origin - The origin point about which the scaling is performed.
* @returns The scaled point as a new Cartesian coordinate.
* @internal
*/
function scalePoint(point, amount, origin) {
const { x, y } = point;
const { x: scaleX, y: scaleY } = typeof amount === 'number' ? { x: amount, y: amount } : amount;
const { x: originX, y: originY } = origin;
return {
x: originX + (x - originX) * scaleX,
y: originY + (y - originY) * scaleY,
};
}
/**
* Scales a point or a polygon of points around a given origin by a specified amount.
* @group Geometry
* @category Point
* @category Polygon
*/
export function scale(point, amount, { origin = { x: 0, y: 0 } } = {}) {
if (Array.isArray(point)) {
return point.map((p) => scalePoint(p, amount, origin));
}
return scalePoint(point, amount, origin);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2NhbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7R0FPRztBQUNILFNBQVMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsTUFBMEIsRUFBRSxNQUFpQjtJQUNqRixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN2QixNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEcsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUxQyxPQUFPO1FBQ0wsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxNQUFNO1FBQ25DLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsTUFBTTtLQUNwQyxDQUFDO0FBQ0osQ0FBQztBQTJCRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQ25CLEtBQTBCLEVBQzFCLE1BQW1CLEVBQ25CLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQW9CLEVBQUU7SUFFL0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLENBQUMifQ==