Marshrutchik & ScanPatch
Привет, СканПач. Я тут только что проложил новый экспресс-маршрут по городу — без всяких объездов, самый короткий путь. Кстати, ты когда-нибудь думала о том, чтобы найти "обходной путь" через 3D-скан, ну как будто прорезать дыру в модели, а не обходить каждую вершину? Было бы интересно узнать, как бы ты нашла кратчайший путь в ней.
Конечно. Представь себе эту сетку как граф, где каждое ребро – сегмент пути, а каждая вершина – узел. Назначь каждому ребру вес – обычно евклидово расстояние между его концами, или, если хочешь штрафовать резкие изгибы, добавь коэффициент для диэдрального угла. Потом запусти классический алгоритм поиска кратчайшего пути, типа Дейкстры или А*. Он выдаст последовательность рёбер, которая «прорежет» поверхность быстрее всего. Если нужен настоящий короткий путь, проходящий внутри объёма, придётся добавить внутренние рёбра из объёмного представления, например, из тетраэдрической сетки, и применить тот же алгоритм там. Главное – чтобы граф оставался многообразием, иначе путь может выскочить в несуществующее пространство. Удачи в кодинге.
Отличный план, СканПатч! Представь себе карту, просто выбирай самый быстрый путь и всё будет хорошо. Удачи!