søndag den 21. august 2016

Bézierkurver

For nyligt kom snakken i festligt lag forbi Bézier-kurver - det kan der siges meget klogt om (som f.eks. hos wikipedia). Der kan også siges meget vrøvl, og vi var vist langt nok ude på aftenen til, at jeg gjorde det sidste. Men det var for mig anledning til at genbesøge de fascinerede kurver, og selvom det hurtigt kan udarte sig i megen matematik, så er de faktisk overraskende nemme at konstruere på papir.

Hvis man er vant til at arbejde med Bézier kurver i grafiske værktøjer, så arbejder man med 3. grads eller kubiske kurver (som har to kontrolpunkter, en til hver ende af kurven). Men lad os starte med 2. grad eller kvadratiske kurver (som kun har et kontrolpunkt):


Ideen er simpel: I den ene ende starter man med fuldt ud at være på den ene linje (fra endepunkt til kontrolpunkt), og blander man trinvist med den anden linje (fra kontrolpunkt og til det andet endepunkt) indtil man fuldtud er på den anden linje i det andet endepunkt.

Tegner man det i frihånd, så kan fint nøjes med at lade kurven tangere hjælpelinjerne, som ovenfor. Men der er tale om en parametriceret kurve, hvilket illustreres af dette andet eksempel:


Her har jeg fremhævet tangentpunktet 3/8-del inde på kurven.

En af de fine ting ved en Bézier-kurve er, at den tangerer linjen til kontrolpunktet når man kommer til endepunktet. Det er mao. nemt at få en kurve, som kan forsættes i en lodret linje, som ovenfor. Men hvad hvis man gerne vil kontrollere begge endepunkters hældning? En mulighed er selvfølgelig at sammenstykke to 2. grads kurver, så de deler et endepunkt på linjen imellem de to kontrolpunkter, som hver især giver den rette hældning for den anden ende af kurverne:


Her sidder den midt imellem de to punkter, men man kan selvfølgelig også flytte den tættere på de to reelle kontrolpunkter.

Men vi kunne også sammenblande to 2. gradskurver - hvis vi kalder endepunkterne for E1 hhv. E2 og kontrolpunkterne for K1 hhv. K2, så vil den ene kurve gå fra E1 til K2 med K1 som kontrolpunkt, og den anden gå fra K1 til E2 med K2 som kontrolpunkt.


Her er det sammenblandingen en 1/4-del inde på begge kurver, som er markeret. Den sammenblandede kurve tangerer linjen imellem de to kurvers 1/4-dels tangentpunkter, en 1/4 inde.

Dette giver en 3.grads, eller kubisk, Bézier-kurve:


Det kræver en del mere arbejde at tegne sådan en kurve (og hvis man kigger efter, kan man også se, at jeg har tegnet skævt nogle gange). Men det er bestemt muligt med en lineal og noget forholdstalsregning (eller en passer, hvis man er mere ihærdig), og den virker mindre "bulet" end ovenfor, hvor det var to 2. grads kurver, som blev stykket sammen.

Hvis man er meget ambitiøs, så kan man sammenstykke to 3. grads kurver på samme måde, som de to 2. grads kurver blev, og det får man så en 4. grads kurve ud af. Jeg overlader det som øvelse til læseren (der er eksempel på en 4. og på en 5. grads kurve på wikipedia - jeg ville bare vise, at det faktisk kan "tegnes i hånden").