Ik ben de laatste tijd met B-Splines bezig geweest, maar er zit iets raars in de theorie waar ik niet helemaal uit kom.
Een B-Spline curve gaat door de begin- en eindcontrolepunten heen als de eerste en laatste knopen in de knot vector d keer herhaald worden, waarbij d de graad van de B-Splines is. Dit is al het eerste punt waarop het misgaat, want verschillende bronnen noemen verschillende aantallen zelfs als in aanmerking genomen wordt dat sommigen de graad van de B-Splines nemen en sommigen 1 hoger dan dat voor het algoritme (twee voorbeelden, pagina 17-18 en 47 respectievelijk). Na dit uitgetest te hebben lijkt de knoop d+1 keer voor te moeten komen in de knot vector met de bovengenoemde definitie voor d.
Er is echter nog een probleem. Neem bijvoorbeeld een simpele B-Spline curve van graad 1 en 3 controlepunten met knot vector [0, 0, 1, 2, 2]. Deze zou dus door de eerste 2 controlepunten heen moeten gaan, maar dit is niet wat uit de recurrence komt (zie eerste link pagina 17)
Voor het eerste punt hebben we t=0, d=1 en k=0 aangenomen dat de indices van de knot vector bij 0 beginnen. x/0 = arbitrary, meestal 0 voor snellere evaluatie.
B0,1(0) = (0 - 0) / (0 - 0) * B0,0(0) + (1 - 0) / (1 - 0) * B1,0(0) = 0 + 1 = 1
B1,1(0) = (0 - 0) / (1 - 0) * B1,0(0) + (2 - 0) / (2 - 1) * B2,0(0) = 0 + 0 = 0
B2,1(0) = (0 - 1) / (2 - 1) * B2,0(0) + (2 - 0) / (2 - 2) * B3,0(0) = 0 + 0 = 0
So far so good, maar het loopt iets anders bij het laatste control point
B0,1(2) = (2 - 0) / (0 - 0) * B0,0(2) + (1 - 2) / (1 - 0) * B1,0(2) = 0 + 0 = 0
B1,1(2) = (2 - 0) / (1 - 0) * B1,0(2) + (2 - 2) / (2 - 1) * B2,0(2) = 0 + 0 = 0
B2,1(2) = (2 - 1) / (2 - 1) * B2,0(2) + (2 - 2) / (2 - 2) * B3,0(2) = 0 + 0 = 0
Zoals je ziet bereikt de curve het laatste controlepunt nooit omdat het altijd naar 0 evalueert. Dit komt doordat de evaluatie van Bk,d(t) voor d=0 vereist dat tk <= t < tk+1 om als 1 te evalueren en 0 neemt anders. Doordat t bij het laatste controlepunt vanwege het herhalen van de controlepunten gelijk is aan de hoogste knoop kan t < tk+1 nooit waar zijn waardoor dit altijd naar 0 evalueert. De < veranderen in <= is geen oplossing omdat dit voor vreemde situaties zorgt bij de middelste controlepunten. Bijvoorbeeld:
B0,1(1) = (1 - 0) / (0 - 0) * B0,0(1) + (1 - 1) / (1 - 0) * B1,0(1) = 0 + 0 = 0
B1,1(1) = (1 - 0) / (1 - 0) * B1,0(1) + (2 - 1) / (2 - 1) * B2,0(1) = 1 + 1 = 2
B2,1(1) = (1 - 1) / (2 - 1) * B2,0(1) + (2 - 1) / (2 - 2) * B3,0(1) = 0 + 0 = 0
Wat ervoor zorgt dat de curve voorbij het tweede controlepunt schiet alvorens weer naar de normale curve terug te keren, wat de curve een bizarre "stekel" geeft wat duidelijk niet de bedoeling is.
Nu is mijn vraag: wat gaat hier verkeerd? Ik moet haast wel iets verkeerd geinterpreteerd hebben, maar ik kom er niet uit wat. Ik heb dit ook uitgeprobeerd met andere formules die bij andere definities van d en andere hoeveelheden herhaalde knopen (1 herhaalde knoop minder gaat bij d=1 nog goed maar daarna niet meer) en ik krijg er steeds ongewenste resultaten uit of dezelfde als hier gedemonstreerd zijn.
Laatste berichten
- 23:25 2013 – Augustus Vraag 3
- 23:07 Rood laserlicht 2
- 23:04 Bruine vlekken op treinaanwijzerbord 5
- 15:28 Vraag 2009 Juli Vraag 5 5
- 12:51 positie 2
- 10:44 Schroefdraad berekening 8
- 24 apr [scheikunde] Kan chloorgas de geleiding van elektriciteit belemmeren? 9
- 23 apr Weerfrustratie 9
- 23 apr geen minkowski-ruimte toch? Doe ik dit nou fout? 15
- 23 apr do-re-mi-fa-so vliegtuigen 7
- 23 apr Kunnen quantum Zonnecellen 190% quantum efficiënt zijn 3
- 23 apr De Euro Nederlandse 100 qubit computer komt eraan
- 23 apr projectiel 8
- 23 apr Verschil tussen deze 2 vragen 5
- 23 apr [scheikunde] berekeningen labo vitamine c bepaling 1
- 22 apr [wiskunde] rode en witte ballen verdelen 8
- 22 apr Rotatie van het heelal 41
- 22 apr Muntje opgooien 14
- 21 apr Reactiviteit silyl enol ethers 1
- 21 apr Criterium voor vochtretentie
Nieuwsberichten
- 04 mar Een nieuw soort magnetisme: altermagnetisme
- 31 okt AI kan via stem diabetes vaststellen 11
- 21 okt Einstein krijgt wéér gelijk 45
- 07 feb witter dan wit 20
- 19 jun irrigatie en de aardas
B-Splines
Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter