可以同时旋转 2 个 SVG 多边形吗?
it is possible to rotate 2 SVG polygons at the same time?
我正在尝试在 svg 中同时旋转 2 个多边形 180°,我现在正在使用 svg.js 库来执行此操作。
我试过只是旋转它,但当然它们在自己的中心旋转,所以它们不会平移到另一个位置,所以现在我正在尝试创建一个公式来做到这一点,但我决定在这里问一下我是否遗漏了一些东西,是否可以合并2个多边形然后按它们自己的中心旋转它?
我添加了2张图片,第一张是svg的样子,第二张是我想要实现的。
polygon in original position
How the polygon should look like
如果您想尝试,我还在 svg.js 中添加了创建两个多边形的代码。
const draw = svg.SVG().addTo('body').size(300, 300);
let arrayPlanoAux = new svg.PointArray([[0, 0], [-1.7100368367682677, 23.146833626087755], [-17.803859973151702, 22.60143719892949], [-16.282387804763857, -0.5637496160343289], [0, 0]]);
let arrayBaseBuilding = new svg.PointArray([[-15.29139890637604, 12.091529326340595], [-10.53174232201431, 1.8880920578779659], [-3.615804392530878, 5.114223211431884], [-8.375460976892608, 15.317660479894514], [-8.375460976892608, 15.317660479894514]]);
const boundingBoxBuilding = [-15.29139890637604, 1.8880920578779659, -3.615804392530878, 15.317660479894514];
const basePolygon = draw.polygon(arrayPlanoAux);
const planoAuxBoundingBox = basePolygon.bbox();
basePolygon.fill(yellow).move(23, 15);
const secondAuxPlaneBbox = basePolygon.bbox();
let baseBuildingPolygon = draw.polygon(arrayBaseBuilding).fill(orange).opacity(0.7)
let basePolygonBoundingBox = baseBuildingPolygon.bbox();
baseBuildingPolygon.move(math.abs(planoAuxBoundingBox.x-boundingBoxBuilding[0])+secondAuxPlaneBbox.x, math.abs(planoAuxBoundingBox.y-boundingBoxBuilding[1])+secondAuxPlaneBbox.y);
basePolygonBoundingBox = baseBuildingPolygon.bbox();
draw.svg();
要么将两个多边形包裹在一个组中并旋转该组,要么围绕它们的公共中心旋转两个多边形(使用 rotate(deg, cx, cy))。
你需要先计算一下
我正在尝试在 svg 中同时旋转 2 个多边形 180°,我现在正在使用 svg.js 库来执行此操作。
我试过只是旋转它,但当然它们在自己的中心旋转,所以它们不会平移到另一个位置,所以现在我正在尝试创建一个公式来做到这一点,但我决定在这里问一下我是否遗漏了一些东西,是否可以合并2个多边形然后按它们自己的中心旋转它?
我添加了2张图片,第一张是svg的样子,第二张是我想要实现的。
polygon in original position
How the polygon should look like
如果您想尝试,我还在 svg.js 中添加了创建两个多边形的代码。
const draw = svg.SVG().addTo('body').size(300, 300);
let arrayPlanoAux = new svg.PointArray([[0, 0], [-1.7100368367682677, 23.146833626087755], [-17.803859973151702, 22.60143719892949], [-16.282387804763857, -0.5637496160343289], [0, 0]]);
let arrayBaseBuilding = new svg.PointArray([[-15.29139890637604, 12.091529326340595], [-10.53174232201431, 1.8880920578779659], [-3.615804392530878, 5.114223211431884], [-8.375460976892608, 15.317660479894514], [-8.375460976892608, 15.317660479894514]]);
const boundingBoxBuilding = [-15.29139890637604, 1.8880920578779659, -3.615804392530878, 15.317660479894514];
const basePolygon = draw.polygon(arrayPlanoAux);
const planoAuxBoundingBox = basePolygon.bbox();
basePolygon.fill(yellow).move(23, 15);
const secondAuxPlaneBbox = basePolygon.bbox();
let baseBuildingPolygon = draw.polygon(arrayBaseBuilding).fill(orange).opacity(0.7)
let basePolygonBoundingBox = baseBuildingPolygon.bbox();
baseBuildingPolygon.move(math.abs(planoAuxBoundingBox.x-boundingBoxBuilding[0])+secondAuxPlaneBbox.x, math.abs(planoAuxBoundingBox.y-boundingBoxBuilding[1])+secondAuxPlaneBbox.y);
basePolygonBoundingBox = baseBuildingPolygon.bbox();
draw.svg();
要么将两个多边形包裹在一个组中并旋转该组,要么围绕它们的公共中心旋转两个多边形(使用 rotate(deg, cx, cy))。 你需要先计算一下