господи, а накрутили то ))). вот на пальцах, как это делается на практике:
1. апроксимировать дуговые сегменты в исходной полилинии -> на выходе массив точек, упорядоченный по увеличению длинны полилинии от начала до конца (включает в себя узловые точки и точки, добавленные в результате аппроксимации договых сегментов)
2. находим точки пересечения полилинии и сторон треугольников (без использования Z, только XY)
2.1. если по простому, то создаем полилинию [например, AcDbPolyline] из точек пункта 1 (можно без добавления в БД)
2.2. запускаем цикл на выдирание двух точек из треугольника (можно сразу сформировать три линии, чтоб было проще). это будут отрезки[AcDbLine] (так же создаем без добавления в БД), с которыми нужно проверить пересечение без удлинений объектов [intersectWith] из 2.1. если оно есть, полученную точку вставляем согласно длины до точки от начала в массив точек из пункта 1. и вставляем только в том случае, если еще нет точки с приблизительно такими координатами (при пересечении внутри сетки будет как минимум 2 одинаковых точки пересечения, т.к. два соседних треугольника имеют общую грань, так что перед вставкой проверяем, нет ли уже в массиве точки с длиной +/-погрешность).
3. всё, у нас есть в 2D полный набор точек, которым просто пользуясь базовыми знаниями геометрии нужно прицепить координату Z (в илдеале, пишется функция, где на вход XY точка и сетка, на выход координата Z)
PS: да, чтоб не заниматься постоянной ерундой с поиском длины от начала для выбранной точки - сделай это на первом этапе и запихни длину в координату Z. и еще. всё, что мы там насоздавали без добавления в БД нужно за собой поудалять.
чертежи для построения это топографические планы с пикетами, вряд ли кто-то больше на измеряет.
не хочется огорчать, но если человеку на спину повесить GPS ранец и отправить гулять на пару часиков по карьеру для съемки бровок ))), то точек будет значительно больше чем 32К.
Данных алгоритм периодически либо не захватывает все предложенные вершины, либо строит модель с пересекающимися ребрами.
значит в помощь википендия ))) там есть основные алгоритмы, правда нет реализации ))). хотя скорей всего просто что-то недопереводил с C#, т.к. там реализация простейшего алгоритма, который плохо работает только при большом перепаде Z. в любом случае реализаций триангуляций куча в сети и на разных языках.
а вот сам алгоритм взял первый который нашел, т.к. про триангуляцию ничего не знаю.
а вот это уже настораживает. как можно найти правильное решение в вопросе, о котором ничего не знаешь? если в задаче стоит построить сетку и найти путь по ней используя плановую проекцию, то "что такое триангуляция" - придется выучить. правда, если сетку дают уже готовую, то голову можно и не забивать.