|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alex Astafiev 2:5000/228.16 25 May 2002 16:14:59 To : Michael Sedov Subject : 3d->2d --------------------------------------------------------------------------------
MS> ? Есть две точки: (d, 0, 0) и (0, d, 0). Которые соответсвенно на
MS> плоскости: (sin(pi/3)*d, cos(pi/3)*d) и (-sin(pi/3)*d, cos(pi/3)*d).
MS> Притом все прямые вида: / x = 0 | y = t \ z = p Пересекаются
MS> в одной точке -> (0, d, 0), а
MS>
MS> / x = t
MS> | y = 0
MS> \ z = p
MS> Пересекаются в одной точке -> (d, 0, 0). Hезависимо от p.
MS> (p = const, t - переменная)
MS>
MS> Требуется найти такой способ проецирования.
Самое время перейти к матрицам.
Пусть твои модели будут описаны в виде точек xyz.
Будемпреобразовывать их матрицей 4x4, для этого каждую точку представляем в
виде стоблца и умножаем на матрицу по правилам матричного умножения.
[x] [n][n][n][n]
[x] * [n][n][n][n]
[z] [n][n][n][n]
[1] [n][n][n][1]
далее, когда мы снова получим вектор-столбец в координатах 3D"мира",
мы перейдем к 2D координатам матрицей перспективного преобразования.
[n][n][n][n]
[n][n][n][n]
[n][n][n][n]
[-1/a][-1/b][-1/c][1]
точки -1/a -1/b -1/c это точки схода произвольной перспективной проекции.
я не просто так разбил процесс на поворот матрицей вмдового преобразования и
перспективное преобразование матрицей перспективного преобразования.В отдельных
случаях это полезно. В другом случае, эти матрицы можно обьединить, т.е.
перемножить и применять одну матрицу на обьект.
Обращаю внимание что у меня матрицы-векторы "по столбцам", если необходима
более привычная запись по строкам, то след-ет транспонировать вектор-столбцы в
вектор строки и матрицы соотв. преобразований.
---
* Origin: Alex Raider/ Flash inc. 1992-2002 (2:5000/228.16)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/174643cefc9e9.html, оценка из 5, голосов 10
|