Масштабирование с условием
На известной длине отрезка находятся два отрезка (вообще их может быть и больше), левый и правый.
Обязательные условия:
- левая сторона левого отрезка может располагаться слева не менее чем 2, больше может быть
- правый край правого отрезка не может быть расположен менее чем 2 от края отрезка на котором он располагается, больше может быть
- расстояние между отрезками не может быть менее 1, больше может быть
У отрезков есть признаки L и R равные или 2, или 0.5, которые определяет на какой размер сторона может увеличиваться. Но они служат при масштабировании "от центра".
Нужно увеличивать/уменьшать отрезок и отрезки лежащие на нем с сохранением из расположения и расстояния между ними. Например, отрезок A - 67.73, на нем два отрезка по 31.36. Условно левую сторону примем за x, их длину за w.
Левый: x - 2, w - 31.36, L - 2, R - 0.5
Правый: x - 34.37, w - 31.36, L - 0.5, R - 2
Нужно уменьшить эти отрезки и расположить на новом отрезке B размером 50.8. Идеально в этом случае должно получится
левый: x - 2, w - 22.9
правый: x - 25.9, w - 22.9
Думал, умножая длину отрезков на отношение B/A, дополнительно вычитая по 0.5 умноженное на отношение при наличии у любой из сторон такого признака, а если этот признак у левой стороны, то еще и смещаем отрезок дополнительно вправо. Расстояние "между" с очень малой погрешностью получается, все остальное большие погрешности. Меньшие погрешности получаются если брать отношение не полных отрезков, а за минусом 4 (по 2 каждой стороны), но большие погрешности при расчете x правого отрезка.
Никак не могу установить зависимости.
Последний раз редактировалось laimas, 15.11.2020 в 08:47.
|