Podstawy nierównomiernego racjonalnego B-splajnu (NURBS)


9

Próbuję zrozumieć krzywe NURBS (powierzchnie później!), Ale mam problem ze zrozumieniem podstaw jego wewnętrznego działania. Czy ktoś mógłby mi wyjaśnić kilka rzeczy? Ponieważ pochodzę z krzywych Beziera, porównanie tych dwóch byłoby szczególnie przydatne.

  1. Funkcja racjonalnej podstawy” przypomina trochę wielomian Bernsteina (racjonalnej) krzywej Beziera. Czy parametr urównież zmienia się z 0 na 1?

  2. Jak „dodać szczegół” do krzywej? Mam na myśli, że w przypadku Beziers, gdybym musiał opisać bardziej skomplikowany kształt, po prostu „zszywałbym” kilka Beziers razem. Lub rzadziej zwiększaj stopień. Rozumiem, że mogę również zwiększyć stopień NURBS i umieścić kilka krzywych NURBS obok siebie, ale czy tak to należy zrobić?

  3. Artykuł w Wikipedii, przynajmniej dla mnie, wydaje się niezbyt jasny na temat tego „wektora węzłów”. Co to w ogóle jest?


To trochę za dużo na jedno pytanie. Mogę zasadniczo sprowadzić swój wstępny wykład na ten temat w ciągu kilku godzin. Zagłębianie się w szczegóły użycia De casteljanu i algorytmu de boora zajęłoby mi zbyt dużo czasu.
joojaa,

1
Dlatego chciałbym, aby pytania 3, 5 i ewentualnie 6 zostały rozdzielone jako osobne pytania, aby odpowiedzi i zrozumienie były większe.
joojaa,

@joojaa Jasne, mogę podzielić pytanie, tylko
chwilkę

1
Tak więc pytania 3 , 5 i 6 zostały podzielone na osobne pytania.
Ecir Hana,

Odpowiedzi:


7

B-splajny i Beziers są równoległymi wynalazkami mniej więcej tego samego. Beziers próbuje zacząć od pomysłu dopasowania stycznych. B-splajny zaczynają się od idei funkcji podstawowych. Splajny NURB (a właściwie część racjonalna) to tylko uogólnienia splajnów B, dzięki czemu można opisać dokładne przekroje stożkowe *, ponieważ są one szczególnie interesujące w inżynierii.

Najpierw zacznijmy od prostej terminologii NURB Spline. Uzasadnienie tych krzywych jest nieco inne niż w przypadku Bziersa. Najpierw jest koncepcja zakresu. Rozpiętość byłaby w przybliżeniu równa całemu splajnowi Beziera, z wyjątkiem nurbów, które mogą mieć dowolną liczbę przęseł.

wprowadź opis zdjęcia tutaj

Zdjęcie 1 : Jedna sześcienna rozpiętość NURBS. Jest to nieco nietypowe sformułowanie

Każdy zakres jest tworzony przez stopień krzywej + 1 punkty kontrolne **. Każda krzywa może składać się z dowolnej liczby punktów. Każdy kolejny zakres ponownie wykorzystuje punkty z poprzedniego zakresu, upuszczając jeden punkt i zabierając jeszcze jeden punkt na liście. Tworzenie bardziej złożonych krzywych jest tak proste, jak dodanie większej liczby punktów do krzywej.

UWAGA : Krzywe obrazów są nieco nietypowo sparametryzowane, dlatego nie wyjaśniam, co to oznacza w następnej części. Kiedy podchodzę do koncepcji węzłów. Jest to po prostu łatwiejszy sposób wyjaśnienia, w jaki sposób krzywe łączą się ze sobą.

wprowadź opis zdjęcia tutaj

Zdjęcie 2 : 2 przęsła sześcienne po sobie, każde przęsło wykorzystuje 4 punkty. razem tworzą jedną krzywą. Dzielą się ze sobą większością punktów.

Do tej pory prawdopodobnie odpowiedzieliśmy na 2 pytania dotyczące dodawania złożoności. Chciałbym jednak dodać, że ten schemat zapewnia lepszą ciągłość niż krzywa Beziera. Dodatkowo można ustawić cykliczną tablicę punktów, która tworzy kadłub. Tworzenie zamkniętej krzywej.

wprowadź opis zdjęcia tutaj

Zdjęcie 3 : Zamknięta sześcienna powierzchnia NURBS ma tyle rozpiętości, ile punktów. Każdy kolor ma jedną rozpiętość.

Parametryzacja

Do tego momentu można powiedzieć, że łączenie przęseł jest sztuczką, podobnie jak „szycie” krzywych Beziera. Ale jest różnica. Krzywa jest parametryzowana na całej długości. Zatem krzywe nie są oddzielne, nie interpolują od 0 do 1 na każdym przęsle, jak to robi Beziers. Zamiast tego podstawowa krzywa ma zakres parametrów, który można dostosowywać. Parametr jest przechowywany w czymś zwanym węzłem, a każdy węzeł może mieć dowolną rosnącą wartość w sekwencji. Możesz więc sparametryzować cały zakres krzywych u do 0–1 lub od 0 do 12. Parametryzacja również nie musi być jednorodna.

Ta parametryzacja zmienia sposób kształtowania krzywej. Dlaczego miałoby to być przydatne? Cóż, możesz dostosować napięcie wzdłuż krzywej dla jednego. Lub możesz zakodować długość krzywej do parametru U. Jednym ze szczególnych zastosowań jest sprawienie, aby krzywa NURBS zachowywała się jak krzywa Beziera albo całkowicie, albo częściowo (na przykład beziera na końcach, ale nie w środku).

wprowadź opis zdjęcia tutaj

Zdjęcie 4 : Te same punkty różnych sekwencji węzłów. Zielona krzywa NURBS odpowiada krzywej Beziera, która ma zakres parametrów 0-2 zamiast 0-1

Ok, więc jakie są węzły? Są to po prostu zakresy funkcji podstawowych. Ponieważ sześcienny b-splajn z 4 punktami ma 4 funkcje interpolacji, potrzebuje 8 węzłów. Można narysować linię tylko w obszarach, w których 3 funkcje nakładają się i sumują do 1.0.

wprowadź opis zdjęcia tutaj

Zdjęcie 5 : 2 różne funkcje podstawowe, podobne do modelu Béziera i jednolita parametryzacja segmentów, rozpiętość do zakresu 0-1.

A teraz głównie opisaliśmy odpowiedź na pytanie 1. Zakres nie jest zdefiniowany, możesz rozciągać funkcje podstawowe według własnego uznania. I na koniec wektor węzłów po prostu wytwarza zakresy parametrów dla funkcji podstawowych. Jest jeszcze jedna rzecz, która rządzi kształtem krzywej i jest to wektor ciężaru. Ale to inna historia do opowiedzenia gdzie indziej.


* To uzasadnienie w tym przypadku oznacza, że ​​krzywa NURBS nie musi być wielomianem, ponieważ nie można opisać okręgu za pomocą wielomianów.

** Można zdefiniować inne rodzaje punktów.


w odniesieniu do (*) krzywe Beziera mają ten sam problem. Problem polega na tym, że krzywe (w obu przypadkach) są zdefiniowane jako x = f (t), y = f (t). Można jednak również zdefiniować krzywą jednowymiarową / jednoznaczną / 1 wymiarową (ponownie, w obu przypadkach) jako y = f (x), używając x zamiast t. W przypadku racjonalnych krzywych, zamiast być w stanie reprezentować odcinki stożkowe, możesz reprezentować sinus i cosinus (i oczywiście więcej). Splajny NURBS / b nie są pod tym względem wyjątkowe.
Alan Wolfe

Myślę, że twoje stwierdzenie dotyczące długości jest błędne (działa tylko z funkcjami liniowymi?) I nie jestem pewien, w jaki sposób obliczenia długości powinny pasować do twojego wyjaśnienia (dobre informacje, które podałeś, po prostu mówię!)
Alan Wolfe

@AlanWolfe mimo to usunięty
joojaa

Najbardziej niesamowite! Wielkie dzięki, bardzo dobre wytłumaczenie!
Ecir Hana,

Literówka może? „Zamiast tego podstawowa powierzchnia ma konfigurowalny zakres parametrów. Parametr jest przechowywany w czymś zwanym węzłem, a każdy węzeł może mieć dowolną wartość, która jest większa niż następna”. -> „Zamiast tego podstawowa krzywa ma konfigurowalny zakres parametrów. Parametr jest przechowywany w czymś zwanym węzłem, a każdy węzeł może mieć dowolną wartość większą niż poprzednia .” Przy okazji, czy mógłbyś wyjaśnić, co rozumiesz przez „zakres UV”? „UV” oznacza 2D ..?
Ecir Hana,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.