26.05.2019, 01:33 [+3 UTC]
в нашей команде: 3 644 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.75 (18.05.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
25.05.2019, 11:20

Последний вопрос:
26.05.2019, 00:52
Всего: 149693

Последний ответ:
25.05.2019, 14:47
Всего: 258521

Последняя рассылка:
25.05.2019, 19:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
13.11.2009, 17:40 »
popovaia
Спасибо! Просто спасли! [вопрос № 174180, ответ № 256452]
09.02.2019, 13:25 »
dar777
Это самое лучшее решение! [вопрос № 194587, ответ № 277414]

РАЗДЕЛ • Математика

Консультации и решение задач по алгебре, геометрии, анализу, дискретной математике.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Гордиенко Андрей Владимирович
Статус: Советник
Рейтинг: 7753
kovalenina
Статус: Студент
Рейтинг: 2965
Михаил Александров
Статус: Профессионал
Рейтинг: 975

Перейти к консультации №:
 

Консультация онлайн # 67288
Раздел: • Математика
Автор вопроса: Лука
Отправлена: 16.12.2006, 20:31
Поступило ответов: 1

Мир вам, уважаемые эксперты!
Быть может, вы, со свежим взглядом, подскажете мне решение данной проблемы...
Имеется произвольный треугольник в пространстве, заданный координатами своих вершин. Имеется также куб со стороной dx, расположенный вдоль осей координат.
Необходимо определить пересекаются они, или нет.
Беда в том, что сделать это нужно быстро, так как много треугольников и много кубов (это программа - генератор сеток).
Проверять наличие пересечения треугольника с каждым из 16 ребер - слишком долго. Перебирать точки, лежащие в треугольнике с мелким шагом - тоже. А больше мне ничего на ум не идет.
Может есть какое неравенство, определяющее точки, лежащие в треугольнике ?
Короче, буду благодарен любой информации по теме.
С уважением, Лука.

Состояние: Консультация закрыта

Ответ # 132222 от ADSota

Здравствуйте, Лука!

А зачем именно кубы нужны? Можно проверять точки пересечения сторон треугольников с плоскостями, перпендикулярными осям координат. Что очень легко спроецировав сторону треугольника (получится отрезок): например для оси X: координата X одного конца будет меньше координаты х поверхности, а другая больше... Если очень хочется, можно при нахождении точки пересечения с плоскостью, определить, гранью какого куба является данная плоскость: Если отрезок пересекаеться с тремя плоскостями (по всем осям Х,У,Z) то он и будет пересекаться с кубом, у которого большее расстояние от центра осей координат. Тут опять идет перебор, но рассчетов значительно меньше.


Консультировал: ADSota
Дата отправки: 18.12.2006, 11:08

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 67288
Сухомлин Кирилл Владимирович

# 1

= общий = | 21.12.2006, 00:26

Долго добирался до вопросов... Пожалуй, наиболее быстрый способ такой: По вершинам треугольника вычисляются коэффициенты уравнния плоскости, в которой он лежит: Ax+By+Cz+D=0 Далее используете простую функцию f(x,y,z) = Ax+By+Cz+D Если все вершины куба лежат по одну сторону плосоксти треугольника, то и значение она будет принимать для всех — одного знака. Если принимает значения разных знаков, то — пересекает.

Luka

# 2

= общий = | 21.12.2006, 11:39

Плоскость - да пересекает. А треугольник может и не пересекать. Повторюсь: речь о ЧАСТИ плоскости, заключенной в пределах треугольника.

Сухомлин Кирилл Владимирович

# 3

= общий = | 21.12.2006, 12:03

Ок. Делаете преобразование 3-хмерных координат в 2-мерные (на плоскости, в которой лежит треугольник). И делаете проверку (одного/разного знака) только для тех точек, чьи проекции на плоскость лежат внутри треугольника. Это уже не совсем точно, могут быть ошибки. Зато быстро. Как проверить, что точка лежит внутри треугльника: Либо также смотреть на знак векторных произведений: AB*AD, BC*BD, CA*CD, где ABC — вершины треугольника, D — проверяемая точка. Либо считать площади треугольников: SABC = SABD + SADC + SDBC <=> точка лежит внутри треугольника SABC = [1/2]*|(XB-XA)(YC-YA)-(XC-XA)(YB-YA)|

Сухомлин Кирилл Владимирович

# 4

= общий = | 21.12.2006, 12:07

Итого:

  1. Если не все проекции точек лежат внутри треуглоьника, то можно просчитывать для всех ребер (которых, кстати, у куба 12, а не 16).
  2. Если у всех проекции лежат вне треуглоьника — не пересекает.
  3. Если у всех — внутри треугольника, смотрим с какой стороны от плоскости они лежат.

Luka

# 5

= общий = | 21.12.2006, 14:44

Боюсь, преобразование координат - не самая удачная мысль. Там ведь, как я помню, идут уже тригонометрические функции... а это очень плохо, так как долго. Да и узкие треугольники будут проскакивать "на раз". Тем не менее, спасибо за идеи.

 

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.33274 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.75 от 18.05.2019
Версия JS: 1.33 | Версия CSS: 3.35