Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пересечение прямой и треугольника 
:(
    Опции темы
antoniobanderas
Дата 7.10.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



как найти точку пересечения?
PM MAIL   Вверх
Kuvaldis
Дата 7.10.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 1
Всего: 61



antoniobanderas
Если все задано в координатах,
то:
1. ищешь точку пересечения прямой с прямыми, содержащими стороны треугольника. Если неудача, то просто выбираешь, другую прямую. (прямые могут быть параллельные, пересечения с этой не будет)
Это делается через решение системы двух уравнений.
например, исходная прямая AX + BY +C = 0 (1)
прямая, содержащая сторону:
уравнение прямой, проходящей через 2 точки
(Х - Х0) / (X1 - X0) = (Y - Y0) / (Y1 - Y0),  где (X0, Y0) - одна точка (вершина треугольника), (Х1. Y1) - другая.
получаем прямую A1 X = B1Y + C1 = 0 (2)

Решаем систему (1), (2), находим точку пересечения

2. Проверить, принадлежит ли найденная точка стороне треугольника, она лежит, на ПРЯМОЙ, а нас интересует отрезок
Проверка: координата Х найденной точки должна быть между X0 и X1 (элементарно, Ватсон)

Вроде все, осталось только реализовать



 


Это сообщение отредактировал(а) Kuvaldis - 7.10.2006, 13:38


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
antoniobanderas
Дата 7.10.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



спасибо конечно но я имел ввиду нахождение точки пересечения прямой с тругольком в трехмерном пространстве (для рейтрейсинга)
PM MAIL   Вверх
ivashkanet
Дата 7.10.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Цитата(antoniobanderas @  7.10.2006,  13:50 Найти цитируемый пост)
в трехмерном пространстве

Так что сразу не сазал?  smile 
Это ж ведь очень важно   smile 

Тогда поступаем так:

нужно узнать паралельны ли прямая и плоскость треугольника (перпендикулярность нормали к плоскости и направляющей прямой)

1) если прямая и плоскость трейгольника не паралельны, то ищем их точку пересечения (она одна) и последлвательно подставляем в уравнение сторон треугольника и "Проверить, принадлежит ли найденная точка стороне треугольника, она лежит, на ПРЯМОЙ, а нас интересует отрезок 
Проверка: координата Х найденной точки должна быть между X0 и X1 (элементарно, Ватсон)"

2) если паралельны, то нужно узнать находиться ли прямая в плоскости треугольника (взять любую точку прямой и подставить в уравнение плоскасти)
Если нет, то и пересечения нет, а если да, то см пост Kuvaldis.

Добавлено @ 14:27 
antoniobanderas, только не говори теперь, что тебе нужно пересечение со всем "телом" треугольника  smile 
Если так, то в 1) нужно составить сисему неравенств для этого треугольника и проверить найденную точку на удовлетворение ему

Добавлено @ 14:28 
 smile 
Цитата(ivashkanet @  7.10.2006,  14:25 Найти цитируемый пост)
на удовлетворение ему

 smile  smile  smile 
PM MAIL WWW ICQ   Вверх
antoniobanderas
Дата 7.10.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



а как найти саму точку пересечения прямой и плоскости?
PM MAIL   Вверх
ivashkanet
Дата 7.10.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Цитата(antoniobanderas @  7.10.2006,  14:34 Найти цитируемый пост)
а как найти саму точку пересечения прямой и плоскости?

Решить систему из уравнений прямой и плоскости (уравнение прямой в 3Д -- система двух уравнений плоскостей).
PM MAIL WWW ICQ   Вверх
Ashlander
Дата 23.11.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 19.9.2004

Репутация: нет
Всего: нет



Здравствуйте ...в продолжение темы, вопрос

дано отрезок (две точки) и плоскость (три точки)... необходимо найти точку пересечения.

один из вариантов решения _здесь_
учитывая, что отрезок все же не прямая и может не доставать до плоскости... то _здесь_

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

Решить систему из уравнений прямой и плоскости (уравнение прямой в 3Д -- система двух уравнений плоскостей).

либо в моем случае "взять" еще две точки для формирования этих двух пересекающихся плоскостей... 

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

спасибо

Это сообщение отредактировал(а) Ashlander - 23.11.2006, 17:49
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0773 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.