Тема: read DXF

У кого нибудь есть открытый код по чтению DXF? по барабану на каком языке, если не жалко - поделитесь, и еще в с++ есть функция построения кривых безье - это случайно не акадовские сплайны, и если нет не знает ли кто как математически описываются сплайны?

Re: read DXF

Заметил, что иногда в разных конф. по CAD и CAM спрашивают про сплайны.
.
В теории все просто: сплайн -  непрерывная гладкая функция, интерполирующая на отрезке [a,b] искомую функцию f(x), заданную  набором n=0,1,2... точек X,Y. Наиболее распространены кубические сплайны S(x): кривые, имеющие непрерывные производные до второго порядка включительно. Т.о. вторая производная представляет собою линейный отрезок между X[i-1],X[i]:
.
S"[i-1,i]=M[i-1]*(x[i]-x)/h[i]+M[i]*(x-x[i-1])/h[i], где h[i]=y[i]-X[i-1]
.
После двойного интегрирования и условий Si=Yi получаем уравнение для сплайнов:
.
h6=6.0*h[i];
h62=h[i]*h[i]/6.0;
xi=x[i]-x1;
xi1=x1-x[i-1];
xi3=xi*xi*xi/h6;
xi13=xi1*xi1*xi1/h6;
.
и само уравнение:
.
S(x)=( Ms[i-1]*xi3 + Ms[i]*xi13 +  (y[i-1]-Ms[i-1]*h62)*xi/h[i]+(y[i]-Ms[i]*h62)*xi1/h[i] )
.
Задавая краевые условия для Mo и Mn и условие непрерывности в точках первой производной S'[Xi]=S'[Xi+1], получим треугольную матрицу для решения коэф. М.
.
Если внимательно посмотреть на рассуждения и само уравнение, то можно заметить, что это ни что иное, как уравнение упругой балки!
где М - момент в точках X,Y.
Т.о. слайн - абс. упругая рейка. Можно привести такой умственный пример: взять на стенку набить гвоздики, взять металлическую рейку с отверстиями под них и навесить
на гвоздики - рейка примет форму кубического сплайна с Mo=0 и Mn=0 (нулевые моменты заделки). Такие рейки можно увидеть у тех, кто рисует теоретические чертежи (корабелы, авистроители), только ее прижимают "крысами" в узловых точках.
.
Это теория. На практике несколько иначе. Обнаружилось, что реально при описании практической кривой (сложные обводы корабля и т.д.) сплайн имеет свойство "дребезжать" между точками, особенно на крутых началах и концах (кстати, полиномы вообще "зашкаливают" в этих случаях). Поэтому пришлось разработать методы зажимающие сплайн, после этого сплайны ведут себя в любых случаях идеально.
А так, сплайнами можно решать очень много задач.
.
Давным-давно мною разработаны несколько подпрограмм на С:
- интерполяция слайном функции заданной набором X,Y
- нахождение производной функции
- интегрирование функции
- сглаживание функции сплайном
- гашение колебаний сплайна
Все подпрограммы рабочие, проверены временем и работают поныне в составе других программ.
.
Если есть у кого необходимость, то текст этих подпрограмм я могу выложить здесь через недельку (надо найти исходники на С).

Re: read DXF

"... Задавая краевые условия для Mo и Mn и условие непрерывности в точках первой производной S'[Xi]=S'[Xi+1], получим треугольную матрицу для решения коэф. М..."

Здесь маленькая ошибка, надо:
S'[i-1,i](Xi)=S'[i,i+1](Xi)

Re: read DXF

To Eugene !
Очень бы хотелось посмотреть эти подпрограммы. Буду весьма признателен.

Re: read DXF

Сплайны разные бывают... А в Autocad'е используется NURBS - рациональный неоднородный В-сплайн.

Re: read DXF

Все правильно, только как эти "Моменты сплайна" задавать
, во всех книгах есть опреденения h, S(x) только как определить
М -?

Re: read DXF

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

Re: read DXF

Уважаемый Eugene!
Не могли бы Вы скинуть на мой e-mail исходники с. Могут ли работать Ваши программы со сложными сплайнами?
Буду весьма признателен!

Re: read DXF

> Eugene
Уважаемый Eugene!
Немоглибы Вы поделится исходниками на С? Желательно теми где Вы оспользуете кривые безье! И не моглибы вы скынуть их мне на мой e-mail!
Буду весьма благодарен!