Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > ортографические проекции


Автор: PRF 27.4.2009, 19:38
Здравствуйте. скажите пожалуйста как строить проекции. Вот даны точки в 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 28.4.2009, 11:00
в лоб:
цикл_по_всем_xyz{
  поставить_точку_x'y'( получить_новые_x'y');
}

Автор: PRF 28.4.2009, 13:58
я имел ввиду, что если обнулять соответствующую координату, то ничего не получается

Автор: baldina 28.4.2009, 23:55
требуется (по постановке задачи) построить параллельные проекции на плоскости 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 29.4.2009, 02:12
А то что если я допустим смотрю сверху на объект.. то у меня получается под наклоном..это нормально? или надо оси еще развернуть?

Автор: baldina 29.4.2009, 14:10
попробуй с параллелепипедом. все должно быть без наклона

Автор: PRF 29.4.2009, 15:52
ага спасибо, просто ступил) очень помогли, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)