Добрый день!
Я отрисовываю текст на окружности на html canvas вот таким образом:
canv.ctx.translate(centerX, centerY);
let startAngle = 0;
for (var j = 0; j < text.length; j++) {
var charWid = text[j].width;
var textHeight = text[j].height;
startAngle += (charWid / (this.data.diameter / 2 - textHeight)) / 2 * -clockwise;
}
canv.ctx.rotate(startAngle);
let currentAngle = startAngle;
let drawnPoints = [];
for (var j = 0; j < text.length; j++) {
var charWid = text[j].width;
var textHeight = text[j].height;
let angle = (charWid/2) / (this.data.diameter / 2 - textHeight) * clockwise;
let x = Math.cos(currentAngle + angle) * (this.data.diameter / 2 - textHeight / 2);
let y = -Math.sin(currentAngle + angle) * (this.data.diameter / 2 - textHeight / 2);
drawnPoints.push({ x, y, symbol: text[j].symbol });
canv.ctx.rotate(angle);
canv.ctx.fillText(text[j].symbol, 0, (0 - this.data.diameter / 2 + textHeight / 2));
canv.ctx.rotate(angle);
currentAngle += angle * 2;
}
canv.ctx.restore();
for (let i = 0; i < drawnPoints.length; i++) {
canv.ctx.fillStyle = "yellow";
canv.ctx.beginPath();
canv.ctx.arc(drawnPoints[i].x, drawnPoints[i].y, 5, 0, 2 * Math.PI);
canv.ctx.fill();
}
У меня два вопроса:
1) почему именно так считается start angle? (да и в цикле почти также считается аддитивная составляющая к углу)
2) Почему у меня не правильно считаются drawnPoint?
Буду благодарен за помощь.