2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Построение трёхмерной проекции по двумерной.
Сообщение13.10.2008, 11:05 
Доброго времени суток, господа хорошие. Такая возникла проблема - необходимо по двумерной

проекции квадрата (квадрат вращается и ПЕРЕМЕЩАЕТСЯ в трёх плоскостях) найти реальные размеры

всех его сторон, то есть как выглядел бы квадрат, если бы мы решили его развернуть паралельно

плоскости нашего видения.

Допустим дан квадрат с вершинами ABCD и его двумерная проекция A'B'C'D'

Ход моих мыслей:
1. Самая близкая вершина будет находится между двумя наибольшими сторонами. Эту вершину примим за

исходную (допустим D').
2. Углы образованные сторонами проекции назовём альфа (а), а углы образованные сторонами проекции

с вертелкаью до вершины самого квадрата, назавем тетта (Q).
3. Теперь разворачиваем квадрат от этой вершины (от нас), что бы он стал в нашей плоскости (что

бы стороны квадрата стили без искожений.
4. Теперь необходимо найти длинну этих проекций.
D'C'=DC*sin(Qc);
D'A'=DA*sin(Qa);
D'B'=sqrt(2)*DB*sin(Qb);

Теперь такой вопрос, наверняка есть какое-нибудь отношение D'C'/D'А'=sin(Qc)/sin(Qa)

Я сам начинающий математик, поэтому найти решение самому (пока) трудно, просто из-за не знания

определенных теорем из планометрии. Напишите, хотя бы какую теорему можно использовать. Будо

очень благодарен.

Добавлено спустя 3 минуты 31 секунду:

1.JPG.html

 
 
 
 
Сообщение13.10.2008, 17:12 
Аватара пользователя
Какая у вас проекция - параллельная или проективная? Если параллельная, то параллельно какой плоскости?

Надо аккуратно писать уравнения, задающие четыре вершины произвольного квадрата в трехмерном пространстве, применять к ним оператор ортогонального проектирования и посмотреть, достаточно ли остается данных, для восстановления длины стороны. Шаманить с пространственным воображением мне лень.

 
 
 
 
Сообщение13.10.2008, 18:55 
Бодигрим писал(а):
Какая у вас проекция - параллельная или проективная? Если параллельная, то параллельно какой плоскости?

Надо аккуратно писать уравнения, задающие четыре вершины произвольного квадрата в трехмерном пространстве, применять к ним оператор ортогонального проектирования и посмотреть, достаточно ли остается данных, для восстановления длины стороны. Шаманить с пространственным воображением мне лень.

Паралельная плоскости наблюдения.
Я вас понял, но дело в том что "оператор ортоганального проектирвоания" для меня тёмный лес.
Неужели нет никогого соотношения сторон, для определения углов между сторонами и вертикалями к плоскости наблюдения.

 
 
 
 
Сообщение13.10.2008, 19:10 
Аватара пользователя
Swordman в сообщении #150477 писал(а):
Неужели нет никогого соотношения сторон, для определения углов между сторонами и вертикалями к плоскости наблюдения.

Говорю же: лично мне шаманить лениво. Может кому-то будет не лениво.

Вот имеем четыре вершины квадрата: $(0,0,0)$, $(0,a,0)$, $(a,a,0)$ и $(a,0,0)$. Вот применяем к ним оператор поворота в трехмерном пространстве. Вот применяем оператор ортогонального проектирования. По получившимся выражениям (это и будет искомые вами "соотношения сторон, для определения углов между сторонами и вертикалями к плоскости наблюдения") пытаемся восстановить $a$. Это только слова страшные, а вообще-то все просто.

 
 
 
 
Сообщение13.10.2008, 23:05 
Бодигрим прав, действительно лень. Может, от нахлынувшей занятости. Потому и не стал отвечать после первого прочтения. Устыдился признаваться. Хотя узнать ответ интересно.
Матрицу поворота можно найти здесь, в Википедии. То, что Бодигрим высокопарно назвал оператором проектирования, можно перефразировать как "сосчитайте координаты вершин после поворота, а потом везде обнулите $z$-координату". Ну и...

Где Вы, толпой появившиеся в последнее время молодые, умные, неленивые участники???

 
 
 
 
Сообщение14.10.2008, 01:24 
По теме: достаточно знать натуральную длину диагонали, чтобы узнать длину сторон квадрата. Диагональ квадрата в трехмерном пространстве задается тройкой координат. Если один ее конец расположен в начале координат (0,0,0), то второй конец задается числами $(x,y,z)$. В частных случаях можно восстановить квадрат по его двумерной проекции:
1. Проекция - прямоугольник (длинная сторона - натуральная сторона квадрата).
2, Проекция - ромб (длинная диагональ - натуральная диагональ квадрата).
В остальных случаях проекция квадрата - параллелограмм. Без задания $x,y,z$.восстановить квадрат не удастся, если не ошибаюсь.
В начертательной геометрии восстанавливают натуральные размеры отрезков по двум проекциям: горизонтальной $(x,y)$ и вертикальной.$(z)$.

 
 
 
 
Сообщение14.10.2008, 03:31 
Архипов писал(а):
Без задания $x,y,z$.восстановить квадрат не удастся, если не ошибаюсь.

Тоже лень думать, но боюсь, что ошибаетесь. Наклон плоскости задаётся единичным вектором нормали, который определяется двумя независимыми параметрами. У деформированного квадрата независимых безразмерных параметров тоже два -- угол и соотношение сторон.

----------------------------------------------------------------------------------------------
Вот родственная задачка (хотя и для другого типа проекции), которой я в своё время озадачился и даже собирался накатать программку, но руки так и не дошли.

Требуется в "полуавтоматическом" режиме устранить перспективные искажения снимка. Предполагаемый интерфейс: находим на снимке прямоугольник (т.е. то, что должно бы быть прямоугольником), проводим через его стороны четыре прямые и просим компьютер всё выпрямить.

Вот эта задачка действительно не имеет однозначного решения, но лишь по той причине, что в ней есть дополнительный параметр -- фокусное расстояние (относительное, т.е. фактически угол зрения). Если оно задано неверно, то прямоугольник-то мы получим, но соотношение сторон будет неправильным.

Но, с другой стороны: если соотношение сторон заранее известно (скажем, фотографировался квадрат, или лист А4, или на картинке откровенный круг присутствует), то это позволяет откалибровать фокусное расстояние!

 
 
 
 
Сообщение14.10.2008, 13:48 
Что-то это надолго затянулось, всем лениво :)

Расположим начало координат в одной из вершин квадрата. $x_i, y_i, z_i \quad i \in \{1,2\}$ — координаты соседних вершин. Сторона квадрата (неизвестная) — $a$. Тогда:
$$ \left\{ \begin{array}{l} x_1^2 + y_1^2 + z_1^2 = a^2\\  x_2^2 + y_2^2 + z_2^2 = a^2\\ x_1x_2 + y_1y_2 + z_1z_2 = 0 \end{array} \right. $$
Если $a_i$ — стороны параллелограмма в проекции, а $\varphi$ — угол между ними, то $x_i^2 + y_i^2 = a_i^2, \quad x_1x_2 + y_1y_2 = a_1a_2\cos\varphi$. Итого:
$$ \left\{ \begin{array}{l} a_1^2 + z_1^2 = a^2\\  a_2^2 + z_2^2 = a^2\\  a_1a_2\cos\varphi + z_1z_2 = 0 \end{array} \right. $$
Три уравнения с тремя неизвестными. Дальше все просто.

 
 
 
 От лентяя
Сообщение14.10.2008, 16:05 
вздымщик Цыпа в сообщении #150635 писал(а):
Три уравнения с тремя неизвестными. Дальше все просто

Спасибо! :D

 
 
 
 
Сообщение15.10.2008, 09:12 
Для начала БОЛЬШОЕ спасибо :)
вздымщик Цыпа писал(а):
Что-то это надолго затянулось, всем лениво :)

Расположим начало координат в одной из вершин квадрата. $x_i, y_i, z_i \quad i \in \{1,2\}$ — координаты соседних вершин. Сторона квадрата (неизвестная) — $a$. Тогда:
$$ \left\{ \begin{array}{l} x_1^2 + y_1^2 + z_1^2 = a^2\\  x_2^2 + y_2^2 + z_2^2 = a^2\\ x_1x_2 + y_1y_2 + z_1z_2 = 0 \end{array} \right. $$
Если $a_i$ — стороны параллелограмма в проекции, а $\varphi$ — угол между ними, то $x_i^2 + y_i^2 = a_i^2, \quad x_1x_2 + y_1y_2 = a_1a_2\cos\varphi$. Итого:
$$ \left\{ \begin{array}{l} a_1^2 + z_1^2 = a^2\\  a_2^2 + z_2^2 = a^2\\  a_1a_2\cos\varphi + z_1z_2 = 0 \end{array} \right. $$
Три уравнения с тремя неизвестными. Дальше все просто.

Возник такой вопрос. когда вычисляешь z_1 и z_2, то одно из них получается отрицательным (либо оба положительные, и оба отрицательные), и нельзя точно определить, какое именно дальше, или ближе от нас. Я так полагаю, в перспективе ближней будет та вершина у которой стороны её образующие максимальные? так?

 
 
 
 
Сообщение15.10.2008, 09:31 
Аватара пользователя
Проекция квадрата - параллелограмм. У каждой вершины стороны попарно равны. Может быть, по углу можно определить относительное положение вершин?
Для решения одна из вершин была помещена в начало системы координат, а после нахождения квадрата его можно произвольно перемещать параллельно оси Z; от этого проекция не изменится. Одна из вершин квадрата (или две) будет "выше" остальных, а одна - "ниже". Может быть это имеется в виду? Тогда надо найти z всех четырех вершин квадрата.

 
 
 
 
Сообщение15.10.2008, 11:14 
Swordman в сообщении #150828 писал(а):
Возник такой вопрос. когда вычисляешь z_1 и z_2, то одно из них получается отрицательным (либо оба положительные, и оба отрицательные), и нельзя точно определить, какое именно дальше, или ближе от нас. Я так полагаю, в перспективе ближней будет та вершина у которой стороны её образующие максимальные? так?
Положение квадрата неоднозначное. Есть два решения: $z_1, z_2$ и $z_1',z_2'$. Они связаны соотношением $z_1' = -z_1,\quad z_2' = -z_2$. Т.е. два положения квадрата дают одну и ту же проекцию и они неотличимы только по проекции. Это при параллельном проектировании (вроде как его заказывали). Как оно при перспективном, я не знаю, эту задачу не рассматривал.

 
 
 
 
Сообщение16.10.2008, 08:23 
вздымщик Цыпа писал(а):
Swordman в сообщении #150828 писал(а):
Возник такой вопрос. когда вычисляешь z_1 и z_2, то одно из них получается отрицательным (либо оба положительные, и оба отрицательные), и нельзя точно определить, какое именно дальше, или ближе от нас. Я так полагаю, в перспективе ближней будет та вершина у которой стороны её образующие максимальные? так?
Положение квадрата неоднозначное. Есть два решения: $z_1, z_2$ и $z_1',z_2'$. Они связаны соотношением $z_1' = -z_1,\quad z_2' = -z_2$. Т.е. два положения квадрата дают одну и ту же проекцию и они неотличимы только по проекции. Это при параллельном проектировании (вроде как его заказывали). Как оно при перспективном, я не знаю, эту задачу не рассматривал.

Очень любопытно узнать, как оно будет при перспективе. На самом деле, задача стояла обноржуть в проанализировать изображение в перспективе, это я немного на ошибся :roll:

 
 
 
 
Сообщение16.10.2008, 09:54 
Ну тогда тем более нельзя размер определить. Вы думаете зачем линейку при фотографировании кладут?

 
 
 
 
Сообщение16.10.2008, 11:38 
ha писал(а):
Ну тогда тем более нельзя размер определить. Вы думаете зачем линейку при фотографировании кладут?

Мне надо определить не РАЗМЕР, а воостановить трёхмерное изображение по двумерному. Как раз таки размеры квадрата ИЗВЕСТНЫ, а ленейку кладут, для того что бы можно было востановить истинные размеры фотографируемого объекта. :wink:

 
 
 [ Сообщений: 20 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group