Bézier-kurve

De Bezier kurver er kurver polynomisk parametrisk design udviklet til karosseridele af biler . De blev designet af Paul de Casteljau i 1959 for Citroën og uafhængigt af Pierre Bézier i 1962 for Renault (Paul de Casteljaus arbejde var fortroligt, det er navnet på Bézier, der er gået til eftertiden). De har mange anvendelser i billedet syntese og skrifttype rendering . De fødte mange andre matematiske objekter .

Før Bézier var der justeringskurver kaldet splines , men fejlen var at ændre deres udseende under en koordinatrotation, hvilket gjorde dem ubrugelige i CAD . Bézier startede fra en geometrisk tilgang baseret på lineariteten af det euklidiske rum og den allerede eksisterende teori om barycenteret  : hvis definitionen er rent geometrisk, griber intet referencepunkt ind, da konstruktionen er uafhængig af den, hvilket ikke var tilfældet for splines ( splines, der overholder Bézier-principperne, vil efterfølgende blive kaldt B-splines ).

Generel teori

Bézier-kurven for de n +1 kontrolpunkter ( P 0 , ..., P n ) , er det sæt af punkter defineret af parametriske repræsentation , for t ∈ [0; 1] og hvor Bn
i
er Bernstein-polynomierne .

Sekvensen af ​​punkterne P 0 , ..., P n danner "  Bézier- kontrolpolygonen ".

Eksempler

Derefter tilføjer vi n +1 kontrolpunkterne for hver polynomkoefficient:

med t ∈ [0; 1] . Det er derfor Bézier-kurven for grad 2.

Derefter tilføjer vi n +1 kontrolpunkterne for hver polynomkoefficient, og vi får,

med t ∈ [0; 1] . Det er derfor Bézier-kurven for grad 3.

Bemærk Da Bernstein-polynomerne udgør en skillevæg af enhed, har vi gjort det . Summen af ​​koefficienterne er derfor ikke-nul for alle t , derfor er alle punkterne P ( t ) i kurven defineret korrekt.

Ejendomme

Kubiske Bézier-kurver

Fire punkter P 0 , P 1 , P 2 og P 3 definerer en kubisk Bézier-kurve. Kurven tegnes med start fra punkt P 0 , retning P 1 og ankommer til punkt P 3 i retning P 2- P 3 . Generelt betyder kurven ikke passerer enten gennem P 1 eller via P 2  : disse punkter kun give retningsinformation. Afstanden mellem P 0 og P 1 bestemmer bevægelseshastigheden i retning af P 1, inden den drejes til P 3 .

Bezier curve.svg

Fra ovenstående skrives den parametriske form af kurven som en affin kombination af kontrolpunkterne

for 0 ≤ t ≤ 1 .
Vi kan her tydeligt se delingsegenskaben for enheden af ​​Bernstein-polynomer: ifølge Newtons binomiale formel af rækkefølge 3,

Summen af ​​koefficienterne forbundet med kontrolpunkterne er værd 1.

Bézier-kurver er interessante til billedbehandling af to hovedårsager:

eller tilsvarende

, ,

Opmærksomhed  : i modsætning til anvendelsen i matematik er her punkter (strengere vektorer) og ikke komponenterne i en vektor. Derudover skal de angivne operationer i den anden formulering udføres i rækkefølge fra top til bund, fra venstre mod højre og gentager operationerne, selvom de vises flere gange identisk, dette med de nye værdier på grund af det foregående (matematisk er dette som at nedbryde 4 × 4-matrixen som et produkt af 6 4 × 4-matricer med to 1'er , to ½'er og 0'er overalt).

Mere præcist kan vi nedbryde kurven P ( t ) i to kurver P L og P R hvis kontrol punkter er henholdsvis ( L 1 , L 2 , L 3 , L 4 ) og ( R 1 , R 2 , R 3 , R 4 ) med

og

Bezier rec.png

Under dette rekursive opkald til plot P ( t ) , da Bézier-kurven passerer gennem det første og det sidste kontrolpunkt, er placeringen af ​​enderne af hvert stykke kendt ( L 1 , L 4 = R 1 og R 4 ) kendt. Når en sådan afbildning er implementeret, kan kriteriet til standsning af tilbagefald være knyttet til afstanden mellem sub-kurven, der skal afsættes, og segmentet [ L 1 , L 4 ] f.eks.

Bemærk  : Flydende reelt tal-aritmetik er tilgængeligt direkte på moderne processorer, det er blevet meget hurtigere end den hukommelsesallokering, der er nødvendig for en rekursion. Desuden tillader en metode, der tilvejebringer pixelerne i kurven, der skal tegnes uden at gå trin for trin, ikke antialiasing . Rekursion er derfor ikke længere den rigtige metode til at tegne Bézier-kurver; metoden vil med fordel blive anvendt, som krydser pixel trin for trin, mens der ved hvert trin beregnes en "tangentfejl", som kan anvendes til antialiasing .

Beregningen af ​​et punkt i en Bézier-kurve kan også udføres ved hjælp af Horner-metoden ved først at beregne vektorkoefficienterne a i polynomet:

Eksempler

Lineær Bézier-kurve (grad 1) Styrepunkterne P 0 og P 1 definerer Bézier kurve givet ved ligningen: Det er derfor segmentet [P0, P1]. Kvadratisk Bézier-kurve (grad 2) En kvadratisk Bézier-kurve er kurven B ( t ) defineret af kontrolpunkterne P 0 , P 1 og P 2 . Disse kvadratiske kurver bruges stadig i vid udstrækning i dag (for eksempel i glyf-definitioner af skrifttyper i TrueType- format og OpenType- skrifttyper i deres TrueType-kompatible sort). Men hvis de gør det muligt at sikre kontinuiteten i tangensen af ​​to forbundne kurver, gør de det ikke (generelt) muligt at bevare kontinuiteten i krumningen ved sammenkoblingspunkterne. For at overvinde denne ulempe er det derefter nødvendigt at øge antallet af indbyrdes forbundne buer for at reducere krumningsbrudene mellem hver af dem, hvilket begrænser deres værdi og kan føre til et mere komplekst design af kurverne (med flere hjørner og kontrol peger på position). Kubisk Bézier-kurve (grad 3) En kubisk Bézier kurve er kurven B ( t ) defineret af kontrolpunkterne P 0 , P 1 , P 2, og P 3 . Dens parametriske form er: Dette er de Bézier-kurver, der er mest anvendte i grafisk design (fordi de gør det muligt at sikre ikke kun kontinuiteten i tangens af to tilsluttede kurver, men også deres krumning, samtidig med at man undgår at skulle placere mange hjørner og punkter. Kontrol). De bruges for eksempel i PostScript- sproget og definitionen af ​​glyffer af "type 1" -skrifttyper såvel som i OpenType-skrifttyper i deres sort CFF ( Compact Font Format ), der bruger de samme definitioner af hjørner og kontrolpunkter. Bézier-kurve med en grad større end 3 De bruges sjældent. Vi foretrækker at reducere os til brugen af ​​kubiske kurver, der er forbundet for at bevare fordelen ved krumningens kontinuitet. Til dette er det nødvendigt og tilstrækkeligt, at det sidste punkt i en kurve er det første af et andet. Der opnås således en kontinuerlig kurve. For eksempel for en kurve defineret af punkterne A , B , C , D , E , F og G bruger vi de kubiske kurver defineret af A , B , C og D og af D , E , F og G og kontinuitet er således sikret. At have en kurve C 1 i D , vi behøver [ C , D ] = [ D , E ], og hvis der ud vi ønsker at være C 2 i D , derefter [ B , D ] = [ D , F ], og det samme for successive derivater. Men denne transformation mister kontinuitet C 3 i D (og den eneste måde at overvinde dette er at indsætte flere kontrolpunkter (for at øge antallet af kubiske buer for at opnå en bedre tilnærmelse og i det mindste at sikre kontinuitet C 3 i indledende punkter, men ikke omkring de tilføjede kontrolpunkter). Interessen for Bézier-kurver i grad 4 eller mere er dog mere begrænset i dag på grund af fremskridt og integration af understøttelsen af ​​ikke-ensartede B-splines i moderne grafikbiblioteker og især NURBS til rationelle koefficienter svarende til ikke- ensartede B-splines (men med hele vægte i progression ikke nødvendigvis aritmetiske, som det er tilfældet med Bézier-kurver), men disse B-splines beregnes dog først i et projektivt rum med homogene koordinater , og som gør det muligt at bevare alle fordelene af B-splines med grad 3 eller højere, herunder i tilfælde af koniske (ikke-lineære) kurver, som det er umuligt at repræsentere nøjagtigt med andre Bézier-kurver end med en tilnærmelse af et stort antal hjørner og kontrolpunkter.

Ansøgninger

Syntese af billeder

Animation

Gengivelser af skrifttyper

Musikalsk gravering

Rationel Bézier-kurve

For at beskrive kurver som cirkler meget nøjagtigt (selvom det i praksis er tilnærmelser med Bézier-kurver, der er tilstrækkelige), er der behov for yderligere frihedsgrader.

Ideen er at tilføje vægte til kontrolpunkterne (disse er ). Nævneren er kun der for at normalisere summen af ​​de yderligere vægte, så kurven defineres som en konveks kombination af kontrolpunkterne.

En rationel Bézier-kurve har følgende generelle form:

Bibliografi

Noter og referencer

  1. (in) "The curve commands" SVG 1.1 (Anden udgave) - 16. august 2011 ( uofficiel fransk oversættelse )

Se også

Relaterede artikler

eksterne links