Поверхность 3D отстоящая от заданной
От: YaTL Россия  
Дата: 02.07.18 21:07
Оценка:
Доброго времени суток...

Задача: есть поверхность — координаты точек, треугольники.

Требуется: найти поверхность, отстоящую от данной на заданное расстояние. Не оболочку конечно — только смещение, но и не сдвиг по вектору (потому что расстояние будет неравномерным)

Интересует даже не столько сам алгоритм, сколько сроки решения в виде реализации в коде. Приблизительно...

Какие мнения?
Re: Поверхность 3D отстоящая от заданной
От: andyp  
Дата: 02.07.18 21:41
Оценка:
Здравствуйте, YaTL, Вы писали:

YTL>Задача: есть поверхность — координаты точек, треугольники.


YTL>Требуется: найти поверхность, отстоящую от данной на заданное расстояние. Не оболочку конечно — только смещение, но и не сдвиг по вектору (потому что расстояние будет неравномерным)


Если поверхность выпуклая, то для каждых трех точек каждого треугольника находишь
1. уравнение плоскости (Ax+By+Cz+D = 0) — решение системы лин уравнений 3x3
2. уравнение плоскости, сдвинутой в направлении нормали на нужное расстояние d: (Ax + By + Cz + D + d = 0)

Ищешь пересечения полученных в п2 плоскостей, чтобы найти ребра
Ищешь пересечения ребер чтобы найти вершины сдвинутой поверхности

YTL>Интересует даже не столько сам алгоритм, сколько сроки решения в виде реализации в коде. Приблизительно...

YTL>Какие мнения?

Писать немного.
Re[2]: Поверхность 3D отстоящая от заданной
От: YaTL Россия  
Дата: 02.07.18 22:03
Оценка:
Здравствуйте, andyp, Вы писали:

A>Здравствуйте, YaTL, Вы писали:


YTL>>Задача: есть поверхность — координаты точек, треугольники.


YTL>>Требуется: найти поверхность, отстоящую от данной на заданное расстояние. Не оболочку конечно — только смещение, но и не сдвиг по вектору (потому что расстояние будет неравномерным)


A>Если поверхность выпуклая, то для каждых трех точек каждого треугольника находишь

A>1. уравнение плоскости (Ax+By+Cz+D = 0) — решение системы лин уравнений 3x3
A>2. уравнение плоскости, сдвинутой в направлении нормали на нужное расстояние d: (Ax + By + Cz + D + d = 0)

A>Ищешь пересечения полученных в п2 плоскостей, чтобы найти ребра

A>Ищешь пересечения ребер чтобы найти вершины сдвинутой поверхности

YTL>>Интересует даже не столько сам алгоритм, сколько сроки решения в виде реализации в коде. Приблизительно...

YTL>>Какие мнения?

A>Писать немного.


Такой подход не гарантирует что результирующая поверхность будет отстоять на заданное расстояние.
Ребро — пересечение плоскостей — будет отстоять на заданное расстояние лишь от 2-х треугольников исходной поверхности.
Re[3]: Поверхность 3D отстоящая от заданной
От: andyp  
Дата: 02.07.18 22:13
Оценка:
Здравствуйте, YaTL, Вы писали:

YTL>Такой подход не гарантирует что результирующая поверхность будет отстоять на заданное расстояние.

YTL>Ребро — пересечение плоскостей — будет отстоять на заданное расстояние лишь от 2-х треугольников исходной поверхности.

Все грани будут отстоять на заданное расстояние от исходных граней. Вершины разъедутся по новым граням. (Представь куб внутри куба, вершины "уедут" больше чем грани (по линии из центра массы куба до старой вершины))Это ли не то что надо?
Re[4]: Поверхность 3D отстоящая от заданной
От: YaTL Россия  
Дата: 02.07.18 22:31
Оценка:
Здравствуйте, andyp, Вы писали:

A>Здравствуйте, YaTL, Вы писали:


YTL>>Такой подход не гарантирует что результирующая поверхность будет отстоять на заданное расстояние.

YTL>>Ребро — пересечение плоскостей — будет отстоять на заданное расстояние лишь от 2-х треугольников исходной поверхности.

A>Все грани будут отстоять на заданное расстояние от исходных граней. Вершины разъедутся по новым граням. (Представь куб внутри куба, вершины "уедут" больше чем грани (по линии из центра массы куба до старой вершины))Это ли не то что надо?


Антипример — усеченный триангулированный конус и поверхность отстоящая внутрь него на расстояние большее чем диаметр отсеченной окружности.
Отредактировано 02.07.2018 22:32 YaTL . Предыдущая версия .
Re: Поверхность 3D отстоящая от заданной
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.07.18 22:48
Оценка:
Здравствуйте, YaTL, Вы писали:


YTL>Интересует даже не столько сам алгоритм, сколько сроки решения в виде реализации в коде. Приблизительно...


YTL>Какие мнения?


Решение для эквидистантных контуров на плоскости, для контура заданного отрезками и окружностями, я писал несколько месяцев. Правда, не фулл-тайм, а по вечерам
Маньяк Робокряк колесит по городу
Re: Поверхность 3D отстоящая от заданной
От: mbait  
Дата: 02.07.18 22:55
Оценка:
Здравствуйте, YaTL, Вы писали:

YTL>Доброго времени суток...


YTL>Задача: есть поверхность — координаты точек, треугольники.


YTL>Требуется: найти поверхность, отстоящую от данной на заданное расстояние. Не оболочку конечно — только смещение, но и не сдвиг по вектору (потому что расстояние будет неравномерным)


YTL>Интересует даже не столько сам алгоритм, сколько сроки решения в виде реализации в коде. Приблизительно...


YTL>Какие мнения?


Если не требуется абсолютная точность, то можно сгенерировать поверхность методом марширующих кубиков, используя расстояние до исходной поверхности как целевую функцию алгоритма. Размером "кубика" регулируется степень детализации.
Re[5]: Поверхность 3D отстоящая от заданной
От: andyp  
Дата: 03.07.18 09:22
Оценка:
Здравствуйте, YaTL, Вы писали:

YTL>Антипример — усеченный триангулированный конус и поверхность отстоящая внутрь него на расстояние большее чем диаметр отсеченной окружности.


Не очень понял, но с "отстоянием внутрь" все плохо даже для выпуклых. Ну и ты бы точнее условия задачи поставил. Если нужно сохранить расстояние до гладкой поверхности в выбранных точках, то тогда информации о нормали в этих точках не хватает. Если речь уже о многограннике идет, то, очевидно, в вершинах и ребрах нормаль не определена (поверхность не гладкая).
Re: Поверхность 3D отстоящая от заданной
От: antropolog  
Дата: 07.07.18 00:00
Оценка:
Здравствуйте, YaTL, Вы писали:

YTL>Какие мнения?


Диаграмма Вороного?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.