Криволинейная перспектива: конвертировать 3D в 2D - PullRequest
15 голосов
/ 03 августа 2009

Я ищу математическое выражение для преобразования трехмерной координаты (x0,y0,z0) в 2D (x1,y1) координату в криволинейной перспективе радиуса R, где значения x1 и y1 являются углами видов {-90 ° .. + 90 °} исходной точки.

image
(источник: ntua.gr )

(изображение через http://www.ntua.gr/arch/geometry/mbk/histor.htm)

Спасибо!

Ответы [ 2 ]

10 голосов
/ 18 июля 2010

Примерно через год решение было действительно простым. Для точки, имеющей координаты:

(x1,y1,z1)

Затем, чтобы преобразовать эту точку в криволинейный чертеж радиуса R :

dist=sqrt(x1^2 + y1^2 + z1^2)

x= R*(1+x/dist)
y= R*(1+y/dist)

Теперь я могу создавать свои собственные рисунки (изображение из Википедии): -)

Curvilinear drawing.

3 голосов
/ 03 августа 2009

Сначала вам может понадобиться использовать матрицу преобразования для проецирования 3D-объекта на 2D-плоскость. http://en.wikipedia.org/wiki/Graphical_projection, выберите тот, который наилучшим образом соответствует вашим потребностям.

В качестве второго шага вы захотите использовать общие преобразования, чтобы привести координаты в евклидово пространство. http://en.wikipedia.org/wiki/Curvilinear_coordinates

...