Рассчитать источник преобразования из оригинальных и масштабированных блоков
Исходя из исходного 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-преобразованием, то эта формула будет неправильной, и если вы также не знаете источник вашей перспективы, то я считаю, что результат будет неопределенным, потому что будут бесконечные комбинации начала и преобразования перспективы источник, который даст тот же результат. Если вы знаете перспективное происхождение, то математика все еще довольно сложна.)