Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.12.2016, 17:55
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

Формула трансформации перспективы из неизвестного значения в пикселы
Собственно, есть 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.

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

Может быть есть математики, которые в этом шарят ибо интернеты нужных сведений не предоставляют.
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2016, 19:45
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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

Из спецификации 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]));
Ответить с цитированием
  #3 (permalink)  
Старый 24.12.2016, 19:48
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

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

Из спецификации 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]));
О! Видать уже глаз замылился сегодня. Не увидел, что там это есть.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск