Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2020, 15:37

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
 Заголовок сообщения: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 12:01 
Только пришел

Зарегистрирован: 02 фев 2020, 11:48
Сообщения: 7
Коллеги! Прошу помочь решить задачку по геометрии.
Имеется некая ломанная линия в виде последовательности точек (красная). Требуется построить плавную линию (синюю) так как показано на рисунке. Исходная линия всегда "впуклая", но может иметь небольшие "выбоины". Расстояние между точками может изменяться в небольших пределах. Количество исходных точек - около 300. Желательно обойтись без громоздких вычислений типа Безье. Должно работать в STM32f4xx, "думать" может долго. Прошу если не готовый код, то хотя бы идеи, в каком направлении двигаться. Спасибо.
Вложение:
arcs.png
arcs.png [ 48.69 Кб | Просмотров: 800 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 17:51 
Старожил
Аватара пользователя

Зарегистрирован: 18 фев 2014, 11:27
Сообщения: 302
Откуда: Москва
школьный курс геометрии, вписаный и описаныц треугольник в окружность, расчет по 3 точкам, уравнение окружности и т.д....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 19:06 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3459
гугл -> кубические сплайны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 19:22 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Да здесь и квадратных B-сплайнов за глаза...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 21:35 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 684
https://drive.google.com/open?id=1RezGyJFUR9PaWUeBkWXVvjS2fZ0BwN37

Пользуйся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 21:39 
Только пришел

Зарегистрирован: 02 фев 2020, 11:48
Сообщения: 7
Цитата:
школьный курс геометрии, вписаный и описаныц треугольник в окружность, расчет по 3 точкам, уравнение окружности и т.д....
Цитата:

Спасибо, очень поучительно! Только не работает почему-то. В том смысле не работает, что строит все неправильно. Дуга начинается в нужной точке, а заканчивается мимо следующей.
А вот сплайн действительно работает норм., этот вот использовал:
https://kluge.in-chemnitz.de/opensource/spline/
Только теперь другая проблема. Я его опробовал в компе, а чтобы прикрутить его к STM, пришлось в проекте (IAR) C сменить на C++. Проект компилится, но при запуске в дебагере, работает до того момента, когда разрешается первое прерывание, и виснет. (пока был С, было все ок) Надеюсь, что это просто, но че-та пока не получается это исправить. Что посоветуете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 21:59 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Зачем цепепе? B-сплайны в сях нормально и шустро вычисляются. Только один косяк - нужны флоаты. Но у тебя они есть, так что ОК.
// а на кой хрен на МК сплайны считать? Летунство что ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 22:29 
Только пришел

Зарегистрирован: 02 фев 2020, 11:48
Сообщения: 7
Цитата:
Зачем цепепе? B-сплайны в сях нормально и шустро вычисляются. Только один косяк - нужны флоаты. Но у тебя они есть, так что ОК.

Ну, там используются классы, я че-та думал, это только С++. Надо попробовать скомпилить в С, спасибо!

Цитата:
// а на кой хрен на МК сплайны считать? Летунство что ли?

Мне так удобнее экспериментировать. Данные скидываются в .csv файл, и excell сразу его открывает. На графиках все видно, что оно там насчитало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 02 фев 2020, 23:18 
Только пришел

Зарегистрирован: 02 фев 2020, 11:48
Сообщения: 7
В С не компилится. Ругается что нет кучи хидеров. Когда их начинаешь ему подсовывать из VC папки, то недостающих файлов становится все больше. Причем в С++ этой всей ругани нет, а все находится само.
А все-таки, почему IAR фокусничает при переходе с С на С++ ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 00:03 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Ядрена вошь! В интернетах 100500 реализаций B-сплайнов. И надо же было найти самую говеную…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 01:06 
Старожил

Зарегистрирован: 22 июн 2010, 21:53
Сообщения: 1153
Откуда: Brussels
Почему бы не реализовать самому?
Или взять с гитхаба tinyspline на чистом ansi c....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 18:27 
Только пришел

Зарегистрирован: 02 фев 2020, 11:48
Сообщения: 7
Цитата:
Ядрена вошь! В интернетах 100500 реализаций B-сплайнов. И надо же было найти самую говеную…

Можно вас попросить, уважаемый Eddy_Em, не могли бы вы объяснить буквально в 2-х словах, в чем именно состоит говеность? Ну,типа чтобы в будущем уберечь людей от бесполезной трачи времени.

К стати, вот и результат:
Вложение:
spline-m.jpg
spline-m.jpg [ 196.48 Кб | Просмотров: 624 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 18:47 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4729
Откуда: КЧР, поселок Нижний Архыз
Цитата:
в чем именно состоит говеность?

С++ вместо С.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 19:29 
Только пришел

Зарегистрирован: 02 фев 2020, 11:48
Сообщения: 7
Цитата:
С++ вместо С.

С этим трудно не согласиться. Но ведь IAR поддерживает С++, теоретически все должно работать.

В моем случае, я вижу что в памяти либо нет таблицы прерываний, либо система не знает где она расположена. После разрешения первого (по порядку инициализации системы) прерывания (TIMER14), программа в обработчик не заходит, а вместо этого виснет. Дебагер показывает на startup_stm32f4xx.s :
Вложение:
hungup.jpg
hungup.jpg [ 89.44 Кб | Просмотров: 609 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 19:54 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1266
dersuuzalah писал(а):
После разрешения первого (по порядку инициализации системы) прерывания (TIMER14), программа в обработчик не заходит, а вместо этого виснет.

Если проект на плюсах, то добавь extern "C" перед обработчиками прерываний.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 22:47 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1549
dersuuzalah писал(а):
А все-таки, почему IAR фокусничает при переходе с С на С++ ?
В С++ для обеспечения работы механизма перегрузки функций при компиляции к имени функции добавляется некоторая информация, описывающая аргументы функции. А так как стартап написан или на asm, или на C, то в нём обработчики прерываний определены без этой добавки. То есть, имя вашего обработчика прерываний в коде не совпало с таковым в стартапе и линкер подставил вместо обработчика прерываний заглушку, в которой код и повис при первом же прерывании. И это не только IAR так делает, а любой компилятор С++. Вариантов решения проблемы два: написать стартап на С++ или в коде перед обработчиком прерываний поставить extern "C". Исходя из личного опыта, рекомендую второй способ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерполяция, нужна помощь
СообщениеДобавлено: 03 фев 2020, 23:48 
Только пришел

Зарегистрирован: 02 фев 2020, 11:48
Сообщения: 7
Reflector, VladislavS, спасибо! Заработало! Придется еще немного повозиться с некоторыми вещами, но теперь понятно в чем была проблема.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB