Параметрическая кривая

From
Anton Vdovichenko (2:5025/3.8)
To
Georgy Udov
Date
2002-11-29T22:29:35Z
Area
RU.ALGORITHMS
Hello Georgy.

29 Nov 30 14:51, Georgy Udov wrote to Anton Vdovichenko:

 AV>> p=A(t)/B(t), где A(t) и B(t) полиномы. Ну а дальше t найти не
 AV>> особо трудно. По крайней мере у меня так отлично работает.

 GU> Очень интересно,

 GU> 1) У тебя задача решена для NURBS'a произвольной степени, или только
 GU> какой-нибудь определённой?

  Ну вобщем то написано для произвольной но реально я больше 3-й никогда не видел :)

 GU> 2) А как ты ищещь собственно полиномы?

  Я их не ищу, я их строю :) Методика основывается на том, что полиномами можно представить базисные функции, но т.к. канонически они задаются рекурентными формулами, то для получения полиномов применяется хитрая итеративная процедура. Сначала строится таблица базисных функций первого порядка, на основе ее таблица функций второго порядка и т.д. Потом полученные полиномы для базисных функций суммируются с учетом весов и контрольных точек и из них собственно получаются те полиномы A(t) и B(t). Вообще то, конечно, полинома A это вектор, т.е. есть 3 полинома для каждой координаты X(t), Y(t), Z(t) и, т.о. получается система из 3-х уравнений, но решить достаточно одно из них.
  Если хочешь, могу кинуть кусок кода на Си, который строит полиномы для базисных функций, но оттуда не так легко понять что к чему, надо сначала представить себе эти таблицы, хотя бы на бумажке :) Может быть конечно про это все есть где-нибудь более понятная инфа в инете, но я в свое время не нашел.

 GU> 3) Полученное уравнение решаешь, насколько я понимаю, итеративно?

 Ну если получается уравнение второй степени, то аналитически. Для третьей можно тоже аналитическое решение написать. А так, для общего случая, решается методом дихотомии, концы интервала ведь известны, а промежуточные точки перегиба ищутся деференцированием и поиском корней этого дифференцированного уравнения - гарантированно находятся все корни с какой угодно точностью, если они есть конечно.


Anton

--- GoldED 2.50+
 * Origin: ... (2:5025/3.8)