Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ортографические проекции 
V
    Опции темы
PRF
Дата 27.4.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



Здравствуйте. скажите пожалуйста как строить проекции. Вот даны точки в 3-х системе координат (x, y, z)! Двухмерное изображение строю с помощью центрального проецирования, где точки преобразуются по формулам 
x' = (Width / 2) + (F * x) / (F + z)
y' =  (height / 2) + (F * y) / (F + z)  
где F фокусное расстояние, height - высота экрана, width - ширина.
Мне надо построить ортографическую проекцию изображения (горизонтальную, фронтальную и профильную) , в теории сказано что мы просто убираем одну из координат, ну в горизон. это y = 0, во фронтальной это x = 0, профильной z = 0. А вот как потом мне построить это двухмерное изображения, используя выше написанные формулы ничего не получается! спасибо
PM MAIL   Вверх
p51x
Дата 28.4.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.12.2008

Репутация: нет
Всего: нет



в лоб:
цикл_по_всем_xyz{
  поставить_точку_x'y'( получить_новые_x'y');
}
PM MAIL   Вверх
PRF
Дата 28.4.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



я имел ввиду, что если обнулять соответствующую координату, то ничего не получается
PM MAIL   Вверх
baldina
Дата 28.4.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



требуется (по постановке задачи) построить параллельные проекции на плоскости XY, XZ, YZ. Для параллельной проекции никакого фокусного расстояния нет. Действительно, достаточно обнулить (не использовать) координаты z, y, x соответственно.
Нужно просто сопоставить координаты точек координатам экрана. Обозначим координаты экрана по горизонтали и вертикали через u и v, тогда в проекции XY u=x, v=y
XZ u=x, v=z
YZ u=y, v=z

если надо систему координат переместить в центр экрана, то добавь к u width/2 и к v height/2. еще учти, что обычно экранная вертикаль направлена сверху вниз.

итак, имеем (обозначаю u и v через привычные тебе x' и y'): 

XY: x'=width/2+x, y'=height/2-y
XZ: x'=width/2+x, y'=height/2-z
YZ: x'=width/2+y, y'=height/2-z


PM MAIL   Вверх
PRF
Дата 29.4.2009, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



А то что если я допустим смотрю сверху на объект.. то у меня получается под наклоном..это нормально? или надо оси еще развернуть?
PM MAIL   Вверх
baldina
Дата 29.4.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



попробуй с параллелепипедом. все должно быть без наклона
PM MAIL   Вверх
PRF
Дата 29.4.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



ага спасибо, просто ступил) очень помогли, спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1031 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.