Криволинейная перспектива: конвертировать 3D в 2D

StackOverflow https://stackoverflow.com/questions/1222025

Вопрос

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

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

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

Спасибо!

Это было полезно?

Решение

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

(x1,y1,z1)

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

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

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

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

Криволинейный рисунок.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top