Параметрическая кривая
- From
- Georgy Udov ()
- To
- Anton Vdovichenko
- Date
- 2002-12-01T16:22:46Z
- Area
- RU.ALGORITHMS
From: "Georgy Udov" <udovgeorgy@chat.ru>
Доброе время суток, Anton!
Ты писАл to Georgy Udov on Fri, 29 Nov 02 22:29:35 +0300:
AV>>> p=A(t)/B(t), где A(t) и B(t) полиномы. Ну а дальше t найти не
AV>>> особо трудно. По крайней мере у меня так отлично работает.
AV> Я их не ищу, я их строю :) Методика основывается на том, что
AV> полиномами можно представить базисные функции, но т.к. канонически
AV> они задаются рекурентными формулами, то для получения полиномов
AV> применяется хитрая итеративная процедура.
AV> Сначала строится таблица базисных функций первого порядка, на основе
AV> ее таблица функций второго порядка и т.д. Потом полученные полиномы
AV> для базисных функций суммируются с учетом весов и контрольных точек
AV> и из них собственно получаются те полиномы A(t) и B(t). Вообще то,
AV> конечно, полинома A это вектор, т.е. есть 3 полинома для каждой
AV> координаты X(t), Y(t), Z(t) и, т.о. получается система из 3-х
AV> уравнений, но решить достаточно одно из них.
Спасибо большое за информацию. Только ещё несколько вопросов:
1) Так как на каждом узловом интервале полиномы А(t) и B(t) разные, то
уравнение нужно решать для каждого интервала, а потом, если получим t,
выходящее за границы данного интервала, - это решение отсекать? Или можно
сначала как-нибудь прикинуть, на каком узловом интервале находится заданная
точка?
GU>> 3) Полученное уравнение решаешь, насколько я понимаю, итеративно?
AV> Ну если получается уравнение второй степени, то аналитически. Для
AV> третьей можно тоже аналитическое решение написать. А так, для общего
AV> случая, решается методом дихотомии, концы интервала ведь известны, а
AV> промежуточные точки перегиба ищутся деференцированием и поиском
AV> корней этого дифференцированного уравнения -
AV> гарантированно находятся все корни с какой угодно точностью, если
AV> они есть конечно.
По-моему, аналитически можно решить и для четвёртой степени. То есть,
дихотомия годится только до пятой. Дальше дифференцированное уравнение
станет решать сложно - надо будет и его дифференцировать... Конечно, можно
написать рекурсивную функцию, решающую уравнение дихотомией, только тогда
возникнет другой вопрос - а не будет ли это менее эффективно, чем
какой-нибудь итерационный метод...
Vale, Georgy Udov. E-mail: udovgeorgy#SPAMOFFchat.ru
--- ifmail v.2.15
* Origin: http://news.kaa.ru (2:5030/49.1)