Вы не предоставили много информации, но я предполагаю, что points[0..3]
в следующем порядке: верхний левый, нижний левый, нижний правый, верхний правый.Вот как это выглядит для меня.
Я думаю, что ваша ошибка заключалась в том, что вы, возможно, забыли, что Y увеличивается вниз.Некоторые знаки в вашей формуле пути были неправильными.
-
+ bar_radius
во второй строке должно быть - bar_radius
. + bar_radius
в пятой строке должно быть- bar_radius
.
const indexX = 0, indexY = 1;
const bar_radius = 10;
const points = [[30, 10],
[30, 190],
[70, 190],
[70, 10]];
const bar = document.getElementById("bar");
path = 'M ' + points[0][indexX] + ',' + (points[0][indexY] - 7) + ' ' +
'L' + points[1][indexX] + ',' + (points[1][indexY] - bar_radius) + ' ' +
'Q' + points[1][indexX] + ',' + points[1][indexY] + ' ' + (points[1][indexX] + bar_radius) + ',' + points[1][indexY] + ' ' +
'L' + (points[2][indexX] - bar_radius) + ',' + points[2][indexY] + ' ' +
'Q' + points[2][indexX] + ',' + points[2][indexY] + ' ' + points[2][indexX] + ',' + (points[2][indexY] - bar_radius) + ' ' +
'L' + points[3][indexX] + ',' + (points[3][indexY] - 7) + ' ' +
'z';
bar.setAttribute("d", path);
<svg width="100" height="200">
<path id="bar" d="" fill="rebeccapurple"/>
</svg>