Криволинейная перспектива: преобразование 3D в 2D
Я ищу математическое выражение, преобразующее трехмерную координату (x0,y0,z0)
в координату 2D (x1,y1)
в криволинейной перспективе радиус R
, где значения x1 и y1 - углы представлений {-90 °... + 90 °} исходной точки.
изображение http://www.ntua.gr/arch/geometry/mbk/images/curv159.gif
(изображение через http://www.ntua.gr/arch/geometry/mbk/histor.htm)
Спасибо!
Ответы
Ответ 1
Примерно через год решение было действительно простым.
Для точки, имеющей координаты:
(x1,y1,z1)
Затем, чтобы преобразовать эту точку в криволинейный рисунок радиуса R:
dist=sqrt(x1^2 + y1^2 + z1^2)
x= R*(1+x/dist)
y= R*(1+y/dist)
Теперь я могу создавать собственные рисунки (изображение через википедию): -)
![Curvilinear drawing.]()
Ответ 2
Сначала вам понадобится использовать матрицу преобразования для проектирования 3D-объекта на 2D-плоскости.
http://en.wikipedia.org/wiki/Graphical_projection, выберите тот, который наилучшим образом соответствует вашим потребностям.
В качестве второго шага вы затем захотите использовать общие преобразования, чтобы привести координаты в евклидово пространство.
http://en.wikipedia.org/wiki/Curvilinear_coordinates