Bézier-kurve

De Bezier-kurver er kurvene polynom med parametre utviklet teknisk felt for kroppsdeler fra biler . De ble designet av Paul de Casteljau i 1959 for Citroën, og uavhengig av Pierre Bézier i 1962 for Renault (Paul de Casteljaus verk var konfidensielt, det er navnet Bézier som har gått til ettertiden). De har mange programmer i bildesyntese og skriftgjengivelse . De fødte mange andre matematiske objekter .

Før Bézier var det justeringskurver kalt splines , men feilen var å endre utseendet under en koordinatrotasjon, noe som gjorde dem ubrukelige i CAD . Bézier startet fra en geometrisk tilnærming basert på lineariteten til det euklidiske rommet og den allerede eksisterende teorien om barycenter  : hvis definisjonen er rent geometrisk, griper ikke noe referansepunkt inn siden konstruksjonen er uavhengig av den, noe som ikke var tilfelle for splines ( splines i samsvar med Bézier-prinsippene vil senere bli kalt B-splines ).

Generell teori

Bézier-kurven for n +1 kontrollpunktene ( P 0 , ..., P n ) , er settet med punkter definert av den parametriske representasjonen , for t ∈ [0; 1] og hvor Bn
i
er Bernstein-polynomene .

Punktserien P 0 , ..., P n danner "  Bézier control polygon ".

Eksempler

Deretter legger vi til n +1 kontrollpunktene for hver polynomkoeffisient:

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

Deretter legger vi til n +1 kontrollpunktene for hver polynomkoeffisient, og vi får,

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

Merk Siden Bernstein-polynomene danner en partisjon av enhet, har vi gjort det . Summen av koeffisientene er derfor ikke null for alle t , derfor er alle punktene P ( t ) i kurven riktig definert.

Eiendommer

Kubiske Bézier-kurver

Fire punkter P 0 , P 1 , P 2 og P 3 definerer en kubisk Bézier-kurve. Kurven tegnes fra punkt P 0 , retning P 1 og ankommer punkt P 3 i retning P 2- P 3 . Generelt går ikke kurven verken gjennom P 1 eller gjennom P 2  : disse punktene gir bare retningsinformasjon. Avstanden mellom P 0 og P 1 bestemmer bevegelseshastigheten i retning P 1 før du svinger til P 3 .

Bezier curve.svg

Fra ovenstående er den parametriske formen på kurven skrevet som en affinert kombinasjon av kontrollpunktene

for 0 ≤ t ≤ 1 .
Vi kan tydelig se her delingsegenskapen til enheten av Bernstein-polynomer: i henhold til Newtons binomiale formel av ordre 3,

Summen av koeffisientene knyttet til kontrollpunktene er verdt 1.

Bézier-kurver er interessante for bildebehandling av to hovedårsaker:

eller tilsvarende

, ,

Oppmerksomhet  : i motsetning til bruk i matematikk, er her punkter (strengere vektorer) og ikke komponentene i en vektor. I tillegg, i den andre formuleringen, må de angitte operasjonene utføres i rekkefølge, fra topp til bunn, fra venstre til høyre og gjenta operasjonene selv om de vises flere ganger identisk, dette med de nye verdiene på grunn av forrige (matematisk, dette er som å bryte ned 4 × 4-matrisen som et produkt av 6 4 × 4-matriser med to 1-er , to ½-er og 0-er overalt ellers).

Mer presist, kan vi dekomponere kurve P ( t ) inn i to kurver P l og P R hvis styrepunkter er henholdsvis ( L 1 , L 2 , L 3 , l 4 ) og ( R 1 , R 2 , R 3 , R 4 ) med

og

Bezier rec.png

I løpet av dette rekursive anropet til å plotte P ( t ) , siden Bézier-kurven passerer gjennom det første og siste kontrollpunktet, er posisjonen til endene på hvert stykke ( L 1 , L 4 = R 1 og R 4 ) kjent. Når et slikt plott er implementert, kan kriteriet for å stoppe gjentakelsen knyttes til avstanden mellom underkurven som skal plottes og segmentet [ L 1 , L 4 ] for eksempel.

Merk  : Flytende reeltall-aritmetikk er tilgjengelig direkte på moderne prosessorer, det har blitt mye raskere enn minnetildelingen som er nødvendig for en rekursjon. Videre tillater ikke en metode som gir piksler i kurven som skal tegnes uten å gå trinn for trinn, antialiasing . Rekursjon er derfor ikke lenger den riktige metoden for å tegne Bézier-kurver; metoden vil fordelaktig bli brukt som krysser pikslene trinn for trinn, og beregner i hvert trinn en "tangentfeil" som kan brukes til antialiasing .

Beregningen av et punkt i en Bézier-kurve kan også utføres ved hjelp av Horner-metoden ved først å beregne vektorkoeffisientene a i polynomet:

Eksempler

Lineær Bézier-kurve (av grad 1) Kontrollpunktene P 0 og P 1 definerer Bézier-kurven gitt av ligningen: Det er derfor segmentet [P0, P1]. Kvadratisk Bézier-kurve (av grad 2) En kvadratisk Bézier-kurve er kurven B ( t ) definert av kontrollpunktene P 0 , P 1 og P 2 . Disse kvadratiske kurvene brukes fortsatt mye i dag (for eksempel i definisjoner av skrifter i TrueType- format og OpenType- skrifter i deres TrueType-kompatible utvalg). Imidlertid, hvis de gjør det mulig å sikre kontinuiteten i tangens av to tilkoblede kurver, gjør de ikke (generelt) det mulig å bevare kontinuiteten i krumningen ved punktene for samtrafikk. For å overvinne denne ulempen er det da nødvendig å øke antall sammenkoblede buer for å redusere krumningsbruddene mellom hver av dem, noe som begrenser verdien og kan føre til en mer kompleks utforming av kurvene (med flere hjørner og kontroll peker på posisjon). Kubisk Bézier-kurve (av grad 3) En kubisk Bézier-kurve er kurven B ( t ) definert av kontrollpunktene P 0 , P 1 , P 2 og P 3 . Dens parametriske form er: Dette er Bézier-kurvene som er mest brukt i grafisk design (fordi de gjør det mulig å sikre ikke bare kontinuiteten i tangens av to tilkoblede kurver, men også kurvaturen, samtidig som man unngår å måtte plassere mange hjørner og punkter. Kontroll). De brukes for eksempel i PostScript- språket og definisjonen av tegnene for "type 1" -skrifttyper, så vel som i OpenType-skriftene i deres utvalg CFF ( Compact Font Format ) som bruker de samme definisjonene av hjørner og kontrollpunkter. Bézier-kurve av grad større enn 3 De brukes sjelden. Vi foretrekker å redusere oss til bruk av kubiske kurver som er koblet sammen for å bevare fordelen av krumningens kontinuitet. For dette er det nødvendig og tilstrekkelig at det siste punktet i en kurve er det første av en annen. En kontinuerlig kurve oppnås således. For eksempel, for en kurve definert av punktene A , B , C , D , E , F og G , bruker vi de kubiske kurvene definert av A , B , C og D , og av D , E , F og G og kontinuitet er dermed sikret. For å ha en kurve C 1 i D trenger vi [ C , D ] = [ D , E ], og hvis vi i tillegg vil at den skal være C 2 i D , så [ B , D ] = [ D , F ], og det samme for påfølgende derivater. Imidlertid mister denne transformasjonen kontinuiteten C 3 i D (og den eneste måten å løse dette på er å sette inn flere kontrollpunkter (for å øke antall kubikk buer for å oppnå en bedre tilnærmelse og i det minste for å sikre kontinuitet C 3 i innledende poeng, men ikke rundt de ekstra kontrollpunktene). Interessen for Bézier-kurver av grad 4 eller mer er imidlertid mer begrenset i dag på grunn av fremgang og integrering av støtten til ikke-ensartede B-splines i moderne grafikkbiblioteker, og spesielt NURBS , til rasjonelle koeffisienter, tilsvarende ikke- ensartede B-splines (men med hele vekter i progresjon ikke nødvendigvis aritmetiske, slik tilfellet er med Bézier-kurver), men disse B-splines blir imidlertid beregnet først i et prosjektivt rom med koordinater homogene , og som gjør det mulig å beholde alle fordelene av B-splines av grad 3 eller høyere, inkludert når det gjelder koniske (ikke-lineære) kurver som er umulige å representere nøyaktig med Bézier-kurver enn med en tilnærming av et stort antall hjørner og kontrollpunkter.

applikasjoner

Syntese av bilder

Animasjon

Gjengivelse av skrift

Musikalsk gravering

Rasjonell Bézier-kurve

For å beskrive kurver som sirkler veldig nøyaktig (selv om det i praksis er tilnærminger med Bézier-kurver, er det behov for ytterligere frihetsgrader.

Ideen er å legge til vekter på kontrollpunktene (disse er ). Nevneren er bare der for å normalisere summen av tilleggsvektene, slik at kurven er definert som en konveks kombinasjon av kontrollpunktene.

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

Bibliografi

Merknader og referanser

  1. (in) "The curve commands" SVG 1.1 (Second Edition) - 16. august 2011 ( uoffisiell fransk oversettelse )

Se også

Relaterte artikler

Eksterne linker