mightyscape-1.2/extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/lib/applyTransforms.js

45 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;