Я не знаю способа интуитивно это понять. Обратное преобразование получается обращением матрицы проективного отображения, проще никак =) Например, если преобразование из первой фотки во вторую - поворот на 45 градусов, то из второй в первую - поворот в обратную сторону на те же 45. Если из первой во вторую - растяжение в два раза по горизонтали, то из второй в первую - сжатие в два раза по горизонтали. И так далее. Повороты, сдвиги, растяжения, любые сочетания этих операций etc. - укладываются в понятие "проективное преобразование". Каждому такому преобразованию соответствует матрица, для обратного преобразования вычисляется обращение этой матрицы.роюсь счаз в picture.asведь на входе у нас 4 точки. Должна быть функция в которую даются четыре этих точки а она возвращает их инвертированными. Кажется мне что это где-то здесь: var mat2 = DistortedPicture.buildMatrix([[-tw, -th], [tw, -th], [tw, th], [-tw, th]]); var ttw = nav.width/Math.pow(2, z + 1); var tth = nav.height/Math.pow(2, z + 1); var cx = -(x - nav.width/2)/Math.pow(2, z); var cy = -(y - nav.height/2)/Math.pow(2, z); var p2 = DistortedPicture.applyMultiple(DistortedPicture.inverse(mat1), [ [cx - ttw, cy - tth], [cx + ttw, cy - tth], [cx + ttw, cy + tth], [cx - ttw, cy + tth] ]);но еще не доразобрался.закомментировать бы код :) Такой функции нет, но тот код, на который Вы смотрите, действительно это делает. Вычисление матрицы по четырем точкам - DistortedPicture.buildMatrix. Обращение матрицы - DistortedPicture.inverse. Вычисление четырех точек по матрице и четырем точкам-прообразам - DistortedPicture.applyMultiple. |