B-Splines і Beziers - паралельні винаходи більш-менш одного і того ж. Де Безьє намагаються виходити з ідеї підключення дотичних. B-Splines починають з ідеї базових функцій. NURB Splines (або фактично раціональна частина) - це лише узагальнення B-Splines, тому ви можете описати точні конічні перерізи *, оскільки вони представляють особливий інтерес в техніці.
Спочатку почнемо з простої термінології NURB Spline. Обґрунтування цих кривих дещо інше, ніж для Безьє. Спочатку існує поняття промаху. Проміжок приблизно буде еквівалентний цілому Безьє, за винятком того, що в медсестер ви можете мати будь-яку кількість прольотів.
Зображення 1 : один кубічний проміжок NURBS. Це трохи нетипово у формулюванні
Кожен проміжок формується за ступенем кривої + 1 контрольні точки **. Кожна крива може складатися з будь-якої кількості точок. Кожен послідовний проміжок повторно використовує бали, утворюючи попередній проміжок, скидаючи одну точку та беручи на одну точку більше у списку. Тому зробити складніші криві так само просто, як просто додати більше кривих до кривої.
ПРИМІТКА . Криві зображень трохи нетипово параметризовані, невірно поясніть, що це означає в наступному розділі. Коли я беру концепцію вузлів. Це просто простіший спосіб пояснити, як криві склеюються.
Зображення 2 : 2 кубічні проміжки один за одним, кожен проміжок використовує 4 бали. разом вони утворюють одну криву. Вони ділять більшість балів один з одним.
На сьогодні ми вже, мабуть, відповіли на 2 питання щодо додавання складності. Але я хотів би додати, що ця схема забезпечує кращу безперервність, ніж крива Безьє. Додатково ви можете зробити точковий масив, який формує корпус циклічним. Формування замкнутої кривої.
Зображення 3 : Закрита кубічна поверхня NURBS має стільки прольотів, скільки крапок. Кожен колір - один проміжок.
Параметризація
До цього моменту можна було просто сказати, що обв'язування прольотів - це трюк так само, як "зшивання" кривих Безьє. Але є різниця. Крива параметризована по її довжині. Таким чином, криві не є окремими, вони не інтерполюють форму від 0 до 1 на кожному прольоті, як це роблять Безьє. Натомість нижня крива має діапазон параметрів, що може бути зручним для роботи. Параметр зберігається у тому, що називається вузлом, і кожен вузол може мати довільне збільшується значення в послідовності. Таким чином, ви можете параметризувати всі криві u діапазону від 0 - 1 або 0 до 12. Параметризація також не повинна бути рівномірною.
Ця параметризація змінює форму кривої. Чому це було б корисно? Ну ви можете відрегулювати натяг по кривій для одного. Або ви можете кодувати довжину кривої до параметра U. Одне особливе використання полягає в тому, щоб змусити криву НУРБС діяти як криву Безьє повністю або частково (безьє, як у кінцях, але не посередині, наприклад).
Зображення 4 : Однакові точки різних послідовностей вузлів. Зелена крива NURBS відповідає кривій Безьє, що має діапазон параметрів 0-2 замість 0-1
Гаразд, що таке вузли? Вони просто діапазони базових функцій. Оскільки кубічний b-сплайн з 4 балами має 4 інтерполяційні функції, йому потрібно 8 вузлів. Лише можна накреслити лише ті області, де 3 функції перекриваються та складають до 1,0.
Зображення 5 : 2 різні основні функції, подібні до безмежжя та рівномірної параметризації сегмента, поширюються на діапазон 0-1.
А тепер ми здебільшого описали відповідь на питання 1. Діапазон не визначений, ви можете розтягнути основні функції, як вважаєте за потрібне. І нарешті, вузольний вектор просто виробляє діапазони параметрів для базових функцій. Є ще одна річ, яка регулює форму кривої, і це вектор ваги. Але це ще одна історія, яку слід розповісти в іншому місці.
* У цьому випадку це раціонально означає, що крива NURBS не повинна бути многочленом, як ви не можете описати коло з многочленами.
** Можна визначити інші типи точок.