Bézier-kurva är en matematisk uträkning av en kurva. Begreppet används inom den matematiska grenen numerisk analys, och själva Bézierkurvorna är mycket vanligt förekommande inom datorgrafik (inklusive CAD-system[1]).

Animering av en kvadratisk Bézierkurva.

Den genombrytande insikten som ledde fram till Bézier-kurvan var att istället för att definiera kurvan med punkter som ligger på kurvan, så använder man så kallade kontrollpunkter nära kurvan. Kontrollpunkterna bildar en kontrollpolygon. Istället för att ändra kurvan direkt, kan man istället ändra kontroll-polygonen och kurvan följer på ett intuitivt sätt[2]. Bézier-kurvan är en parametriserad kurva som använder Bernsteins polynom som bas. Det är intuitivt att tänka sig parametrisering av tiden, där kontrollpunkterna bestämmer riktningen och farten av kurvan.[3]

Historik och användning

redigera

Bézier-kurvor användes och utvecklades först inom bilindustrin för att lösa problem med att rita och presentera ritningar på datorn. År 1959 anställde det franska företagen Citroën matematikern Paul de Faget de Casteljau. De Casteljau anpassade Bernsteinpolynomet för sin definition av kurvorna och utvecklade den nu kallade de Casteljau-algoritmen. Att hans arbete inte blev känt förrän senare berodde på att Citroën höll hans arbete hemligt under en lång tid. Istället var det Pierre Bézier som fick ge namn åt Bézier-kurvan. Bézier som ledde designavdelningen Rénault, ett annat franskt företag, jobbade självständigt och utvecklade en kurva som visade sig vara identisk med de Casteljaus.[2]

Inom vektorgrafik är Bézierkurvor ett viktigt verktyg. De används för att skapa modeller med rundade kurvor som kan skalas obegränsat, utan att förlora kvalitet. Banor, som de ofta kallas i olika bildbehandlingsprogram som Adobe Illustrator, Adobe Photoshop och GIMP, är kombinationer av Bézier-kurvor som lagts ihop och bildar längre linjer. Dessa banor har inte samma restriktioner som rastergrafik och är intuitiva att använda. De används också inom animering som ett verktyg för att kontrollera rörelse i applikationer som Adobe Flash, Adobe After Effects och Autodesk 3ds Max.

Generell definition med exempel.

redigera

För Bézier-kurvan utnyttjas Bernstein's polynom som grund. Med en given sekvens av punkter   representeras Bézier-kurvan av grad n (order n+1) av

 
Animering av en linjär Bézier-kurva

 

där

 

är Bernstein-polynomet och där   är binomialkoefficienter. [4]

Punkterna   är ett set av kontrollpunkter där den första respektive den sista alltid är start- och ändpunkterna på kurvan. Kurvan behöver inte passera igenom de andra punkterna, utan de   punkterna utnyttjas för att ge information om i vilken riktning och hastighet kurvan ska röra sig.

 
Animering av en kvadratisk Bézierkurva.

I det enklaste fallet har man två stycket kontrollpunkter   och   som bildar en rät linje.

 

För n=2 fås alltså tre kontrollpunkter   och en så kallad kvadratisk Bézier-kurva:

 

För n=3 fås en kubisk Bézier-kurva:

 
Kubisk Bézierkurva.

 

Kurvan kan också representeras genom matriser, som till exempel för n=3 enligt

 [3]

Egenskaper hos Bézier-kurvan.

redigera

Bézier-kurvan är invariant under affin avbildning. Om man vill transformera kurvan behöver man alltså bara avbilda kontrollpunkterna  . Denna egenskap är speciellt viktig inom grafiken: då man ska beräkna en kurva som till exempel blivit roterad behöver man bara avbilda kontrollpunkterna och sedan beräkna kurvan utifrån avbildningen.

En annan egenskap är att kurvan tangerar kontroll-polygonen som skapas mellan kontrollpunkterna  . Detta kan ses av förstaderivatan:

 

Speciellt   och  .

Med Bézier-kurvans kontrollpunkter kan man också skapa ett konvext hölje i vilket kurvan alltid kommer befinna sig. Denna egenskap kan vara väldigt effektiv vid skärningsproblem. Om man till exempel vill se om kurvor skär varandra kan man utesluta alla kurvor där höljena inte skär varandra, alltså om den konvexa mängden inte delar några element. [5]

Se även

redigera

Referenser

redigera