UNPKG

@technobuddha/library

Version:
30 lines 2.49 kB
/** * 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==