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

Кто ещё помнит математику?


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

Возникла тут у меня задачка. Нужно составить программку, в которой нужно будет считать точки пересечения сплайнов. Т.е. пересечения типа:

1. Сплайн - отрезок

2. Сплайн - дуга

3. Сплайн - сплайн

Коллеги, кто-то ещё помнит как это посчитать? Может у кого есть описание таких алгоритмов?

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


А сплайн имеет какую то формулу задания?

У меня имеются координаты точек, через которые проходит сплайн. :g: Мне и нужно узнать как по набору точек математически описывается сплайн. :wallbash: Систему из двух уравнений я ещё в состоянии решить.
Ссылка на сообщение
Поделиться на других сайтах

Мне и нужно узнать как по набору точек математически описывается сплайн.

не фик себе, а сплайн-то какой? их же куча видов...

м.б. вообще полигоном перебъёсси? если конечно точки идут плотно, а точность надо не 5 знаков.

да, а дугами/параболами аппроксимировать? ммм?

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

"не фик себе, а сплайн-то какой? их же куча видов...

м.б. вообще полигоном перебъёсси? если конечно точки идут плотно, а точность надо не 5 знаков.

да, а дугами/параболами аппроксимировать? "

По моему в этом то и заковыка - разобраться что это за сплайн.

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

Возникла тут у меня задачка. Нужно составить программку, в которой нужно будет считать точки пересечения сплайнов. Т.е. пересечения типа:

1. Сплайн - отрезок

2. Сплайн - дуга

3. Сплайн - сплайн

Коллеги, кто-то ещё помнит как это посчитать? Может у кого есть описание таких алгоритмов?

кстати, а почему бы на API к какому - нибудь КАДу это не сделать,ммм? а то и вообще макросом в твоём любимом МастерСАМе

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

кстати, а почему бы на API к какому - нибудь КАДу это не сделать,ммм? а то и вообще макросом в твоём любимом МастерСАМе

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

:g: Лет 12 назад делал я такую програмку, ещё на фортране, на VAXах. Надо было обрезать массив сплайнов, заданных набором точек, контуром, заданным таким же образом.

Алгоритм был такой:

Перебором точек определялись две ближайшие в обоих кривых. Затем по 4 соседним точкам кривой определялись промежуточные, т. е. участочек сплайна "загущался". Тоже со второй кривой. Итак в цикле, пока кратчайшее растояние между точками кривах не достигнет заданного предела. Это и будет точка обрезки. Конечно самое интересное - это как сплайн "загущался", но увы... Помню только что интерполяция кривой по 4 точкам не вызывала трудностей. Сейчас, конечно, я не помню ни аналитической геометрии, ни численных методов, учебника того из которого были уравнения взяты тоже давно нет...

Сейчас упорно искал исходник этой программы - не нашёл. :mad: Может найду ещё, но сильно сомневаюсь.

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

Нашёл текст подпрограмки "загущения" сплайна. Если ещё актуально, могу прислать.

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

imal

Нет, спасибо. Заказчик закапризничал, завыпендривался... :thumbdown: Ну его, пусть сам теперь.

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

Может быть Matcad или Matlab попробывать?

хорошая мысль, они ведь позволяют получить автономные приложения? а могут они исходники генерить на C/С++ или VBasic ?

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

В Mathematica через CForm удобно получать куски кода на C.

Задача описания кривых или поверхностей сплайнами неоднозначна, все определяется набором базисных функций.

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

Вообще решение подобных задач реализуется посредством

алгоритма расчета расстояния от точки до кривой итерациями

А этот алгоритм - поиск минимума - штатная задача в вычисл математике

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

Если кривые описываются параметрически, значит 2 неизвестных параметра,

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

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

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

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

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

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

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

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

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

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

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

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




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