Seite 1 von 2

cg2_Nurbs2.pdf Folie 12

Verfasst: 4. Jul 2008 16:26
von TuxedoMask2002
Hallo,
kann mir bitte jemand den letzten Schritt auf der Folie erklären, also wie ich
\(N_{3,2}\)
berechne?
Mein erster Summand hängt ja von \(N_{3,1}\) ab, was ja 0 ist, okay. Aber mein zweiter hängt nach der Rekursionsformel von \(N_{4,1}\) ab und der Bruch davor ergibt bei mir 2 (i=3, p=2). Aber \(N_{4,1}\) kommt ja auf der ganzen Folie nicht vor. Was mache ich falsch?

Danke
Michael

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 4. Jul 2008 20:27
von Tiger80
\(N_{4,1} = 0\) weil \(N_{4,0}= 0\) und \(N_{5,0} = 0\) sind. Daher haben sie das gar nicht mal auf den Folien erwähnt. Hoffe ich habe nichts falsches da geschrieben.

Gruss

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 4. Jul 2008 22:29
von TuxedoMask2002
Ja okay, wenn das so wäre dann ist es okay. Weil halt auch explizit hingeschrieben wurde dass N_31 null ist dachte ich, dass auf der Folie alles stünde was man so braucht :)
Danke dir.

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 5. Jul 2008 13:58
von Philip
Da die Folien ja so gut wie gar keine Erklärung liefern habe ich mir jetzt mal folgendes Schema zusammengereimt:

Von der gegebenen Kurve
\(C^w(u) = \sum_{i=0}^n N_{i,p}(u)P_i^w\)
bestimme ich den Grad p, rechne die Summe aus und erhalte die darin benötigten \(N_{i,p}\), die ich dann über das Rekursionsschema ausrechnen kann und somit mir meinen Wert an der Stelle u berechnen kann. Sollte soweit zumindest funktionieren.

Jetzt habe ich noch 2 Fragen dazu:
- Das n in der Summe gibt den Index des höchsten Kontrollpunkts an oder die Anzahl der Kontrollpunkte?
- Ist das beschriebene Schema in der Form praktikabel oder gibt es für den Algorithmus (auf dem Papier) eine bessere/elegantere Lösung?

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 5. Jul 2008 23:25
von jno
Wo soll ich anfangen....
Erst noch mal grundsätzlich zum genauen Unterschied zwischen B-Splines und Nurbs: Dass Nurbs rationale B-Splines sind, bei denen einzelne Punkte gewichtet werden können, ist mir klar. Aber nochmal zum Knotenvektor: Ist es richtig, dass bei einem normalen B-Spline, die inneren Knoten immer den Abstand 1 haben? Das wären dann ja quasi einfach mehrere Bezierkurven aneinander gehangen, die sind ja immer genau auf einem Intervall der Länge 1 parametrisiert. Und stimmt es, dass bei den NURBS die inneren Knoten einfach beliebig aufsteigend gewählt werden können? Welchen Einfluss hat diese Wahl dann überhaupt?
Dann noch mal zur richtigen Formel für den de-Boor Algorithmus: Stimmt die Formel auf Folie 17 in cg2_para-Splines? Irgendwie hat in dem Foliensatz einer gepfuscht glaub ich, Folie 11 ist ja auch falsch... Könnte im übrigen auch mal korrigiert werden, wenn jemand einen Fehler feststellt, finde ich. Auf jeden Fall wird in der Formel behauptet, dass das \(\alpha\), was als Faktor vor den de-Boor-Punkten verwendet
wird bei Grad r, \(\frac{t-t_{i+r}}{t_{i+n+r}-t_{i+r}}\) sei. Keine Ahnung, was hier n sein soll. Nach der Notation vom Knotenvektor oben müsste es eigentlich genau das gleiche wie r sein...
Oder ist vielleicht in Wirklichkeit n der richtige Grad und r die Rekursionstiefe? Ich bin verwirrt...

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 12:18
von thomas_kalbe
nun gut: bei uniformen Splines haben die Knoten den gleichen Abstand -- der auch von 1 verschieden sein kann, solange uniform!
Ja klar, Splines sind im Prinzip Bezierkurven, die aber stetig anschliessen (C^1, C^2, ... - stetig differenzierbar).
Eine Bezierkurve kann aber auch beliebig parametrisiert werden, nicht nur in [0,1]. In der VL wurden aber soweit nur in [0,1] param.
Kurven behandelt.

Die Folie 17 stimmt soweit eigentlich.
Im Exponenten N_i^n steht der Grad des Basissplines, auf Folie 17 ist n also der Grad.
Dann startet die Rekursion, d_i^0 werden auf d_i gesetzt, dann weiter wie im deCasteljau-Algorithmus (vom Prinzip her ähnliches Vorgehen).

Ok, so wie's aussieht, bin ich der einzige von den Offiziellen, der hier reinschaut.
Entschuldigt bitte, wenn ich jetzt nicht auf alle Fragen genauestens eingehen kann.
Zumal sich die Fragen nun doch häufen, während es im Semester hier eher ruhig zuging...

gruss,
thomas

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 12:43
von jno
thomas_kalbe hat geschrieben: Die Folie 17 stimmt soweit eigentlich.
Im Exponenten N_i^n steht der Grad des Basissplines, auf Folie 17 ist n also der Grad.
Dann startet die Rekursion, d_i^0 werden auf d_i gesetzt, dann weiter wie im deCasteljau-Algorithmus (vom Prinzip her ähnliches Vorgehen).
Okay, du sagst also n ist der Grad. Macht auch Sinn, da die ersten n+1 Knoten ja gleich sind. In der ersten Zeile der Folie steht allerdings "Sei eine B-Splinekurve [...] vom Grad r ...".
Also sind r und n das Gleiche?

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 12:44
von thomas_kalbe
nochmal zu N_3,2:

N_4,1 setzt sich aus einer Linearkombination von N40 und N50
zusammen, die aber beide 0 sind weil nur N30 einen Wert ungleich
Null hat für das Intervall von [2,3)

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 12:45
von thomas_kalbe
ja, der Satz auf der Folie ist natürlich blödsinn.

Sieht man auch am Knotenvektor, dass hier n der Grad sein muss.

gruss,
thomas

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 13:14
von Tiger80
Also sind r und n das Gleiche?
Das ist blödsinn was auf der Folie steht. Es müsste \(n\) und nicht \(r\) heissen. \(r\) ist eine Variable für den Grad der Basisfunktionen, so habe ich zumindest festgestellt. Ich weiss auch nicht warum diese ganzen Verwirrungen in den Folien mal \(p\) mal \(n\) mal \(r\).

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 13:43
von thomas_kalbe
Nein, r und n sind natürlich nicht dasselbe.

Finde ich auch nicht so toll, dass die Notation in den Folien nicht konsistent ist,
zumal ich mir damit jetzt meinen Sonntag ... (wie ihr auch ...) .

Naja.

Schaut aber doch mal auf Folie 11 im gleichen Foliensatz:

"Sei n <= m und T = ... "
...
"heissen normalisierte B-Splines vom Grad n über T."
Sie sind hier rekursiv definiert, insofern ist tatsächlich irgendwann r = n, nur eben
in der letzten Rekursionsstufe. Vielleicht habt
ihr das gemeint?

gruss,
thomas

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 14:38
von jno
thomas_kalbe hat geschrieben:[...]
Sie sind hier rekursiv definiert, insofern ist tatsächlich irgendwann r = n, nur eben
in der letzten Rekursionsstufe. Vielleicht habt
ihr das gemeint?
jno hat geschrieben:[...]Oder ist vielleicht in Wirklichkeit n der richtige Grad und r die Rekursionstiefe? Ich bin verwirrt...
Ja, genau das hab ich gemeint. Jetzt könnte ich zwar wieder damit anfangen, dass auf http://en.wikipedia.org/wiki/De_Boor's_algorithm dieser Index anders gesetzt ist, da ist nämlich

\(\alpha_{i,k}=\frac{t-t_i}{t_{i+n+1-r}-t_i}}\) anstatt der Formel \(\alpha_{i,k}=\frac{t-t_{i+r}}{t_{i+n+1}-t_{i+r}}}\) in den Folien, aber das ist am Ende sicher aus irgend einem mir nicht ersichtlichen Grund das Gleiche..

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 14:39
von Tiger80
Ja, das meinte ich so. Aber allgemein bei der Def. hätte man \(n\) statt \(r\) schreiben sollen. Danke und Gruss

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 20:54
von Philip
Mich würde immer noch gerne interessieren, was genau n angibt in der folgenden Gleichung:
\(C^w(u) = \sum_{i=0}^n N_{i,p}(u)P_i^w\)
Ist das der höchste Index der Kontrollpunkte?
Ist das der Grad der NURBS?

Re: cg2_Nurbs2.pdf Folie 12

Verfasst: 6. Jul 2008 21:00
von jno
Es muss eigentlich #Kontrollpunkte - 1 sein. Es ist ja zB kein Problem eine Nurbkurve mit Grad 2 und 5 Kontrollpunkten zu haben. Die Tatsache, dass die Kontrollpunkte \(P_i^w\) in der Summe steht, legt jetzt schon nahe, dass über alle Kontrollpunkte summiert wird..