Страницы

Поиск по вопросам

среда, 27 ноября 2019 г.

Алгоритм определения радиуса окружности, в которую можно вписать текст

#алгоритм


Недавно тут задавали этот вопрос, ответа на который ни автор, ни я не нашел. Суть
вопроса состоит в том, чтобы выводить текст, вписанным в окружность. И я решил заморочиться,
и реализовать это.
Я не могу придумать алгоритм для того, чтобы вписать текст в окружность, зная высоту
линии.
Ничего не приходит в голову, кроме как перебором пытаться найти оптимальный вариант.
Вот, собственно, чего я хочу добиться:

    


Ответы

Ответ 1



По моему тут всё просто. Зная высоту строки и её порядковый номер, мы можем рассчитать необходимую ширину (хорду круга): ширина = корень из (высота*номер)*(2*радиус -высота*номер). (Я могу ошибиться, но я думаю вы способны вычислить длину хорды самостоятельно) Дальше задача сводится к тому, чтоб вписать текст вы эту ширину. Если же вы не знаете радиус заранее, вы можете рассчитать его исходя из того, что вам нужно вписать площадь текста в площадь круга: радиус = корень из (общая ширина * высота строки / пи) Добавьте допуски, учитывающие что часть слов придется переносить на следующую строку, чтобы все вписалось. Выравнивание текста нужно по обеим сторонам.

Комментариев нет:

Отправить комментарий