Перейти к публикации

Аппроксимация сплайнов


Рекомендованные сообщения

Есть 2 сплайна. Допустим первый общей длиной в 1000мм, второй в 10 мм. Есть штатные средства CAD программы, позволяющие расставить на протяжении сплайна точки.

Цель: аппроксимировать сплайн прямыми отрезками по найденным точкам.

Вопрос: каким образом можно хоть примерно рассчитать необходимое количество точек для этих двух сплайнов, для каждого своё? Ведь если задать изначальное 500 шт., то для первого в итоге можем получить более "гладкую" общую траекторию, а для второго кучу ненужных.

 


Расстояние между точками выбирается исходя из количества. По пути уменьшаясь или увеличиваясь.

Ссылка на сообщение
Поделиться на других сайтах


Если хоть примерно, то, как вариант, - простой критерий - сумма прямых/длину гладкого. На основе этого процента судить об избыточности.

Ссылка на сообщение
Поделиться на других сайтах
Цель: аппроксимировать сплайн прямыми отрезками по найденным точкам.

Это не цель. Цель -- это, к примеру, отдать DXF в производство на бестолковый станок, который не аппроксимирует сплайны даже дугами..

 

Вопрос: каким образом можно хоть примерно рассчитать необходимое количество точек для этих двух сплайнов, для каждого своё? Ведь если задать изначальное 500 шт., то для первого в итоге можем получить более "гладкую" общую траекторию, а для второго кучу ненужных.

ЗАЧИЕМ?  Зачем рассчитывать количество точек?

 

Что бы сделал дядя Вова:

Раскидал бы точки в зависимости от кривизны сплайна в данном месте. И чтобы с алгоритмом не заморачиваться, замешил бы в CAE (там уже есть алгоритм адаптации размера элемента к кривизне поверхности/ребра, в качестве критерия можно задать максимальную величину угла между соседними линиями), даже солид это умеить! Потом экспортировать сетку в текстовый файл и вытянуть нужные точки. Делoff..

Ссылка на сообщение
Поделиться на других сайтах
Делoff..

 Такими делами устлана дорога в ... премию))) Открыть DXF с полилинией, заменить VERTEX на LINE = премия.

Свою же цель, я озвучил в первом сообщении.

 

 

замешил бы в CAE

ещё лучше. Мож тогда сразу в маткад? Там ещё елозить этим сплайном...

 

 

 

Подсказал тут один человек методу математическую. Замер угла сектора между соседними 3-мя точками. Вроде красиво выйдет.

штатные средства CAD программы
 они, кстати, раскидывают точки по U V  координатам, оттого и неравномерное распределение по длине.
Ссылка на сообщение
Поделиться на других сайтах

Что служит критерием? Точность аппроксимации?

 

Тогда можно так:

Строим отрезок по двум точкам на сплайне и определяем расстояние от середины отрезка до сплайна - высоту дуги сплайна.

Сначала берем отрезок минимальной длины и увеличиваем его до тех пор, пока высота не превысит заданную точность.

Ссылка на сообщение
Поделиться на других сайтах
Сначала берем отрезок минимальной длины и увеличиваем его до тех пор, пока высота не превысит заданную точность.

Только можно попасть с этим методом, если сплайн на протяжении отрезка кривизну изменит  :rolleyes:

Ссылка на сообщение
Поделиться на других сайтах
Цель -- это, к примеру, отдать DXF в производство на бестолковый станок,

Если это нужно, то САМ-системе обычно можно задать точность, кол-во точек особо не влияет на результат, в разумных пределах, естественно. 

Ссылка на сообщение
Поделиться на других сайтах

@@IGU, я думал как ещё сделать: берём скажем 10 000 точек, строим их математически (массив по кривой). Далее, перебором по 3 точки строим окружность (а точнее вычисляем). Вычисляем угол - он будет точность :smile: . В смысле его мы эфемерно зададим в настройках, доступных для пользователя. Далее, пробегаясь по массиву, отсеиваем те, что уйдут от некоего предела +=0,5 градуса к примеру.

 

и так сделать для всего массива. Всё делается в оперативке в коде, построения - только то что получится после отсеивания.

Ссылка на сообщение
Поделиться на других сайтах

Количество точек-неправильный посыл. Задача обычно решается итегрированием: диапазон измерения постоянно уменьшается и результат сравниваетя с предыдущим до достижения равенства с предыдущим, равенства в пределах заданной вами точности. Количество измерений при этом(т.е. количество точек) зависит от степени кривизны.

Ссылка на сообщение
Поделиться на других сайтах
результат сравниваетя с предыдущим до достижения равенства с предыдущим
 Это если действовать методом расстояния от прямой до сплайна? А иначе на пологом участке сплайна может оказаться 10 000 прямых))
Ссылка на сообщение
Поделиться на других сайтах

На пологом будет 2-3 точки. И расчет произойдет быстрее.

Сначала заменяете сплайн на 2 точки,сравниваете,потом на 3 и так далее....

Ссылка на сообщение
Поделиться на других сайтах

диапазон измерения постоянно уменьшается и результат сравниваетя с предыдущим

 

 

Т.е. картинка будет такая?

Ссылка на сообщение
Поделиться на других сайтах

Эт неправильно,видимо считаете от начала в конец? Первое приближение-вся кривая заменяется одним отрезком по крайним точкам,затем делим кривую посередине,затем...ну вы поняли,мужики.:-)

Количество точек-это и буде результат.

А вот не помню, в кадах можно сразу массив точек сплайна получить?

Вроде в автогаде было...

Ссылка на сообщение
Поделиться на других сайтах

это я мышкой навтыкал.

ну,втыкая,ты видимо о чем-то думал,начать с одного конца?
Ссылка на сообщение
Поделиться на других сайтах
вся кривая заменяется одним отрезком по крайним точкам

 прямым или сплайном?  :smile:  отрезком... ТЫ сам себе представил что именно ТЫ говоришь? Разбить кривую - это уже аппроксимация. Дальнейшее разбиение - дальнейшая аппроксимация. ТЫ картинку покажи, а то далёк я от ТВОИХ мыслей

Изменено пользователем streamdown
Изменено на более фамильярное обращение)))
Ссылка на сообщение
Поделиться на других сайтах

Прямым отрезком канешна.

Вообще про апроксимацию куча форумов в сети.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...