transformation-matrix
Version:
2d transformation matrix functions written in ES6 syntax. Tree shaking ready!
28 lines (26 loc) • 822 B
JavaScript
/**
* Calculate a point transformed with an affine matrix
* @param matrix {Matrix} Affine Matrix
* @param point {Point} Point
* @returns {Point} Point
*/
export function applyToPoint (matrix, point) {
return Array.isArray(point)
? [
matrix.a * point[0] + matrix.c * point[1] + matrix.e,
matrix.b * point[0] + matrix.d * point[1] + matrix.f
]
: {
x: matrix.a * point.x + matrix.c * point.y + matrix.e,
y: matrix.b * point.x + matrix.d * point.y + matrix.f
}
}
/**
* Calculate an array of points transformed with an affine matrix
* @param matrix {Matrix} Affine Matrix
* @param points {Point[]} Array of point
* @returns {Point[]} Array of point
*/
export function applyToPoints (matrix, points) {
return points.map(point => applyToPoint(matrix, point))
}