Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/55: Рейтинг темы: голосов - 55, средняя оценка - 4.87
8 / 8 / 0
Регистрация: 16.07.2013
Сообщений: 149

Принадлежность точки треугольнику в трехмерном пространстве

24.09.2018, 12:33. Показов 10653. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Есть треугольник с координатами (x1,y1,z1),(x2,y2,z2),(x3,y3,z3).
Есть точка с координатами (x,y,z), которая принадлежит той же плоскости что и треугольник.
Есть вектор нормали плоскости n, которой принадлежат и треугольник и точка.

Нужно определить принадлежит ли точка треугольнику векторным методом (так как он самый быстрый).
Для двумерного случая я нагуглил как, но расширить на трехмерный не получилось.

Добавлено через 42 минуты
Update:
Нашел кое-что:
Проверить знаки у трёх скалярных произведений нормали плоскости на векторное призведение двух векторов, которые образуют проверяемая точка и две точки на стороне треугольника. Если все три знака совпадают - значит точка внутри трегольника.
Не могу понять как это выразить в формулах. Прошу помочь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2018, 12:33
Ответы с готовыми решениями:

Поворот точки вокруг другой точки в трехмерном пространстве
Есть точка A с координатами . Есть точка B -центр поворота . Я поворачиваю A на 90 градусов по часовой стрелке вокруг B по оси (Z)....

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

принадлежность точки треугольнику
как определить принадлежность точки треугольнику?Если с векторами,то объясните получше.Венктора не знаю. Добавлено через 17 секунд ...

8
115 / 99 / 30
Регистрация: 15.07.2015
Сообщений: 262
24.09.2018, 12:48
Лучший ответ Сообщение было отмечено MikeNew как решение

Решение

треугольник ABC, точка М, нормаль n. Если знаки смешанных произведений векторов [n,MA,MB] ,[n,MA,MC], [n,MB,MC] совпадают, то точка внутри треугольника.
1
8 / 8 / 0
Регистрация: 16.07.2013
Сообщений: 149
25.09.2018, 08:59  [ТС]
Цитата Сообщение от EasyHelp SU Посмотреть сообщение
треугольник ABC, точка М, нормаль n. Если знаки смешанных произведений векторов [n,MA,MB] ,[n,MA,MC], [n,MB,MC] совпадают, то точка внутри треугольника.
Не работает, сделал по этому алгоритму простейший случай и проверил:

C Скопировано
1
2
3
4
5
6
7
8
9
10
n(0,1,0)
A(205, 34,  22), B(205, 34, 23), C(206,34,23)
М(205.75, 34, 22.25)
MA = М - A = (0.75, 0, 0.25)
MB = M - B = (0.75, 0, -0.75);
MC = M - C = (-0.25, 0, -0.75);
 
[n,MA,MB] = 0.75;
[n,MA,MC] = 0.5;
[n,MB,MC] = 0.75;
Знаки смешанных произведений совпадают, а точка лежит вне треугольника.
Вопрос остается открытым.
Или я где-то неправильно посчитал?
0
115 / 99 / 30
Регистрация: 15.07.2015
Сообщений: 262
25.09.2018, 09:07
Вот это вызывает сомнения:
Проверить знаки у трёх скалярных произведений нормали плоскости на векторное призведение двух векторов, которые образуют проверяемая точка и две точки на стороне треугольника. Если все три знака совпадают - значит точка внутри трегольника.
. Знак смешанного произведения меняется при перестановке любых двух слагаемых. [n,MA,MB]=-[n,MB,MA]. А по алгоритму не сказано, в каком порядке брать вектора из точки.
1
8 / 8 / 0
Регистрация: 16.07.2013
Сообщений: 149
25.09.2018, 12:36  [ТС]
Цитата Сообщение от EasyHelp SU Посмотреть сообщение
А по алгоритму не сказано, в каком порядке брать вектора из точки.
Если не сложно пожалуйста поясните, что имеется в виду по "порядком"?

Добавлено через 6 минут
Update:
Разобрался, все заработало, большое спасибо за помощь!

Если кому вдруг понадобится:
C Скопировано
1
2
3
[n,MA,MB] = 0.75;
[n,MB,MC] = 0.5;
[n,MC,MA] = 0.75;
Добавлено через 3 часа 5 минут
Что-то я поторопился.
Все-таки не работает, хотя пробовал самые разные комбинации. Вблизи к краям все равно неправильно определяет.
0
482 / 270 / 57
Регистрация: 08.10.2015
Сообщений: 1,165
25.09.2018, 14:56
MikeNew, все точки должны обходиться в одном направлении относительно нормали, например по часовой стрелке. Тогда все должно работать.
1
8 / 8 / 0
Регистрация: 16.07.2013
Сообщений: 149
25.09.2018, 15:54  [ТС]
Цитата Сообщение от САлександр Посмотреть сообщение
MikeNew, все точки должны обходиться в одном направлении относительно нормали, например по часовой стрелке. Тогда все должно работать.
Должно, но не работает. Все по правилам сделал:

C Скопировано
1
2
3
4
5
6
7
MA = М - A 
MB = M - B
MC = M - C
 
k = dot(N, cross(MA,MB);
m = dot(N, cross(MB,MC);
n = dot(N, cross(MC,MA);
Если k,m,n одного знака или равны нуля - точка принадлежит треугольнику.

Этот алгоритм должен работать, но не работает. Я даже на всякий случай на онлайн-калькуляторе проверял - думал может я неправильно смешанное произведение считаю.
Нормаль направлена правильно, на всякий случай даже пробовал ее знак менять.
Миниатюры
Принадлежность точки треугольнику в трехмерном пространстве  
0
482 / 270 / 57
Регистрация: 08.10.2015
Сообщений: 1,165
25.09.2018, 22:14
MikeNew,
Посмотрим 2 случая:
1. Проекция токи на плоскость треугольника (плоскость в которой лежит треугольник) не попадает в треугольник.
2. Проекция токи на плоскость треугольника попадает в треугольник.
Приведенное Вами решение - решение для 1. В случае 2 надо еще проверить на попадание точки на саму плоскость. В общем случае - сначала Ваше решение, потом, если знаки одинаковы, то проверка на равенство нулю, например произведения https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{n}\times(\vec{MA}\times \vec{MB})

Добавлено через 11 минут
Или, что проще, для случая 2 проверить на равенство нулю, например произведение https://www.cyberforum.ru/cgi-bin/latex.cgi?\vec{n}\cdot\vec{MA}

Добавлено через 10 минут
Только сейчас заметил, что
Цитата Сообщение от MikeNew Посмотреть сообщение
Есть точка с координатами (x,y,z), которая принадлежит той же плоскости что и треугольник.
И опять я плохо прочитал условие!
Тогда - просто Ваше решение.
1
8 / 8 / 0
Регистрация: 16.07.2013
Сообщений: 149
26.09.2018, 12:18  [ТС]
Существуют онлайн-калькуляторы или просто сторонние программы для проверки таких случаев? На попадание точки в треугольник в трехмерных координатах?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2018, 12:18
Помогаю со студенческими работами здесь

Принадлежность точки треугольнику
Нужно сделать программу, в которой при 3х кликах на форму (в разных местах) эти 3 точки соединялись в треугольник (примерно так как в...

Принадлежность точки к треугольнику
помогите подредактировать программу для определения принадлежности точки (x,y) заданной фигуре. предполагается что a>0 и b>0. ...

Принадлежность точки треугольнику
Доброго дня Сделал, используя формулу плоскости по двум точкам. Но либо не допонял что-то, либо не так сделал что-то. Мне попались...

Определить принадлежность точки треугольнику
begin writeln ('Введіть x1,y1,x2,y2,x3,y3'); readln (x1,y1,x2,y2,x3,y3); a:=sqrt(sqr(x2-x1)+sqr(y1-y2)); ...

Определить принадлежность точки треугольнику
В декартовой системе координат на плоскости заданы координаты вершин треугольника и ещё одной точки. Определить, принадлежит ли эта точка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер