Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Масштабирование с условием (https://javascript.ru/forum/misc/81365-masshtabirovanie-s-usloviem.html)

laimas 15.11.2020 08:33

Масштабирование с условием
 
На известной длине отрезка находятся два отрезка (вообще их может быть и больше), левый и правый.

Обязательные условия:
- левая сторона левого отрезка может располагаться слева не менее чем 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 правого отрезка.

Никак не могу установить зависимости.


Часовой пояс GMT +3, время: 04:23.