Мне нужна формула для масштабирования прямоугольника, чтобы соответствовать большему /Шире прямоугольник. Мне нужно беспокоиться только о маленьком прямоугольнике.
Приведенные значения только у меня есть:
Большой прямоугольник:
Маленький прямоугольник:
Значения относятся к пикселям экрана.
найти
a = width1 / height1;
b = width2 / height2;
if(a>b)
{
scale = height1 / height2;
point.y = y; (from big rectangle)
point.x = (width1 - width2 * scale) / 2 + x;
}
else
{
scale = width1 / width2;
point.x = x; (from big rectangle)
point.y = (height1 - height2 * scale) / 2 + y;
}
Из того, что я понимаю, это должно делать то, что вы хотели.
Изменить: см. PureW ответ только для получения масштаба.
scale = min(big.width/small.width, big.height/small.height)
Это должно дать вам самый большой scale
это все еще соответствует маленькому прямоугольнику внутри большого.