Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИГС / Lab_03 / labor_03a.doc
Скачиваний:
11
Добавлен:
17.04.2018
Размер:
1.34 Mб
Скачать

Пространственна кривая в параметрическом виде.

Пространственную кривую удобно представлять в параметрическом виде. На Рис.5. показана пространственная кривая C. Произвольная точкаMна этой кривой имеет координаты (x,y,z). Эти координаты определяются через систему следующих параметрических уравнений:

(1)

Здесь параметр tменяется в интервале [a,b]. Если параметр равенt=a, то точкаMнаходится в начале кривой, в точке 1. Если же параметр равенt=b, то точкаMнаходится в конце кривой, в точке 2.

Интервал [a,b] изменения параметраtвсегда можно свести к единичному интервалу [0,1], введя новый параметрuс помощью следующего преобразования:

(2)

Систему уравнений (1) кривой Cможно записать в векторной форме следующего вида:

(3)

Здесь r- радиус-вектор точек пространственной кривойC.

Рис.5.

Пространственная кривая C. Вектор касательнойT. Вектор кривизныK.

Рис.6.

Дуга окружности C. Вектор касательнойT. Вектор кривизныK.

(Изображение на Рис.5 создано программой line1.cpp, на Рис.6 создано line2.cpp.)

Кривая Cназывается регулярной кривой, еслив каждой ее точке. Это означает, что в каждой точке кривойMсуществует касательная к ней и эта касательная меняется непрерывно вслед за перемещением точкиMпо кривой. Единичный вектор касательной к кривой определяется следующей формулой:

(4)

На Рис.5. вектор касательной Tобозначен стрелкой желтого цвета.

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

(5)

Направление вектора кривизны, это направление на центр кривизны кривой для данной точки M. Радиус кривизны равен обратному значению длины вектора кривизны.

(6)

На Рис.5. вектор кривизны Kобозначен вектором желтого цвета.

В качестве примера рассмотрим дугу окружности с радиусомRлежащей в плоскостиxOyРис.6.. Параметрические уравнения (1) теперь примут вид:

(7)

Здесь в качестве параметра удобно выбрать угол в цилиндрической системе координат. Находим первую и вторую производные радиуса-вектора точек окружности.

(8)

Теперь нетрудно по формулам (4), (5) и (8) найти вектор касательной Tи вектор кривизныK. После подстановки (8) в формулы (4) и (5) получаем следующие выражения:

(9)

Здесь следует обратить внимание на то, что радиус кривизны R() окружности, определенный по формуле (6), будет совпадать с радиусом окружностиR. Действительно, из формул (9) следует выражение для модуля вектора кривизны:

(10)

Отсюда получаем радиус кривизны окружности.

Пусть точка Mнаходится на осиOy, как показано на Рис.6. В этом случае параметр равен=/2, и векторыTиMбудут иметь следующий вид:

(11)

Из формул (11) видно, что вектор кривизны направлен к центру окружности. Это же видно и из Рис.6.

Интерполяционные кривые.

Если заданы N+1 опорные точки (опорные векторы)искомой пространственной линии, то можно сконструировать интерполяционную кривую (interpolatingcurve) в виде полинома порядкаN. Основным свойством интерполяционной кривой является то, что она проходит через все опорные точки. В других точках интерполяционная кривая не совпадает с точками искомой линии.

Рассмотрим для примера четыре опорных вектора Рис.7. Здесь четыре опорные точки лежат на дуге винтовой линии.

Рис.7

Четыре опорных вектора лежат на дуге винтовой линии

Рис.8

Через опорные точки проведена интерполяционная кривая третьего порядка

(Изображение на Рис.7 создано программой line3.cpp, на Рис.8 создано line4a.cpp.)

Построим на этих векторах параметрическую интерполяционную кривую. Будем предполагать, что параметр кривой uменяется в пределах 0u3. Кроме того, будем считать, что приu=0 радиус-вектор кривой будет совпадать с первым опорным вектором, приu=1 совпадать со вторым опорным вектором, приu=2 с третьим опорным вектором, и приu=3 радиус-вектор кривой будет совпадать с четвертым опорным вектором.

(12)

При этих условиях интерполяционная кривая определяется однозначно, и имеет следующий вид:

(13)

На Рис.8. показана интерполяционная кривая (13) синим цветом.

Как видно из Рис.7. интерполяционная кривая третьего порядка достаточно хорошо описывает дугу винтовой линии. По-видимому, если увеличить число опорных векторов, а значит увеличить порядок интерполяционной кривой, то результат интерполяции можно еще улучшить. Обобщим результат, содержащийся в формулах (12), (13) на число опорных векторов N+1.

Теперь будем считать, что параметр кривой uменяется в пределах 0uN. Кроме того, будем считать, что выполняются следующие условия:

(14)

После этого запишем общую формулу для интерполяционной кривой, проходящей через N+1 опорных векторов.

(15)

На Рис.9. показана интерполяционная кривая (15) шестого порядка.

Рис.9.

Интерполяционная кривая порядка 6.

Рис.10.

Интерполяционная кривая порядка 13.

(Изображения на Рис. 9, 10 созданы программами line4b.cpp, line4c.cpp.)

Как видно из Рис.9. интерполяционная кривая порядка 6 прекрасно аппроксимировала дугу винтовой линии. Однако такое положение будет не для всех линий. На Рис.10. приведен пример пространственной линии, для которой интерполяционная кривая не дает хорошей аппроксимации. Порядок интерполяционной кривой в этом примере выбран достаточно большим, он равен 13. Однако интерполяционная кривая на одних участках линии дает хорошую аппроксимацию, а на других плохую.

Поэтому этот класс интерполяционных кривых редко используется в задачах компьютерной графики.

Соседние файлы в папке Lab_03