Ограничение параметрической отрисовки букв с учетом ширины, высоты и обводки - PullRequest
0 голосов
/ 02 июля 2019

Описание проблемы: Я работаю над параметрическим моноширинным шрифтом, который позволяет отрисовывать буквы разных стилей путем настройки набора параметров.

Конкретная задача: При заданной прямоугольной области Ш ширина и Н высота и заданный ход ширина S какой должна быть ширина горизонтальной проекции / пересечения X мазка при рендеринге буквы V? Буква ограничена прямоугольной областью и не может перекрывать или избегать ее каким-либо образом. Письмо симметрично. Меня не беспокоят крайние значения аргументов, из-за которых письмо не может быть заменено.

enter image description here

Мои мысли: Включает ли это какой-то метод решения геометрических ограничений, приводящий к приближенному решению на основе ряда итераций?

Ожидание ответа: Общее направление на класс задачи, в идеале некоторые формулы. Спасибо.

1 Ответ

1 голос
/ 02 июля 2019

Позвольте обозначить длину нижнего пустого сегмента как

p = (w-x)/2
so
x = w - 2 * p

Посмотрите на аннотированный рисунок - треугольники ABC и DFA похожи прямоугольные с одинаковыми острыми углами ^ CAB и ^ ADF, AB = h, AD = x, FD = s, BC = p)

enter image description here

Итак, мы можем видеть, что отношение h к гипотенузе такое же, как отношение s и x (это косинус острого угла в левом нижнем треугольнике).

h / Sqrt(h^2 + p^2) = s / x = s / (w - 2 * p)
h^2 / (h^2 + p^2) = s^2 / (w^2 - 4 * w * p + 4 * p^2)
h^2 * (w^2 - 4 * w * p + 4 * p^2) = s^2 * (h^2 + p^2)
h^2 * w^2 - 4 * w * h^2 * p + 4 * h^2 * p^2 = s^2 * h^2 + s^2 * p^2
p^2 * (4 * h^2 - s^2) - p * (4 * w * h^2 ) + h^2 * (w^2 - s^2) = 0

Теперь у нас есть квадратное уравнение для неизвестного p. Выберите надежное p корневое значение (положительное и меньше w/2) и рассчитайте x

Например, h=4; w=6; s=1.5 дает p~2.14, so x ~ 1.7. Кленовый лист:

enter image description here

...