24.01.2019, 06:43 [+3 UTC]
в нашей команде: 3 353 чел. | участники онлайн: 8 (рекорд: 20)

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

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

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.66 (22.01.2019)
JS-v.1.31 | CSS-v.3.35

Общие новости:
01.01.2019, 13:54

Форум:
22.01.2019, 18:16

Последний вопрос:
23.01.2019, 21:30
Всего: 148557

Последний ответ:
24.01.2019, 06:32
Всего: 257637

Последняя рассылка:
23.01.2019, 23:15

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

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

Наша кнопка:

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

Отзывы о нас:
13.01.2012, 21:58 »
luba tixomirova
Работа выполнена в лучшем качестве, вы просто превзошли мои ожидая , выражаю огромную благодарность и постараюсь в ближайшее время пополнить Ваш кошелек. [вопрос № 185116, ответ № 269569]
28.06.2010, 18:28 »
Мироненко Николай Николаевич
Спасибо, разобрался smile [вопрос № 179331, ответ № 262310]
06.05.2016, 00:57 »
region41
Не смог найти в сети доступного объяснения на свой вопрос, Игорь Витальевич разложил все по полочкам. Большое спасибо! [вопрос № 189297, ответ № 273748]

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

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

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

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

Гордиенко Андрей Владимирович
Статус: Модератор
Рейтинг: 6805
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 664
epimkin
Статус: Практикант
Рейтинг: 519

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

Консультация онлайн # 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.17609 сек.

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