Как найти контрольную точку поверхности для любой заданной контрольной точки NURBS?

Я прочитал статью Pilot3d «Маленькие грязные секреты NURBS» (http://www.pilot3d.com/NurbSecrets.htm) и был заинтригован контрольными точками, расположенными на поверхности.

Это объясняет, что каждый элемент управления имеет соответствующую точку поверхности, но не объясняет, как они находятся и как перемещение точки управления поверхностью преобразуется в исходные точки управления. Если бы мне пришлось угадывать, вы бы нашли контрольные точки поверхности, ища точку на поверхности, когда вклад от контрольной точки максимален. Не уверен в преобразовании изменений обратно в исходные контрольные точки


person user2272296    schedule 01.01.2017    source источник


Ответы (1)


Я немного понял это, просто подумав об этом.

Если вы рассмотрите общее уравнение NURBS:

уравнение nurbs

Допустим, C(u_pi) — это точка на поверхности, связанная с контрольной точкой (как вы решаете, это технически произвольно, но кажется, что точка поверхности, ближайшая к контрольной точке, даст наилучшие результаты), и которую вы хотели бы переместить. это вектор М.

Итак, теперь вам нужно найти новый P_i, учитывающий этот перевод. Если мы возьмем общее уравнение и вычтем вклады из всех контрольных точек, кроме P_i (контрольная точка, которая нас интересует), мы получим следующее уравнение (при условии, что все веса равны 1):

N_i,n * P_i + M = N_i,n * (P_i+P_idelta)

Тогда мы можем довольно легко увидеть, что:

М = N_i,n*P_идельта

И, следовательно, вы можете управлять формой поверхности NURBS, перемещая точки на поверхности, а не контрольные точки. Недостатком этого метода является то, что близлежащие точки поверхности также будут двигаться, но не со скоростью. Вы можете довольно легко контролировать распространение эффекта, распределяя дельту по нескольким контрольным точкам.

person user2272296    schedule 02.01.2017