На самом деле в Интернете есть достаточно сайтов, которые объясняют вектор узлов.Это не специфическая вещь GL, а неотъемлемое свойство NURBS.Таким образом, введя «вектор узла NURBS» в Google, вы получите подробные объяснения.
Я просто хочу сказать, что обычно вектор узла имеет длину knot-vector-length = number-of-points + degree-of-curve + 1
, и единственное, что имеет значение, это соотношение, а не абсолютные значения.Так что {0,1,2,3}
- это то же самое, что и {0,2,4,6}
. На мой взгляд, наиболее важными векторами узлов являются:
1) {0,1,2,3,4,5,6,...}
который позволит вам легко растянуть кривую с непрерывностью кривизны, если вы повторите последние (или первые) degree-of-curve-1
точки, но это означает, что кривая фактически не проходит через ее начальную и конечную точки, поэтому вы должны повторить последнюю(или первый) degree-of-curve-1
указывает на создание непрерывной замкнутой кривой.
Другая важная форма:
2) {0,0,0,1,2,3,...,n,n,n}
тогда как 0
в начале и n
в конце повторяются degree-of-curve + 1
раз.Это также форма, которую вы использовали.Это даст вам кривую NURBS, которая начинается в первой точке и заканчивается в последней указанной вами точке.Но это только дает позиционную преемственность.Таким образом, если вы сделаете замкнутую кривую с этим, вы, скорее всего, получите тангенциальный разрыв.
Кстати.если у вас есть только degree-of-curve + 1
баллов и вы используете вторую форму, то у вас есть только 0
с и 1
с.Результирующий сплайн будет идентичен кривой Безье.
Это действительно трудно объяснить без изображений или математического фона (полиномы Бернштейна)