66 / 66 / 5
Регистрация: 12.03.2008
Сообщений: 392
1

Ортогональная проекция

10.04.2011, 20:44. Показов 5092. Ответов 6
Метки нет (Все метки)

Вопрос: как построить ортогональную проекцию 3-х мерного объекта на 2-х мерную плоскость? Прочитал кучу инфы, нигде нет алгоритма, только теор. выкладки. Интуитивно, ортогональная проекция получится, если просто отбросить z-координату (имеется ввиду проекция некотрой 3х мерной точки на экран монитора). Так ли это?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2011, 20:44
Ответы с готовыми решениями:

ортогональная проекция
Найти ортогональную проекцию функции у = x ^ 3 пространства С (0,1) на подпространство Е=L(1,x)....

Ортогональная проекция и перпендикуляр
найти ортогональную проекцию и перпендикуляр, опущенный их вектора z=(-1,1,3,1) на пространство...

OpenGl ортогональная проекция(камера)
Добрый день! Столкнулся с такой проблемой. У меня есть график(ссылка): Положение камеры я задал с...

Проекция вектора на подпространство и ортогональная составляющая
Найти проекцию вектора g (5,2,-2,2) на подпространство l =<(2,1,1,-1),(1,1,3,0)> и ортогональную...

6
1336 / 987 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
10.04.2011, 20:47 2
Norby, нет, конечно. Посмотрите на тень от предметов. А по сабжу - пардон, ничем не могу помочь
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
10.04.2011, 20:48 3
На какую плоскость? Если на плоскость, перпендикулярную одной из осей, то да, просто отбрасываем координату, соотвествующую этой оси.
1
66 / 66 / 5
Регистрация: 12.03.2008
Сообщений: 392
10.04.2011, 20:52  [ТС] 4
Цитата Сообщение от iama Посмотреть сообщение
Norby, нет, конечно. Посмотрите на тень от предметов.
А это разве ортогональная? Лучи от источника света на плоскость не всегда падают под углом 90 градусов.

Добавлено через 1 минуту
Цитата Сообщение от Хохол Посмотреть сообщение
На какую плоскость? Если на плоскость, перпендикулярную одной из осей, то да, просто отбрасываем координату, соотвествующую этой оси.
Спасибо. А если не на перпендикулярную? Где можно взять именно формулы, применив которые к вектору с координатами трехмерной точки, можно получить координаты ее на плоскости?
0
iama
10.04.2011, 20:54
  #5

Не по теме:

Norby, ступил, да, просто отбрасываете

0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
10.04.2011, 21:27 6
Для начала определимся, каким образом задается плоскость, на которую проецируем.
Допустим она задается началом координат O и двумя базисными векторами baseI и baseJ (взаимно ортогональные и длины 1).
Найдем проекцию точки A на нашу плоскость.
Сначала перейдем в систему координат (трехмерную) с центром в точке O. Для этого просто вычтем из точки A радиус-вектор точки O.

Координаты проекции точки A в системе координат плоскости равны длинам проекций радиус-вектора точки A на соответствующие базисные вектора.
Длина проекции произвольного вектора на некоторый единичный вектор равна скалярному произведению этих векторов.
Вот и вся теория. Теперь код:
C++
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
39
40
41
42
43
44
45
46
47
48
49
50
#include <fstream>
 
using namespace std;
 
ifstream cin("input.txt");
ofstream cout("output.txt");
 
struct point2D
{
    double x, y;
    point2D() {}
    point2D(double xx, double yy) : x(xx), y(yy) {}
};
 
//для вектора и для точки используется одна и та же структура данных
 
struct point3D
{
    double x, y, z;
    point3D() {}
    point3D(double xx, double yy, double zz) : x(xx), y(yy), z(zz) {}
    point3D operator - (point3D &a)
    {
        return point3D(x-a.x,y-a.y,z-a.z);
    }
};
 
double scalarProduct(point3D &a, point3D &b)
{
    return a.x*b.x + a.y*b.y + a.z*b.z;
}
 
point2D projection(point3D A, point3D &baseI, point3D &baseJ, point3D &O)
{
    A = A-O;
    return point2D(scalarProduct(baseI,A),scalarProduct(baseJ,A));
}
 
int main()
{
    point3D A, O, baseI, baseJ;
    cin >> A.x >> A.y >> A.z;
    cin >> O.x >> O.y >> O.z;
    cin >> baseI.x >> baseI.y >> baseI.z;
    cin >> baseJ.x >> baseJ.y >> baseJ.z;
 
    point2D res = projection(A,baseI,baseJ,O);
 
    cout << res.x << ' ' << res.y;
}
1
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
11.04.2011, 00:43 7
читайте Аффинные преобразования
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2011, 00:43

ортогональная матрица
Помогите пожалуйста составить программу, проверяющую, является ли матрица А ортогональной

Ортогональная таблица
Есть таблица БД с композитным возможным ключом из двух полей, двух композитных сущностей, или...

Как формируются блочная и ортогональная матрицы?
Подскажите каким способом формируются блочная и ортогональная матрицы?

Доказать что матрица повороту есть ортогональная
Мне нужно доказать что матрица пороту есть ортогональная. На википедии так и...


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

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

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