Рассчитать источник преобразования из оригинальных и масштабированных блоков

Исходя из исходного rect1 (x1, y1, w1, h1) и известного масштабированного rect2 (x2, y2, w2, h2), по какой формуле можно узнать, какой источник преобразования использовался? Мне нужна формула многократного использования, потому что rect2 может быть расположен в любом месте.

Другими словами, я знаю границы маленького прямоугольника и хочу, чтобы он перешел в больший прямоугольник, применяя правильные координаты источника преобразования (в пикселях или%).

1 ответ

Решение

В простом масштабе отношения между расстояниями x1 -> tx и tx -> (x1+w1), где координата x источника преобразования равна tx, остаются такими же после масштаба. В порядке слов:

(tx-x1) / w1 = (tx-x2) / w2

Решив для TX, вы получите:

tx = (w2 / (w2-w1)) * (x1 - (x2 * w1) / w2)

Аналогичная формула уступит твоему.

(Обратите внимание, что если вы используете перспективу с z-преобразованием, то эта формула будет неправильной, и если вы также не знаете источник вашей перспективы, то я считаю, что результат будет неопределенным, потому что будут бесконечные комбинации начала и преобразования перспективы источник, который даст тот же результат. Если вы знаете перспективное происхождение, то математика все еще довольно сложна.)

Другие вопросы по тегам