Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Формула трансформации перспективы из неизвестного значения в пикселы (https://javascript.ru/forum/misc/66574-formula-transformacii-perspektivy-iz-neizvestnogo-znacheniya-v-piksely.html)

xShift 24.12.2016 17:55

Формула трансформации перспективы из неизвестного значения в пикселы
 
Собственно, есть 3D матрица вида :
M3D = ["1", "0", "0", "0", "0", "1", "0", "0", "0", "0", "1", "-0.00166667", "0", "0", "0", "1"]


в этой матрице M3D[11] === -0.00166667 представляет собой обозначение перспективы устанавливаемой в CSS:

transform: perspective(600px)


тоесть -0.00166667 это ни что иное как 600px. :blink:

Нужно найти формулу которая конвертирует значение из матрицы в пиксели.

Может быть есть математики, которые в этом шарят ибо интернеты нужных сведений не предоставляют.:-?

Malleys 24.12.2016 19:45

Откуда разработчики браузеров тогда узнали об этих трансформациях?

Из спецификации CSS. https://www.w3.org/TR/css-transforms...al-description

Там описана матрица перспестивы, можно сделать обратное преобразование

function perspective(M3D) {
    return -1 / M3D[11];
}

// пример с вашей матрицей
alert(perspective([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0016666667, 0, 0, 0, 1]));

xShift 24.12.2016 19:48

Цитата:

Сообщение от Malleys (Сообщение 438848)
Откуда разработчики браузеров тогда узнали об этих трансформациях?

Из спецификации CSS. https://www.w3.org/TR/css-transforms...al-description

Там описана матрица перспестивы, можно сделать обратное преобразование

function perspective(M3D) {
    return -1 / M3D[11];
}

// пример с вашей матрицей
alert(perspective([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0016666667, 0, 0, 0, 1]));

О! Видать уже глаз замылился сегодня. Не увидел, что там это есть.


Часовой пояс GMT +3, время: 00:35.