| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| ага спасибо, просто ступил) очень помогли, спасибо |