Bezier kurva

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 6 maj 2019; kontroller kräver 26 redigeringar .

Bezier-kurvor  är typer av kurvor som föreslagits på 60-talet av XX-talet oberoende av Pierre Bezier från Renaults bilföretag och Paul de Casteljo från Citroen - företaget, där de användes för att designa bilkarosser.

Även om de Casteljous upptäckt gjordes något tidigare än Béziers (1959), publicerades hans forskning inte och hölls hemlig av företaget förrän i slutet av 1960-talet.

Bézier-kurvan är ett specialfall av Bernstein-polynomen , beskrev av den ryske matematikern Sergei Natanovich Bernstein 1912.

Kurvor introducerades först för allmänheten 1962 av den franske ingenjören Pierre Bézier , som, efter att ha utvecklat dem oberoende av de Casteljot, använde dem för datorstödd design av bilkarosser. Kurvorna fick sitt namn efter Béziers, och den rekursiva metod han utvecklade för att definiera kurvor (de Casteljos algoritm) fick sitt namn efter de Casteljo .

Därefter blev denna upptäckt ett av de viktigaste verktygen för datorstödda designsystem och datorgrafikprogram .

Definition

Låt sekvensen av kontrollpunkter , där och för , anges i dimensionsutrymmet över .

Sedan uppsättningen av punkter med koordinater , parametriskt givna av uttryck

för var en för ,

kallas en Bezier- kurva .

Ett gradpolynom med avseende på en parameter kallas basfunktionen (motsvarande kontrollpunkten ) för en Bézier-kurva, eller ett Bernstein-polynom .

Här  är antalet kombinationer från till .

Anteckningar

  1. Bezier-kurvan som motsvarar båda och är punkten .
  2. Bezier-kurvan som motsvarar paret , det vill säga vid , är ett (linjärt) parametriserat segment som förbinder punkten (at ) med punkten (at ).
  3. I valfri ordning innehåller Bezier-kurvan både en punkt (detta är bilden av parametern ) och en punkt (detta är bilden av parametern ).
  4. En Bezier-kurva (i det allmänna fallet, det vill säga om den inte har degenererats till en punkt ) är orienterbar, eftersom den är bilden av ett orienterat segment . Kontrollpunktsekvenser motsvarar Bezier-kurvor, som sammanfaller som uppsättningar av punkter, men har (i allmänhet) motsatta orienteringar.
  5. Bezier-kurvorna motsvarar sekvenserna av kontrollpunkter och matchar inte vid .
  6. Om du ändrar , då bara .

Typer av Bezier-kurvor

Linjära kurvor

När n = 1 är kurvan ett rakt linjesegment, referenspunkterna P 0 och P 1 bestämmer dess början och slut. Kurvan ges av ekvationen:

.

Kvadratiska kurvor

En kvadratisk Bezier-kurva (n = 2) definieras av tre ankarpunkter: P 0 , P 1 och P 2 .

.

Kvadratiska Bezier-kurvor i splines används för att beskriva formen på tecken i TrueType-teckensnitt och SWF - filer.

Kubikkurvor

I parametrisk form beskrivs en kubisk Bezier-kurva (n = 3) med följande ekvation:

.

Fyra referenspunkter P 0 , P 1 , P 2 och P 3 givna i 2- eller 3-dimensionellt utrymme bestämmer kurvans form.

Linjen utgår från punkten P 0 , på väg mot P 1 och slutar vid punkten P 3 , närmar sig den från sidan P 2 . Det vill säga att kurvan inte passerar genom punkterna P 1 och P 2 , de används för att indikera dess riktning. Längden på segmentet mellan P 0 och P 1 bestämmer hur snart kurvan kommer att vända till P 3 .

I matrisform skrivs en kubisk Bézier-kurva enligt följande:

,

där kallas den grundläggande Bezier-matrisen:

Moderna grafiksystem och format som PostScript (liksom Adobe Illustrator och Portable Document Format (PDF) -format baserade på det ), Scalable Vector Graphics (SVG) [1] , Metafont , CorelDraw och GIMP använder Bezier-splines för att representera kurvade former. , sammansatt av kubiska kurvor.

Bygga Bezier-kurvor

Linjära kurvor

Parametern t i funktionen som beskriver det linjära fallet för Bezier-kurvan bestämmer exakt var i avståndet från P 0 till P 1 B ( t ) finns . Till exempel, vid t = 0,25, motsvarar värdet av funktionen B ( t ) en fjärdedel av avståndet mellan punkterna P 0 och P 1 . Parametern t ändras från 0 till 1, och B ( t ) beskriver ett linjesegment mellan punkterna P 0 och P 1 .

Kvadratiska kurvor

För att konstruera kvadratiska Bezier-kurvor krävs att man väljer två mellanliggande punkter Q 0 och Q 1 från villkoret att parametern t varierar från 0 till 1:

Kurvor av högre grader

För att konstruera kurvor av högre ordning krävs på motsvarande sätt fler mellanliggande punkter. För en kubisk kurva är dessa mellanpunkter Q 0 , Q 1 och Q 2 som beskriver linjära kurvor, samt punkter R 0 och R 1 som beskriver kvadratiska kurvor: en enklare ekvation .

För kurvor av fjärde graden kommer dessa att vara punkter Q 0 , Q 1 , Q 2 och Q 3 som beskriver linjära kurvor, R 0 , R 1 och R 2 som beskriver kvadratiska kurvor, samt punkter S 0 och S 1 som beskriver kubisk Bezier kurvor:

Bezier kurvegenskaper

Applikationer i datorgrafik

På grund av den enkla inställningen och manipuleringen har Bezier-kurvor funnit bred tillämpning i datorgrafik för modellering av jämna linjer. Kurvan ligger helt inom det konvexa skrovet av dess referenspunkter. Denna egenskap hos Bezier-kurvor, å ena sidan, förenklar i hög grad uppgiften att hitta kurvornas skärningspunkter (om de konvexa skroven på ankarpunkterna inte skär varandra, så skärs inte kurvorna själva), och å andra sidan , möjliggör den intuitiv kontroll av kurvparametrarna i det grafiska gränssnittet med hjälp av dess ankarpunkter. Dessutom kan affina kurvomvandlingar ( translation , skalning , rotation , etc.) också utföras genom att tillämpa lämpliga transformationer på ankarpunkterna.

De viktigaste är Bezier-kurvor av andra och tredje graden (kvadratisk och kubisk). Kurvor av högre grader under bearbetning kräver fler beräkningar och används mindre frekvent för praktiska ändamål. För att bygga linjer med komplexa former kan individuella Bezier-kurvor kopplas sekventiellt till varandra i en Bezier -spline . För att säkerställa en jämn linje vid korsningen av två kurvor måste tre angränsande ankarpunkter för båda kurvorna ligga på samma räta linje. I vektorgrafikprogram , som Adobe Illustrator eller Inkscape , är sådana fragment kända som "paths" ( path ), och i 3DS Max och liknande 3D-modelleringsprogram kallas Bezier-kurvor för "splines".

Konvertera kvadratiska Bézier-kurvor till kubiska

En kvadratisk Bezier-kurva med koordinater omvandlas till en kubisk Bezier-kurva med koordinater .

Samplingsfrekvens för Bezier-kurvor [2]

Samplingsfrekvensen definieras enligt följande:

, det vill säga varje nästa punkt måste skilja sig från den föregående med 1 (låt oss säga en pixel). Dessutom, om du frågar så här:

Genom det kan du beräkna .

Låt oss lösa denna ekvation för första ordningens Bezier-kurvor (linjär):

Låt oss skriva skillnaden mellan punkter för en axel:

Låt oss ta de vanliga faktorerna utanför parentes:

Låt oss hitta :

På detta sätt kan du beräkna samplingshastigheten för att korsa en viss axel på en Bezier-kurva av en viss ordning. Det vill säga, du måste få 16 sådana ekvationer för Bezier-kurvor från 1:a till 16:e ordningen, det är alltid satt av punkter, det kommer att räcka med att ersätta deras koordinater i den resulterande ekvationen för att kringgå kurvan med den minsta entydiga diskretiseringsnivån .

Se även

Anteckningar

  1. World Wide Web Consortium ( W3C ). Skalbar vektorgrafik (SVG) 1.1 (andra upplagan). Kapitel 8: Paths  (engelska) (16 augusti 2011). — W3C-rekommendation. Datum för åtkomst: 21 maj 2012. Arkiverad från originalet 24 juni 2012.
  2. Algoritmer: Bezier-kurvor . designermanuals.blogspot.com . Hämtad 9 januari 2021. Arkiverad från originalet 12 januari 2021.

Litteratur

Länkar