Представление графической информации
Годографом параметрической кривой r(t) = (x(t); y(t)), компоненты которой являются полиномами, называется кривая .
Таким образом, кривая Безье, построенная по n точкам , является годографом исходной кривой Безье, построенной по точкам
.
Пример 20. Годографом квадратичной кривой Безье
![x(t) = 2t;\\
y(t) = 2t(1 - t),](/sites/default/files/tex_cache/8e1bbb3ad35907cee419535787714ac7.png)
где
(см. пример 16), является кривая x(t) = 2; y(t) = 2 - 4t, при , которая представляет собой отрезок прямой x = 2 для -
(рис. 3.23).
Пример 21. На рис. 3.24 показаны кубическая кривая Безье (справа) и ее годограф - квадратичная кривая Безье (слева).
Отметим также, что в 3D-графике, кроме кривых Безье, используются поверхности Безье.
B-сплайны
B-сплайны являются обобщениями кривых Безье.
Последовательность действительных чисел , таких что
, называется узловым вектором, а сами эти числа - узлами.
Для заданного узлового вектора T положим:
![N_{i,0}(t)=\begin{cases}
1, t \in [t_i;t_{i+1})\\
0, t \notin [t_i;t_{i+1});
\end{cases}\\
N_{i,k}(t)=\frac{t-t_i}{t_{i+k}-t_i}N_{I,k-1}(t)+\frac{t_{i+k+1}-t}{t_{i+k+1}-t_{i+1}}N_{i+1,k-1}(t),](/sites/default/files/tex_cache/7b2dbdb00cdca887fd0f15901da18355.png)
для k > 0 (считается, что ).
Функции называются базисными функциями степени k.
Например, при k = 1 и имеем:
![N_{0,1}(t)=\frac{t-t_0}{t_1-t_0}N_{0,0}(t)=\frac{t_2-t}{t_2-t_1}N_{1,0}(t),\\
N_{1,1}(t)=\frac{t-t_1}{t_3-t_1}N_{1,0}(t)+\frac{t_3-t}{T_3-t_2}N_{2,0}(t)](/sites/default/files/tex_cache/1280c294f351b4384905ef6537631b60.png)
Пусть - попарно различные точки плоскости.
B-сплайном, или базисным сплайном степени k называется кривая
![r(t)=\sum_{i=0}^{n}N_{i,k}(t)P_i,](/sites/default/files/tex_cache/a74f6c4aac4f6b81dbfd0a6f08fa8184.png)
для и
, где базисные функции определены на узловом векторе T, который содержит n + k + 2 узлов:
.
Пример 22. Пусть n = k = 1 и T = (0, 0, 1, 1), так что имеются две точки и
и узлы
. Тогда
![N_{0,0}(t)=N_{2,0}(t)=0,](/sites/default/files/tex_cache/c9f6b39f7dfe8eccbd6cf1a7134ec1cb.png)
для
![N_{1,0}(t)\begin{cases}
1, & \text{если}\; t \in [0;1);\\
0, & \text{если}\; t \notin [0;1)
\end{cases}](/sites/default/files/tex_cache/041bd8d5148fe762a2c18acf3530b175.png)
По приведенным выше формулам получаем, что для
![N_{0,1}(t)=1-t](/sites/default/files/tex_cache/c02a592dd30c1e977e058859cbd28c87.png)
и
![N_{1,1}(t)=t](/sites/default/files/tex_cache/aba81e8984a8b6ec083c137672c22489.png)
Поэтому B-сплайн первой степени для точек и
описывается в виде
, и для
представляет собой отрезок, соединяющий точки
и
.
В общем случае B-сплайн степени k, для , совпадает при
с кривой Безье, если n = k, а узловой вектор имеет вид:
![T=\underbrace{(0,\dots,0,}_{k=1} \underbrace{1,\dots,1)}_{k=1}](/sites/default/files/tex_cache/e694c0c4a9c28279c0507562d99da058.png)
Пример 23. Пусть n = 3, k = 1 и T = (0, 0, 1, 2, 3, 3). Построим B-сплайн первой степени по 4 точкам и
:
![r(t)=N_{0,1}(t)P_0+N_{1,1}(t)P_1+N_{2,1}(t)P_2+N_{3,1}(t)P_3](/sites/default/files/tex_cache/52e144dadf9adde4696fb10c5cdc2360.png)
Имеем: ,
,
,
. Следовательно,
![N_{0,0}(t)=N_{4,0}(t)=0](/sites/default/files/tex_cache/eb64254f36926569b314379259669201.png)
для
![N_{1,0}(t)\begin{cases}
1, t \in [0;1);\\
0, t \notin [0;1);
\end{cases}\\
N_{2,0}(t)\begin{cases}
1, t \in [1;2);\\
0, t \notin [1;2);
\end{cases}\\
N_{3,0}(t)\begin{cases}
1, t \in [2;3);\\
0, t \notin [2;3);
\end{cases}](/sites/default/files/tex_cache/3ef78c266e15800f175629b997ff22cd.png)
Поэтому
![N_{0,1}(t)=(1-t)N_{1,0}(t);\\
N_{1,1}(t)=tN_{1,0}(t)+(2-t)N_{2,0}(t)](/sites/default/files/tex_cache/f36a2fb6e31342aad2332f18c05d4de1.png)
Далее,
![N_{2,1}=\frac{t-t_2}{t_3-t_2}N_{2,0}(t)=\frac{t_4-t}{t_4-t_3}N_{3,0}(t);\\
N_{}(t)=\frac{t-t_3}{t_4-t_3}N_{3,0}(t)+\frac{t_5-t}{t_5-t_4}N_{4,0}(t)](/sites/default/files/tex_cache/e0fd09a7a6c403005d7031f5ea4cb883.png)
В нашем примере
![N_{2,1}(t)-(t-1)N_{2,0}(t)+(3-t)N_{3,0}(t);\\
N_{3,1}(t)=(t-2)N_{3,0}(t)](/sites/default/files/tex_cache/5019dd374780bf32e07ab3665d272149.png)
Таким образом, B-сплайн описывается в виде:
![r(t)\begin{cases}
(1-t)P_o+tP_1, t \in [0;1);\\
(2-t)P_1+(t-1)P_2, t \in [1;2)\\
(3-t)P_2+(t-2)P_3, t \in [2;3)
\end{cases}](/sites/default/files/tex_cache/5106448c59eb7ad8fe74bf5657c7b479.png)
При он представляет собой ломаную с вершинами
и
(рис. 3.25).
Такая же ломаная получается при , если в качестве узлового вектора взять (0, 1, 2, 3, 4, 5).
Пример 24. Пусть n = 3, k = 2 и T = (0, 0, 0, 1, 3, 3, 3). Построим B-сплайн второй степени по 4 точкам и
:
![r(t)=N_{0,2}(t)P_0+N_{1,2}(t)P_1+N_{2,2}(t)P_2+N_{3.2}(t)P_3](/sites/default/files/tex_cache/a7a824a2d98579fec1a76585ef6614fd.png)
Имеем: ,
. Поэтому
![N_{0,0}(t)=N_{1,0}(t)=N_{4,0}(t)=N_{5,0}(t)=0;\\
N_{2,0}(t)\begin{cases}
1,t \in[0;1);\\
0, t \notin [0;1);
\end{cases}\\
N_{3,0}(t)=\begin{cases}
1, t \in [1;3);\\
0, t \notin [1;3).
\end{cases}](/sites/default/files/tex_cache/8ab310ddbcad571d2d08df470b6c0c12.png)
Следовательно,
![N_{2,1}(t)=tN_{2,0}(t)+\frac12(3-t)N_{3,0}(t);\\
N_{3,1}(t)=\frac12(t-1)N_{3,0}(t)](/sites/default/files/tex_cache/32d1ad9ab666cc765e0a5274b5bd580e.png)
Далее,
![N_{0,2}(t)=\frac{t-t_0}{t_2-t_0}N_{0,1}(t)+\frac{t_3-t}{t_3-t_0}N_{1,1}(t)\\
N_{1,2}(t)=\frac{t-t_1}{t_3-t_1}N_{1,1}(t)+\frac{t_4-t}{t_4-t_2}N_{2,1}(t)\\
N_{2,2}(t)=\frac{t-t_2}{t_4-t_2}N_{2,1}(t)+\frac{t_5-t}{t_5-t_3}N_{3,1}(t)\\
N_{3,2}(t)=\frac{t-t_3}{t_5-t_3}N_{3,1}(t)+\frac{t_6-t}{t_6-t_4}N_{4,1}(t)\\
N_{4,1}(t)=\frac{t-t_4}{t_5-t_4}N_{4,0}(t)+\frac{t_6-t}{t_6-t_5}N_{5,0}(t)](/sites/default/files/tex_cache/a9878fb785c061476fe85bb429a2c9a0.png)
Поэтому
![N_{0,2}(t)=(1-t)^2N_{2,0}(t);\\
N_{1,2}(t)=\frac{2}{3}t(3-2t)N_{2,0}(t)+\frac16(3-t)^2N_{3,0}(t);\\
N_{2,2}(t)=\frac{1}{3}(t-1)^2N_{2,0}(t)+\frac{1}{12}(3-t)(5t-3)N_{3,0}(t);\\
N_{3,2}(t)=\frac{1}{4}(t-1)^2N_{3,0}(t),](/sites/default/files/tex_cache/a53020a1e593b0bbd3147ca6887dcff6.png)
так как