У меня имеется массив из некоторого количества неупорядоченных точек 3-мерного пространства. Как их лучше расположить в массиве, чтобы было проще разбить фигуру на тетраэдры. И как вообще разбить её на тетраэдры?
Буду благодарен за помощь!
C/C++
Как разбить на тетраэдры фигуру, зная координаты её вершин? Алгоритм.
Какой арбуз?
>У меня имеется массив из некоторого количества неупорядоченных точек
>чтобы было проще разбить фигуру
Какую еще фигуру? У тебя же есть только неупорядоченные точки, откуда вдруг взялась фигура? Конечно, из них можно слепить каую-то фигуру, но для этого нужно эти точки для начала как-то упорядочить, иначе абсолютно неясно, по каким правилам должна строиться твоя "фигура".
После такового упорядочивания, если фигура выпуклая, достаточно взять какую-то точку внутри нее и соединить каждые 3 смежные точки из первого массива с ней. В случае невыпуклой фигуры может понадобиться несколько таких точек.
>чтобы было проще разбить фигуру
Какую еще фигуру? У тебя же есть только неупорядоченные точки, откуда вдруг взялась фигура? Конечно, из них можно слепить каую-то фигуру, но для этого нужно эти точки для начала как-то упорядочить, иначе абсолютно неясно, по каким правилам должна строиться твоя "фигура".
После такового упорядочивания, если фигура выпуклая, достаточно взять какую-то точку внутри нее и соединить каждые 3 смежные точки из первого массива с ней. В случае невыпуклой фигуры может понадобиться несколько таких точек.
Это задача триангуляции трёхмерной области. Область то хоть односвязная, или какая? А алгоритм в принципе мало чем отличается от триангуляции плоской области. Надо просто, например, разработать характеристическую функцию принадлежности точки области, для чего лучше всего искать сначала ближайшую вершину или ребро в двумерном случае, или ближайшую вершину, ребро или грань в трёхмерном. Если триангуляция должна быть (квази) оптимальной, то надо ещё внутренние точки регуляризовать определённым образом. Зачем всё это нужно - понятно? А как найти объём тела с помощью поверхностного интеграла и зачем в данном случае нужно его находить - понятно? Если ничего непонятно, тогда незачем здесь вообще такие вопросы задавать!. ))
короче эти точки в количестве 50 например штук нужно связать в тетраэдр у которого 5 вершин... Там могут быть пересечения. Так что делать нужно фигуру с максимально близкими вершинами. Есть точка отсчёта для трёхмерного пространства - грубо говоря угол - место соединения трёх плоскостей. От него строишь векторы до точек и группируешь их по дальности от этой точки нулевой точки по 5 штук.
Юрий К
для 2Д это sqrt(x2+y2) а для 3D поищи в сети сам - вектор три координаты и найденное расстояние для каждой точки
Похожие вопросы
- Написать программу на С++ определения площади пятиугольника с заданными координатами его вершин.
- Программа по C++. Определить координаты радиусы и центра сферы.
- Алгоритмы. Бинарная сортировка
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- В системе координат заданы 4 точки. Выяснить, в каких случаях они могут образовать квадрат.
- Уникальные координаты Си
- Алгоритмы STL, sort, первичный и вторичный ключи для сортировки.
- Помогите ускорить алгоритм
- Напишите алгоритм подсчета цифр. Помогите.
- Программирование, теория алгоритмов подсказать алгоритм действий.