Цитата
Рекомендую рассмотреть следующий алгоритм – из двух кривых определяю самую длинную и разбиваю ее на точки с шагом (допуск для поверхностей, кривых), вторую кривую в свою очередь разбиваю на уже определенное количество точек в первой кривой, шаг точек уже не имеет значения (он будет меньше чем в первой кривой так как она короче). Если кривые замкнутые - беру первую точку в первой кривой и нахожу точку на второй кривой как кратчайшее расстояние между взятыми точками. Если кривые не замкнутые – беру первую точку на первой кривой и нахожу билжайшую точку (начала!) второй кривой, а дальше простой перебор следующих точек на одной и второй кривой. После нахождения прямых которые грубо говоря образовывают поверхность не составляет большого труда определить эквидистанту для струи с учетом конуса.
Этот алгоритм сомнителен.
1. Шаг разбиением кривой может быть задан недостаточно большой.
В этом случае, направление прямой будет выбираться с огромной погрешностью.
В общем случае, на одной кривой можно иметь достаточно грубое разбиение, а на другой - мелкое - с целью выбрать максимально точное направление прямой.
2. Если кривые замкнутые, то не факт, что первая точка первой кривой и ближайшая к ней из второй будут "хорошей" прямой.
Более того, можно даже привести пример, когда такая прямая пересечет поверхность.
3. Если кривые незамкнутые... Аналогичный аргумент - такая прямая может крайне плохо лежать на поверхности.
В остальном да.
Учет конусности - это школа (ну максимум - первый курс).
Правда и тут есть нюанс.
Можно показать (ну это почти очевидно), что теоретически точно конусным инструментом может быть обработана только развертывающая поверхность.
Если поверхность косая линейчатая, то теоретически точно конусным инструментом ее не обработать.
В моей программе используется "естественная" аппроксимация.
Для данной образующей поверхности рассчитывается "средняя" нормаль и сдвиг происходит вдоль нее.
Вообще вопрос идентификации и аппроксимации поверхностей линейчатыми - один из вопросов моей (надеюсь в скором времени успешно защищаемой) кандидатской.
Помимо описанного мной (правда не целиком) метода "в лоб" там еще предлагается 2-3 метода достаточно неприятных в реализации, но даже несмотря на их более глубокую теоретическую основу (если так можно сказать), "в лоб" работает лучше всех)
Цитата
К стати в SURFCAM у каждой поверхности есть так называемый вектор, который определяет сторону обработки этой поверхности для 5-ти осевой обработки.
Ну ясное дело - это так называемый вектор нормали, задающий ориентацию.
В моей программке он индуцирован геометрией детали (не задается).
Программу я эту добью...
Как только она начнет запускаться на других машинах - выложу сюда (конечно она очень сырая).
Вот пару скриншотов. На первом можно увидеть аппроксимацию и видно, что "хорошие" прямые не всегда соединяют ближайшие точки.
Второй скрин - настройка параметров врезания и перерезания.
Все очень сырое, так что просьба не пинать :).