Форум программистов, компьютерный форум, киберфорум
Программирование мультимедиа
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 188
1

Проецирование трехмерной фигуры на плоскость

10.11.2013, 21:16. Показов 2736. Ответов 3
Метки нет (Все метки)

Есть трехмерная фигура, точнее координаты ее точек(x,y,z). Нужна формула, которая будет формировать координаты этих точек на экране, проекция должна быть центральной. Уже перечитал кучу статей, перепробовал кучу формул, получается какая-то чушь. Помогите пожалуйста, а то уже с ума схожу с этой неразберихой...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2013, 21:16
Ответы с готовыми решениями:

Проецирование куба на плоскость
Всем доброго времени суток. Решил реализовать одну идею. На pictureBox рисуется куб, который можно...

Проецирование пространственного изображения тела на плоскость
Разработка программы для вывода на экран объемных форм построенных с использованием полигональных...

Проецирование фигуры из 3D графика в 2D
Здравствуйте! Подскажите пожалуйста, как возможно (с помощью функций, математических операций или...

Проекция объёмной фигуры на плоскость
Доброго всем времени суток! Столкнулся тут с оной интересной проблемой. Может кто сталкивался или...

3
211 / 130 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
11.11.2013, 10:09 2
Если мы смотрим из точки (0, 0, 0), ось Z смотрит по направлению взгляда, проектируем на плоскость z = z0, то x0 = x * (z / z0), y0 = y * (z / z0). Подобные треугольники и все такое.
1
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 188
11.11.2013, 10:18  [ТС] 3
Спасибо, вечером попробую. Хотя, если не ошибаюсь, по похожей формуле делал, только там был какой то постоянный коэфф. L.
0
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 188
11.11.2013, 13:26  [ТС] 4
В методичке по комп. графике есть следующие формулы: Xp=X/(1-Z/C) Yp=Y(1-Z/C), центр проекции точка (0,0,с). Как я понял, это точка, откуда мы смотрим на фигуру? В итоге получается вот это, при C=50.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "widget.h"
#include "ui_widget.h"
#include "qpainter.h"
#include "math.h"
 
const int a=50;
 
struct point
{
  double x,y,z;
}pt[5];
 
Widget::Widget(QWidget *parent) :
  QWidget(parent),
  ui(new Ui::Widget)
{
  ui->setupUi(this);
  pt[0].x=-50; pt[0].y=-50; pt[0].z=0;
  pt[1].x=50; pt[1].y=-50; pt[1].z=0;
  pt[2].x=50; pt[2].y=50; pt[2].z=0;
  pt[3].x=-50; pt[3].y=50; pt[3].z=0;
  pt[4].x=0; pt[4].y=0; pt[4].z=50;
}
 
void Widget::paintEvent(QPaintEvent *event)
{
  QPainter painter(this);
  painter.setPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap));
  painter.drawLine(pt[0].x/(1-pt[0].z/a)+150,pt[0].y/(1-pt[0].z/a)+150,            pt[1].x/(1-pt[1].z/a)+150,pt[1].y/(1-pt[1].z/a)+150);
  painter.drawLine(pt[1].x/(1-pt[1].z/a)+150,pt[1].y/(1-pt[1].z/a)+150,            pt[2].x/(1-pt[2].z/a)+150,pt[2].y/(1-pt[2].z/a)+150);
  painter.drawLine(pt[2].x/(1-pt[2].z/a)+150,pt[2].y/(1-pt[2].z/a)+150,            pt[3].x/(1-pt[3].z/a)+150,pt[3].y/(1-pt[3].z/a)+150);
  painter.drawLine(pt[3].x/(1-pt[3].z/a)+150,pt[3].y/(1-pt[3].z/a)+150,            pt[0].x/(1-pt[4].z/a)+150,pt[0].y/(1-pt[4].z/a)+150);
}
 
Widget::~Widget()
{
  delete ui;
}
Код, конечно, ужасный, но в данный момент меня интересует только реализация правильной проекции.
Миниатюры
Проецирование трехмерной фигуры на плоскость  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2013, 13:26

Фигуры, которые разбивают плоскость на области
Здравствуйте! Суть: Даны фигуры, которые разбивают плоскость на области: трапеция с...

Построить две фигуры и найти плоскость их пересечения
Всем привет! Нужно построить две фигуры объемных и найти их плоскость пересечения. Посмотрел...

В трёхмерной системе координат x,y,z есть куб со сторонами 1x1x1 . и плоскость x+y+z=1. как найти объём фигуры внутри куба где x+y+z>1 ?
В трёхмерной системе координат x,y,z есть куб со сторонами 1x1x1 . и плоскость x+y+z=1. как найти...

проецирование файла
Ребята помогите справится с заданием, нужно спроецировать файл данных, в спроецированном файле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.