HLFX.Ru Forum
Показать все 14 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- Подскажите, как построить линию пересечения двух плоскостей (https://hlfx.ru/forum/showthread.php?threadid=1595)


Отправлено anna 22-11-2008 в 12:29:

Question Подскажите, как построить линию пересечения двух плоскостей

Плоскости определены матрицей точек имеющих координаты x,y,z. Ни одна из точек не лежит на границе между плоскостями.
Нормали к плоскостям и направляющий вектор отрезка, определяющий границу пересечения плоскостей, я нахожу. Подскажите как можно вычислить начальную и конечную точки отрезка.


Отправлено XaeroX 22-11-2008 в 13:10:

Пересечение плоскостей - это прямая линия, а не отрезок, у нее нет начала и конца. Какой именно отрезок требуется построить?

__________________

xaerox on Vivino


Отправлено anna 22-11-2008 в 15:57:

Плоскости представляют собой стороны куба, тогда отрезок это его грань.


Отправлено Government-Man 22-11-2008 в 16:08:

Дык в таком случае нужно просто взять общие вершины и все...


Отправлено anna 22-11-2008 в 16:10:

Дак общих вершин у них нету, мне их и нужно получить


Отправлено Government-Man 22-11-2008 в 16:15:

Из двух плоскостей ты координаты вершин не получишь. Тебе в таком случае надо искать точки пересечения трех плоскостей - гугл поможет тебе это сделать.


Отправлено XaeroX 22-11-2008 в 16:34:

Я все же не совсем понимаю, что именно нужно построить.
Можешь чертеж нарисовать?

Добавлено 22-11-2008 в 22:34:

Как вариант - можешь спроецировать все имеющиеся точки на прямую пересечения плоскостей и взять граничные точки.

__________________

xaerox on Vivino


Отправлено anna 22-11-2008 в 17:00:

Рисунок очень упрощенно. Задача такова, на первом этапе у маня есть множество точек. (для простоты пусть эти точки принадлежат двум плоскостям) С помощью алгоритма я определяю к какой плоскости принадлежит каждая точка, строю контур (красным).
Затем мне надо вычислить точки границы их пересечения. С этим и загвоздка.


Отправлено anna 22-11-2008 в 17:31:

есть предположение, что брать можно точки 1-2 (рис. 2) и 3-4 и находить их точку пересечения. Но тогда вопрос как определить крайние точки?


Отправлено XaeroX 22-11-2008 в 18:24:

Я же говорю - спроецируй ВСЕ точки на прямую пересечения, поверни эту прямую так, чтобы она была параллельна, скажем, оси абсцисс, и уже на ней определи крайние - это точки с минимальным и максимальным значением координаты Х.
Можно иначе - взять какую-нибудь очень удаленную точку на этой прямой и определить расстояния от нее до всех спроецированных точек, а потом взять точки с мин. и макс. расстоянием.

__________________

xaerox on Vivino


Отправлено anna 22-11-2008 в 18:59:

Еще один момент, никак не могу сообразить, если у меня несколько плоскостей (рис. 3) как определить соседние?


Отправлено XaeroX 22-11-2008 в 19:49:

anna что значит "соседние"? На рисунке - не плоскости, а фрагменты плоскостей, между прочим.

__________________

xaerox on Vivino


Отправлено anna 22-11-2008 в 20:13:

Чем отличаются плоскости от фрагментов плоскостей?

Цитата:
XaeroX писал:
что значит "соседние"?


"соседние" означает смежные.

И еще, в OpenGL я рисую залитые полигоны, при повороте выходит, что я вижу объекты, которые на заднем плане. Почему так происходит?


Отправлено XaeroX 22-11-2008 в 21:49:

Цитата:
anna писал:
Чем отличаются плоскости от фрагментов плоскостей?

Тем, что плоскости бесконечны.
Цитата:
anna писал:
"соседние" означает смежные.

Все непараллельные плоскости - в той или иной степени смежные
Цитата:
anna писал:
я рисую залитые полигоны, при повороте выходит, что я вижу объекты, которые на заднем плане. Почему так происходит?

Видимо, включен режим GL_CULL_FACE.

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 04:32.
Показать все 14 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024