@Corsair_TM

Как рассчитать размеры блока с сохранением пропорций не превышая заданной ширины и высоты?

Добрый день, помогите пожалуйста с формулой расчета ширины и высоты блока (с геометрией беда :)).
Есть основное поле - ширина 1000, высота 400.
Вводятся новые значения к примеру - ширина 2800, высота 700.
Нужно отрисовать внутри основного поля прямоугольник который не будет выходить за пределы размеров основного поля, но при этом будет иметь правильную форму относительно введенных размеров.

То. есть если ширина 2800, то новый блок должен быть максимум шириной 1000, а высота соответственно пропорционально уменьшена, ну или наоборот если ширина 700 а высота 2800, то он по высоте уменьшаем до 400 и пропорционально уменьшить ширину.
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Чистая математика.

Предлагаю такой алгоритм. Сначала считаем, превышен ли размер (по каждой оси отдельно). Если превышен, то считаем коэффициент превышения:
2800/1000 = 2.8
700/400 = 1.75
Если не превышен, то коэффициент будет равен 1.
Далее смотрим, какой из коэффициентов больше (функция Math.max). Выбираем его.
И если он больше 1, то делим ширину и высоту прямоугольника на этот коэффициент.
Пропорции будут примерно сохранены (после округления). И в поле тоже влезет.

Сорри, что без кода, но ведь и в вопросе кода нет. ;)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы