Я пытаюсь центрировать строку текста известной ширины вдоль линии, указанной в качестве начальной и конечной координат.
Цель состоит в том, чтобы написать текст вокруг многоугольника, чтобы линии не всегда были горизонтальными.
В настоящее время у меня есть следующая функция, которая берет начало x и y и конец x и y строки и ширину текста (в пикселях).
Текст будет нарисованначиная с x1, y1 под правильным углом, чтобы следовать за линией.
Чтобы центрировать этот текст на строке, я попытался вычислить отступ слева в пикселях, которые следует применить к x1, y1, чтобы переместить текст правильносумма от его левого начала.
Следующая функция - моя попытка изменить координаты для реализации вышеуказанной концепции.Но это не совсем верно.Я получаю текст немного в автономном режиме, иногда x отсутствует, иногда y, зависит от лица, но ни x, ни y не верны.
private function CenterTextOnLine(&$x1, &$y1, &$x2, &$y2, $width)
{
$distance = $this->getDistance($x1, $y1, $x2, $y2);
//calculate the left padding required in pixels
$padding = ($distance - $width) / 2;
//what factor do we need to alter x1, y1 by?
$factor = ($distance / $padding);
$gradient = ($y2-$y1)/($x2-$x1); //gradient to alter y by
$x1 += abs($x2-$x1) / $factor; //move start x by factor
$y1 += ($gradient / $factor); //add factor of gradient to start y
return;
}
Если кто-то может увидеть мою ошибку или знает алгоритм для этогоцель, я был бы очень признателен за ваш вклад.
Спасибо за ваше время.