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