I beregningsmatematik er de Castelljou-algoritmen , opkaldt efter dens opfinder Paul de Castelljou , en rekursiv metode til at bestemme formen på Bernstein-polynomier eller Bezier-kurver . De Castelljot-algoritmen kan også bruges til at opdele en Bezier-kurve i to dele med en vilkårlig værdi af parameteren .
Fordelen ved algoritmen er dens højere beregningsstabilitet sammenlignet med den direkte metode.
Givet et Bernstein polynomium B af grad n
hvor b er grundlaget for Bernstein -polynomiet, kan polynomiet i punktet t 0 defineres ved hjælp af gentagelsesrelationen
Derefter kan definitionen på punktet defineres i algoritmens trin. Resultatet er givet af:
Også en Bézier-kurve kan opdeles i et punkt i to kurver med tilsvarende ankerpunkter:
Den geometriske fortolkning af de Castelljous algoritme er enkel:
Følgende illustration viser denne proces for en kubisk Bezier-kurve:
Det skal bemærkes, at de mellemliggende punkter opnået under byggeprocessen er referencepunkterne for to nye Bezier-kurver, som nøjagtigt falder sammen med den oprindelige, og tilsammen giver den originale Bezier-kurve. Denne algoritme bestemmer ikke kun punktet på kurven ved , men deler også kurven op i to dele ved , og giver også en beskrivelse af de to underkurver i Bezier-form (i parametrisk repræsentation ).
Den beskrevne algoritme er gyldig for ikke-rationelle Bezier-kurver. For at beregne rationelle kurver i , kan du projicere et punkt ind i ; for eksempel skal en kurve i 3D-rum have kontrolpunkter og vægte projiceret ind i vægtkontrolpunkter . Derefter fortsætter algoritmen normalt med at interpolere i . De resulterende 4D-punkter kan projiceres tilbage i 3D-rummet ved hjælp af perspektivdeling.
Generelt svarer operationer på rationelle kurver (eller overflader) til operationer på ikke-rationelle kurver i et projektivt rum . At repræsentere ankerpunkter som vægtede er ofte nyttigt til at definere rationelle kurver.