Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Преобразование 3D координат в 2D координаты

20K
14 декабря 2007 года
_Taurus_
24 / / 30.08.2007
Пожалуйста подскажите формулы преобразования 3D координат в 2D координаты. Заранее благодарен!
256
15 декабря 2007 года
foxweb
1.0K / / 27.07.2005
Цитата: _Taurus_
Пожалуйста подскажите формулы преобразования 3D координат в 2D координаты. Заранее благодарен!



Зачем же формулы? Есть готовые решения. По идее в институте проходят афинные преобразования в пространстве.

http://foxweb.net.ru/files/?cat=8&section=7

20K
15 декабря 2007 года
_Taurus_
24 / / 30.08.2007
Спасибо за ответ. Но мне нужны именно сами формулы. :(
256
15 декабря 2007 года
foxweb
1.0K / / 27.07.2005
Цитата: _Taurus_
Спасибо за ответ. Но мне нужны именно сами формулы. :(



Сарказма не понял, ибо формулы записаны в исходниках.
Код на скачивание 2dax-nmz8

А поиск не работает?

505
16 декабря 2007 года
vAC
343 / / 28.02.2006
Цитата: _Taurus_
Пожалуйста подскажите формулы преобразования 3D координат в 2D координаты. Заранее благодарен!



Первый раз о таких слышу? :) О чем идет речь, о проекции? Сформулируйте вопрос в более развернутом виде - что вы подразумеваете под преобразованием 3D->2D.

20K
17 декабря 2007 года
_Taurus_
24 / / 30.08.2007
Вобщем есть такие формулы преобразования координат типа X,Y,Z в координаты X,Y с учетом точки наблюдения.(в принципе да, проекция, но не совсем) У меня где-то были, но я их потерял :( Помогите кто что-нибудь о них знает или слышал. Формулы довольно редкие и применяются не часто. В поисковиках ничего конкретного не нашел.
Есть правда одни, но это не то:
X = X/Z
Y = Y/Z
Может я не ТАМ или не ТАК ищу???
505
17 декабря 2007 года
vAC
343 / / 28.02.2006
Вы случайно не в школе учитесь? (себя вспомнил :))
Если честно, формул таких и не встречал, а если бы встретил, то представляю что это за монстр будет, если учитывать смещение, поворот, масштабирование, проекцию и т.д. :)
Эти формулы конечно можно вывести в явном виде, но зачем?
Для этого существует замечательная вещь - матричная алгебра. Базовых матриц преобразований - по пальцам пересчитать, перемножая их в определенном порядке получаете нужный результат.
Нужно сделать проекцию - перемножаем на матрицу проекции, поворот - на матрицу поворота...
Когда я сам в школе решил изучить 3D-графику, то начинал с этого
20K
18 декабря 2007 года
_Taurus_
24 / / 30.08.2007
Школу я закончил :)
А насчет матриц, попробую. В принципе это оно. Просто не очень хочется выводить эти формулы (Долгое и кропотливое занятие). Думал может кто знает... :) Спасибо что проявили интерес.
31K
24 декабря 2007 года
Lido4ka
8 / / 19.10.2007
сама недавно столкнулась с этой проблемой. Преобразования следующие:
x=x0-(x0-x)*m
y=y0-(y0-y)*m/2
z задается через y.
m - коэффициент масштаба:
m1 = (Yконечное-Yначальное)/высота_рабочей_области
m2 = (Хконечное-Хначальное)/ширина_рабочей_области
m = 1/max(m1,m2)
В итоге получается диметрия.
Да, еще, я месяца 2-3 назад задавала этот вопрос на этом форуме, либо в разделе Графика, либо в разделе Microsoft Visuаl C++. Мне ответили, поищи еще там.
33K
02 января 2008 года
ACW-Coder
17 / / 02.01.2008
С учетом точки наблюдателя? Первое, что напрашивается на ум, это перспективное преобразование. Есть точки наблюдателя и плоскость проецирования. Здесь преобразование координат происходит по следующим формулам:
f(z) = (z1 - z2) / (z1 - z);
x' = x * f(z);
y' = y * f(z);
z' = z - z2.
где (x,y,z) - входные координаты, (x',y',z') - выходные координаты. z1(const) - z-координата точки наблюдателя; z2(const) - z-координата плоскости проецирования.
Т.к. плоскость проецирования в нашем случае - экран, то она может принимать значение 0.
31K
04 января 2008 года
Lido4ka
8 / / 19.10.2007
Затрудняюсь ответить... на экране получается изображение, которое получилось бы, если бы мы строили изометрию на листке бумаги по всем правилам. Что касается точки налюдателя и прочих заморочек, я для этого использую OpenGL
33K
05 января 2008 года
ACW-Coder
17 / / 02.01.2008
Может ты просто берешь такие значения z, при которых эффекта перспективы не получается (хотя случай это редкий)??? Я даже не знаю что и сказать на твою "изометрию". Лично у меня все получается.
Например, эти формулы хорошо работают в моем графическом движке - геометрия объектов в аспекте перспективных преобразований получается довольно неплохая.
31K
10 января 2008 года
Lido4ka
8 / / 19.10.2007
на досуге изучу твои формулы, посмотрю, что получится
400
12 января 2008 года
ArtemS2006
272 / / 12.01.2008
В книге «Введение в программирование трехмерных игр с DirectX 9.0» есть целая глава посвященная этой теме: "Выбор объектов". Но там чегото както сложно описывается, с первого раза не понятно, но с другой стороны сорс код есть. Книга есть много где в сетке.
38K
28 марта 2008 года
Darkrie
1 / / 28.03.2008
Мдя... тема стара, как мир, но помню, сам искал долго...
думаю, автор уже нашел ответ, но просто ссылка 5 или 6-ая в гугле...
сам случайно зашел, давно не прогал графику, а тут вспомнить понадобилось... кхм, кароче по теме:

screenX = xSize/2 + xSize/2 * a/c
screenY = ySize/2 - ySize/2 * b/c

В случае стандартной камеры переход от обычной системы координат к системе координат камеры очевиден:

a = x / (xSize/2)
b = y / (ySize/2)
c = (z + dist) / dist

это отсюда http://www.enlight.ru/faq3d/

а вообще советую начать с изучения ассемблера, если не поймете его, либо этот фак - графика не ваше призвание

если все же не хочется особо понимать, а что-нибудь красивое сделать хочется, вам сюда: http://pmg.org.ru/nehe/index.html

дерзайте ;)

(ЗЫ еще и зарегался на скорую руку не так))))) )
391
30 марта 2008 года
Archie
562 / / 03.02.2005
Если на данном этапе жизненного пути Вас интересует какой-то ассемблер, это еще не значит, что все "должны с него начать". Не пишите глупостей.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог