Криволинейная перспектива: преобразование 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