![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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. А вот как потом мне построить это двухмерное изображения, используя выше написанные формулы ничего не получается! спасибо |
|||
|
||||
p51x |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 19.12.2008 Репутация: нет Всего: нет |
в лоб:
цикл_по_всем_xyz{ поставить_точку_x'y'( получить_новые_x'y'); } |
|||
|
||||
PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
я имел ввиду, что если обнулять соответствующую координату, то ничего не получается
|
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 |
|||
|
||||
PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
А то что если я допустим смотрю сверху на объект.. то у меня получается под наклоном..это нормально? или надо оси еще развернуть?
|
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
попробуй с параллелепипедом. все должно быть без наклона
|
|||
|
||||
PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
ага спасибо, просто ступил) очень помогли, спасибо
|
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |