54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports["default"] = void 0;
|
||
|
|
||
|
/**
|
||
|
* Apply the transforms to the polyline.
|
||
|
*
|
||
|
* @param polyline the polyline
|
||
|
* @param transform the transforms array
|
||
|
* @returns the transformed polyline
|
||
|
*/
|
||
|
var _default = function _default(polyline, transforms) {
|
||
|
transforms.forEach(function (transform) {
|
||
|
polyline = polyline.map(function (p) {
|
||
|
// Use a copy to avoid side effects
|
||
|
var p2 = [p[0], p[1]];
|
||
|
|
||
|
if (transform.scaleX) {
|
||
|
p2[0] = p2[0] * transform.scaleX;
|
||
|
}
|
||
|
|
||
|
if (transform.scaleY) {
|
||
|
p2[1] = p2[1] * transform.scaleY;
|
||
|
}
|
||
|
|
||
|
if (transform.rotation) {
|
||
|
var angle = transform.rotation / 180 * Math.PI;
|
||
|
p2 = [p2[0] * Math.cos(angle) - p2[1] * Math.sin(angle), p2[1] * Math.cos(angle) + p2[0] * Math.sin(angle)];
|
||
|
}
|
||
|
|
||
|
if (transform.x) {
|
||
|
p2[0] = p2[0] + transform.x;
|
||
|
}
|
||
|
|
||
|
if (transform.y) {
|
||
|
p2[1] = p2[1] + transform.y;
|
||
|
} // Observed once in a sample DXF - some cad applications
|
||
|
// use negative extruxion Z for flipping
|
||
|
|
||
|
|
||
|
if (transform.extrusionZ === -1) {
|
||
|
p2[0] = -p2[0];
|
||
|
}
|
||
|
|
||
|
return p2;
|
||
|
});
|
||
|
});
|
||
|
return polyline;
|
||
|
};
|
||
|
|
||
|
exports["default"] = _default;
|