Контрольная работа: Построение линии пересечения объёмных геометрических объектов
, (8)
где - радиус-вектор точек на кривой, а Jni (t ) - аппроксимирующие многочлены Бернштейна, равные
(9)
Здесь 0£t £1 и, кроме того, предполагается, что ti =1 при i =0 и t =0.
Ломаная Безье однозначно определяет форму кривой Безье. Изменяя положения вершин ломаной, можно управлять формой соответствующей кривой Безье. При этом следует иметь в виду следующее:
1. самой кривой в общем случае будут принадлежать только первая и последняя вершины ломаной Безье, остальные вершины будут лишь оказывать влияние на вид и гладкость кривой;
2. наклоны касательных векторов в крайних точках кривой Безье и ломаной Безье совпадают, поэтому при сопряжении двух кривых Безье, заданных ломаными и , одинаковый наклон кривых в точке соединения получается в том случае, если точки (которая совпадает с ) и лежат на одной прямой;
3. как видно из выражений (8) и (9), степень аппроксимирующего полинома равна n (т.е. числу звеньев в ломаной Безье), поэтому для увеличения порядка кривой Безье достаточно лишь задать дополнительные вершины в соответствующей ломаной Безье;
4. кривая Безье всегда целиком лежит внутри выпуклой оболочки ломаной Безье.
3.4 Определение полинома Безье
Итак, задано 6 точек, необходимо построить полином Безье степени 5:
,
найдем аппроксимирующие многочлены Бернштейна:
J 50 =(1- u )5 ;
J51 =5u(1-u)4 ;
J52 =10u2 (1-u)3 ;
J53 =10u3 (1-u)2
J54 =5u4 (1-u);
J 55 = u 5 ;
Теперь есть все данные для построения кривой Безье по заданным точкам, причем она, не смотря на совпадение первой и последней точек, не будет замкнуто сопряжена, так как предпоследняя и вторая точка не лежат на одной прямой.
3.5 Программа для построения кривой Безье.
(defun Bezier_curve()
(command "erase" "all" "")
(setvar "pdmode" 2)
(setq p1 (list 49.0 28.0))
(setq p2 (list 105.3 -31.5))
(setq p3 (list 172.3 -78.6))
(setq p4 (list 211.1 -95.8))
(setq p5 (list 183.0 -66.1))