Καμπύλη Μπεζιέ

Στον τομέα της αριθμητικής ανάλυσης των μαθηματικών, μία **καμπύλη Bézier** (καμπύλη Μπεζιέ) είναι μία παραμετρική καμπύλη, η οποία αποτελεί βασικό εργαλείο των διανυσματικών γραφικών του τομέα των γραφικών υπολογιστών και άλλων συγγενών πεδίων. Γενικεύσεις των καμπυλών Bézier σε υψηλότερες διαστάσεις καλούνται επιφάνειες Bézier, εκ των οποίων το τρίγωνο Bézier αποτελεί ειδική περίπτωση.

thumb|right|235px|Κυβική καμπύλη Bézier.
Στα διανυσματικά γραφικά, οι καμπύλες Bézier χρησιμοποιούνται ως μοντέλα ομαλών καμπύλων που μπορούν να αυξομειωθούν απεριόριστα. Τα «μονοπάτια» που συχνά αναφέρονται στα προγράμματα επεξεργασίας εικόνας είναι συνδυασμοί διασυνδεμένων καμπυλών Bézier. Τα μονοπάτια δεν περιορίζονται από τα πλαίσια των τυποποιημένων εικόνων (rasterized images) και υπόκεινται σε μετατροπές. Οι καμπύλες Bézier χρησιμοποιούνται επίσης στην εμψύχωση χαρακτήρα - κινούμενη εικόνα (animation) ως εργαλείο ελέγχου της κίνησης.

Οι καμπύλες Bézier χρησιμοποιούνται και σε χρονικά πεδία ορισμού, συγκεκριμένα στην εμψύχωση χαρακτήρα - κινούμενη εικόνα (animation)  και στη σχεδίαση διεπαφής του χρήστη (user interface design), π.χ. η καμπύλη Bézier μπορεί να χρησιμοποιηθεί για να καθορίσει την ταχύτητα ενός αντικειμένου στο χρόνο, κάνοντας μία εικόνα να κινείται κατευθείαν από ένα σημείο Α σε ένα σημείο Β, παρά να μετακινείται σε συγκεκριμένο αριθμό εικονοστοιχείων(pixel) κάθε φορά. Όταν οι σχεδιαστές animation ή διεπαφής του χρήστη μιλάνε για «φυσική» ή «αίσθηση» μιας εφαρμογής, αναφέρονται σε μία συγκεκριμένη καμπύλη Bézier που χρησιμοποιείται για να ελέγξει την ταχύτητα της συγκεκριμένης κίνησης στο χρόνο.

Οι καμπύλες Μπεζιέ κοινοποιήθηκαν ευρέως το 1962 από τον Γάλλο μηχανικό Πιερ Μπεζιέ, ο οποίος τις χρησιμοποίησε για να σχεδιάσει αυτοκινούμενα σώματα (σώματα αυτοκινήτων). Οι καμπύλες ωστόσο αναπτύχθηκαν για πρώτη φορά το 1959 από τον Πωλ ντε Καστεγιώ, χρησιμοποιώντας τον αλγόριθμο του de Casteljau, μία αριθμητικά ευσταθή μέθοδο για την αξιοποίηση των καμπύλων Bézier.

## Εξέταση περιπτώσεων
Μία καμπύλη Bézier  ορίζεται από ένα σύνολο *σημείων ελέγχου* από **P**0 έως **P***n*, όπου *n* ο βαθμός της καμπύλης (*n* = 1 για γραμμική, 2 για τετραγωνική, 3 για κυβική, κλπ.). Το πρώτο και τελευταίο σημείο ελέγχου είναι πάντα τα δύο σημεία που αποτελούν τα άκρα της καμπύλης. Ωστόσο, τα ενδιάμεσα σημεία ελέγχου (αν υπάρχουν) γενικά δεν κείτονται στην καμπύλη.

### Γραμμικές καμπύλες Bézier
Για 2 δεδομένα σημεία **P**0 και **P**1, μία γραμμική καμπύλη Bézier παίρνει τη μορφή ευθύγραμμου τμήματος μεταξύ των 2 αυτών σημείων. Η καμπύλη δίνεται από τον τύπο:

:\mathbf{B}(t)=\mathbf{P}_0 + t(\mathbf{P}_1-\mathbf{P}_0)=(1-t)\mathbf{P}_0 + t\mathbf{P}_1 \mbox{ , } t \in [0,1]
και αποτελεί μία γραμμική παλινδρόμηση.

### Τετραγωνικές καμπύλες Bézier
Μία τετραγωνική καμπύλη Bézier είναι το μονοπάτι που δημιουργείται από το ίχνος της συνάρτησης **B**(*t*), για δοσμένα σημεία **P**0, **P**1, και **P**2,

: \mathbf{B}(t) = (1 - t)[(1 - t) \mathbf P_0 + t \mathbf P_1] + t [(1 - t) \mathbf P_1 + t \mathbf P_2] \mbox{ , } t \in [0,1],

η οποία μπορεί να μεταφραστεί ως η γραμμική παλινδρόμηση των αντίστοιχων σημείων των γραμμικών καμπυλών Bézier από το **P**0 στο **P**1 και από το **P**1 στο **P**2 αντίστοιχα. Πιο αναλυτικά μπορεί να γραφεί ως εξής:

: \mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + 2(1 - t)t\mathbf{P}_1 + t^{2}\mathbf{P}_2 \mbox{ , } t \in [0,1].

Ξεκινάει από το σημείο **P**0 με φορά το σημείο **P**1, έπειτα στρέφεται για να φτάσει στο  **P**2 στη φορά από το **P**1.  Με άλλα λόγια, οι εφαπτόμενες στα **P**0 και **P**2 διέρχονται από το σημείο **P**1. Αυτό φαίνεται άμεσα από την παράγωγο της καμπύλης Bézier:

: \mathbf{B}'(t) = 2 (1 - t) (\mathbf{P}_1 - \mathbf{P}_0) + 2 t (\mathbf{P}_2 - \mathbf{P}_1) \,.

Μία τετραγωνική καμπύλη Bézier αποτελεί τμήμα παραβολής. Καθώς η παραβολή αποτελεί μία κωνική τομή, κάποιες πηγές αναφέρονται στις τετραγωνικές καμπύλες Bézier ως "κωνικά τόξα".

### Κυβικές καμπύλες Bézier
Τέσσερα σημεία **P**0, **P**1, **P**2 και **P**3 σε ένα επίπεδο ή σε χώρο μεγαλύτερης διάστασης ορίζουν μία κυβική καμπύλη Bézier.
Η καμπύλη ξεκινάει από το σημείο  **P**0 προς το σημείο **P**1 και φτάνει στο σημείο **P**3 από την κατεύθυνση του σημείου **P**2. Συνήθως, δεν θα διέλθει από το σημείο **P**1 ή από το **P**2. Τα σημεία αυτά υπάρχουν μόνο για να παρέχουν κατευθυντικές πληροφορίες. Η απόσταση μεταξύ των σημείων **P**0 και **P**1 καθορίζει το "πόσο μακρυά" μετακινείται η καμπύλη στην κατεύθυνση του  **P**2 πριν στραφεί προς το **P**3.

Γράφοντας **B****P**i,**P**j,**P**k(*t*) για την τετραγωνική καμπύλη Bézier  ορισμένη από τα σημεία **P**i, **P**j, και **P**k, η κυβική καμπύλη Bézier μπορεί να οριστεί ως ένα γραμμικός συνδυασμός δύο τετραγωνικών καμπυλών Bézier:

:\mathbf{B}(t)=(1-t)\mathbf{B}_{\mathbf P_0,\mathbf P_1,\mathbf P_2}(t) + t \mathbf{B}_{\mathbf P_1,\mathbf P_2,\mathbf P_3}(t) \mbox{ , } t \in [0,1].

Η αναλυτική μορφή της καμπύλης είναι:

:\mathbf{B}(t)=(1-t)^3\mathbf{P}_0+3(1-t)^2t\mathbf{P}_1+3(1-t)t^2\mathbf{P}_2+t^3\mathbf{P}_3 \mbox{ , } t \in [0,1].

Για κάποιες τυχαίες τιμές των **P**1 και **P**2 υπάρχει περίπτωση η καμπύλη να τέμνει τον εαυτό της, ή να δημιουργεί γωνία.

## Γενίκευση
Οι καμπύλες Bézier μπορούν να οριστούν για οποιονδήποτε βαθμό *n*.

### Επαναληπτικός ορισμός
Ένας επαναληπτικός ορισμός (σχέση) για καμπύλη Bézier βαθμού *n* την εκφράζει ως γραμμικό συνδυασμό σημείου προς σημείου ενός ζεύγους αντίστοιχων σημείων δύο καμπυλών Bézier βαθμού *n*&nbsp;&minus;&nbsp;1.

Έστω \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n} η καμπύλη Bézier που ορίζεται από τα σημεία **P**0, **P**1,&nbsp;...,&nbsp;**P***n*.  Τότε

:\mathbf{B}_{\mathbf{P}_0}(t) = \mathbf{P}_0 το σημείο εκκίνησης, και

:\mathbf{B}(t) = \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}(t) = (1-t)\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_{n-1}}(t) + t\mathbf{B}_{\mathbf{P}_1\mathbf{P}_2\ldots\mathbf{P}_n}(t)

Η επανάληψη αυτή οπτικοποιείται από τα κινούμενα σχεδιαγράμματα που υπάρχουν παρακάτω.

### Αναλυτικός ορισμός
Ο τύπος εκφράζεται σε αναλυτική μορφή ως εξής:

:
\begin{align}
\mathbf{B}(t) & = \sum_{i=0}^n {n\choose i}(1-t)^{n-i}t^i\mathbf{P}_i \\
& = (1-t)^n\mathbf{P}_0 + {n\choose 1}(1-t)^{n-1}t\mathbf{P}_1 + \cdots \\
& {} \quad \cdots + {n\choose n-1}(1-t)t^{n-1}\mathbf{P}_{n-1} + t^n\mathbf{P}_n,\quad t \in [0,1],
\end{align}


όπου \scriptstyle {n \choose i} είναι διωνυμικοί συντελεστές.

Για παράδειγμα, για *n*&nbsp;=&nbsp;5:

:
\begin{align}
\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\mathbf{P}_2\mathbf{P}_3\mathbf{P}_4\mathbf{P}_5}(t) = \mathbf{B}(t) & = (1-t)^5\mathbf{P}_0 + 5t(1-t)^4\mathbf{P}_1 + 10t^2(1-t)^3 \mathbf{P}_2 \\
& {} \quad + 10t^3 (1-t)^2 \mathbf{P}_3 + 5t^4(1-t) \mathbf{P}_4 + t^5 \mathbf{P}_5,\quad t \in [0,1].
\end{align}


### Ορολογία
Παρατίθεται ορολογία σχετικά με τις παραμετρικές καμπύλες. Έχουμε

:\mathbf{B}(t) = \sum_{i=0}^n \mathbf{b}_{i,n}(t)\mathbf{P}_i,\quad t\in[0,1]

όπου τα πολυώνυμα

:\mathbf{b}_{i,n}(t) = {n\choose i} t^i (1-t)^{n-i},\quad i=0,\ldots n

είναι γνωστά ως πολυώνυμα Bernstein βαθμού *n*.

Σημείωνεται ότι  *t*0&nbsp;=&nbsp;1 , (1&nbsp;&minus;&nbsp;*t*)0&nbsp;=&nbsp;1, και ο διωνυμικός συντελεστής, \scriptstyle {n \choose i}, που εκφράζονται επίσης ως ^n{\mathbf{C}}_i  or {\mathbf{C}_i}^n  είναι:

:{n \choose i} = \frac{n!}{i!(n-i)!}.

Τα σημεία **P***i* καλούνται *σημεία ελέγχου* για τις καμπύλες Bézier. Το πολύγωνο που σχηματίζεται από την ένωση των σημείων της  Bézier με τις ευθείες, ξεκινώντας με το σημείο **P**0 και τελειώνοντας με το σημείο **P***n*, ονομάζεται *πολύγωνο Bézier* (ή *πολύγωνο ελέγχου*). The κυρτό περίβλημα του πολυγώνου Bézier περιέχει (εσωκλύει) την καμπύλη Bézier.

### Ιδιότητες
*Η καμπύλη ξεκινάει στο σημείο **P**0 και τελειώνει στο σημείο **P***n*. Ιδιότητα παρεμβολής τελευταίου σημείου.
*Η καμπύλη είναι ευθεία γραμμή αν και μόνο αν όλα τα σημεία ελέγχου είναι συγγραμμικά.
* Η αρχή (τέλος) της καμπύλης είναι εφαπτόμενη στον πρώτο (τελευταίο) τομέα του πολυγώνου Bézier.
* Μία καμπύλη μπορεί να "σπάσει" σε οποιοδήποτε σημείο σε δύο επιμέρους καμπύλες, ή σε πολλές αυθαίρετες επιμέρους υποκαμπύλες, κάθε μία από τις οποίες αποτελεί επίσης καμπύλη Bézier.
* Κάποιες καμπύλες που φαίνονται απλές, όπως ο κύκλος, δεν μπορούν να περιγραφούν ακριβώς από μία καμπύλη Bézier ή τμηματικά καμπύλη Bézier. Παρόλο που μία κυβική καμπύλη Bézier τεσσάρων τμημάτων μπορεί να προσεγγίσει έναν κύκλο (δείτε Bézier spline), με ένα μέγιστο ακτινικό λάθος λιγότερων από ένα τμήμα σε χίλια, όταν  κάθε εσωτερικό σημείο ελέγχου είναι η απόσταση \textstyle\frac{4\left(\sqrt {2}-1\right)}{3} οριζόντια ή κάθετα από ένα εξωτερικό σημείο ελέγχου σε ένα μοναδιαίο κύκλο. Γενικότερα, μία *n*-στοιχείων κυβική καμπύλη Bézierμπορεί να προσεγγίσει ένα κύκλο, όταν κάθε εσωτερικό σημείο ελέγχου είναι η απόσταση \textstyle\frac{4}{3}\tan(t/4) από ένα εξωτερικό σημείο ελέγχου σε ένα μοναδιαίο κύκλο, όπου *t* είναι 360/*n* μοίρες, και *n* > 2.
* Η καμπύλη σε μία σταθερή μετάθεση (offset curve)από τη δοσμένη καμπύλη Bézier, δεν μπορεί να  σχηματιστεί (εκφραστεί) ακριβώς από μία καμπύλη Bézier (εκτός από κάποιες επουσιώδεις περιπτώσεις).
*Κάθε τετραγωνική καμπύλη Bézier είναι επίσης κυβική, και γενικότερα, κάθε καμπύλη Bézier βαθμού *n* είναι επίσης καμπύλη βαθμού *m* για κάθε *m* > *n*. Συγκεκριμένα, μία καμπύλη βαθμού *n* με σημεία ελέγχου **P**0, …, **P***n* είναι ισοδύναμη (συμπεριλαμβανομένης της παραμετροποίησης) με μία καμπύλη βαθμού *n* + 1 με σημεία ελέγχου **P**'0, …, **P**'*n* + 1, όπου \mathbf P'_k=\tfrac{k}{n+1}\mathbf P_{k-1}+\left(1-\tfrac{k}{n+1}\right)\mathbf P_k.

## Κατασκευή καμπυλών Bézier

### Γραμμικές καμπύλες

Το *t* στη συνάρτηση μιας γραμμικής καμπύλης Bézier μπορεί να θεωρηθεί ως μία περιγραφή του πόσο μακριά βρίσκεται το **B**(*t*) από το **P**0 στο **P**1. Για παράδειγμα αν *t=0.25*, **B**(*t*) θα είναι το ένα τέταρτο της διαδρομής από το σημείο **P**0 στο σημείο **P**1. Όσο το *t* μεταβάλλεται από το 0 στο 1, το **B**(*t*) περιγράφει μία ευθεία γραμμή από το **P**0 στο **P**1.

### Τετραγωνικές καμπύλες
Για τις τετραγωνικές καμπύλες Bézier μπορεί κανείς να κατασκευάσει ενδιάμεσα σημεία **Q**0 και **Q**1 τέτοια ώστε όσο το *t* μεταβάλλεται από το 0 στο 1:
* Το σημείο **Q**0 μεταβάλλεται από το **P**0 στο **P**1 και περιγράφει μία γραμμική καμπύλη Bézier.
* Το σημείο **Q**1 μεταβάλλεται από το **P**1 στο **P**2 και περιγράφει μία γραμμική καμπύλη Bézier.
* Το σημείο **B**(*t*) μεταβάλλεται από το **Q**0 στο **Q**1 και περιγράφει μία τετραγωνική καμπύλη Bézier.




### Καμπύλες μεγαλύτερου βαθμού
Για καμπύλες μεγαλύτερου βαθμού απαιτούνται αντίστοιχα περισσότερα ενδιάμεσα σημεία. Για κυβικές καμπύλες μπορούν να κατασκευαστούν ενδιάμεσα σημεία **Q**0,  **Q**1, και **Q**2 που περιγράφουν γραμμικές καμπύλες Bézier, και σημεία **R**0 & **R**1 που περιγράφουν τετραγωνικές καμπύλες Bézier:




Για τετάρτου βαθμού καμπύλες μπορούν να κατασκευαστούν ενδιάμεσα σημεία **Q**0,  **Q**1, **Q**2 & **Q**3 που περιγράφουν γραμμικές καμπύλες Bézier, σημεία **R**0, **R**1 & **R**2 που περιγράφουν τετραγωνικές καμπύλες Bézier, και σημεία **S**0 & **S**1 που περιγράφουν κυβικές καμπύλες Bézier:




Για καμπύλες πέμπτου βαθμού, μπορούν να κατασκευαστούν παρομοίως ενδιάμεσα σημεία.

## Αύξηση βαθμού Καμπύλης
Μία καμπύλη Bézier βαθμού *n* μπορεί να μετατραπεί σε καμπύλη Bézier βαθμού *n*&nbsp;+&nbsp;1 **με το ίδιο σχήμα (μορφή)**. 
Για την αύξηση του βαθμού, χρησιμοποιείται η ισότητα \mathbf{B}(t) = (1-t)\mathbf{B}(t) + t\mathbf{B}(t). Καθε στοιχείο (τμήμα)  \mathbf{b}_{i,n}(t)\mathbf{P}_i πολλαπλασιάζεται με (1&nbsp;&minus;&nbsp;*t*) ή *t*, έτσι αυξάνεται ο βαθμός κατά μία μονάδα. Στο παράδειγμα που ακολουθεί ο βαθμός της καμπύλης αυξάνεται από 2 σε&nbsp;3.

: 
\begin{align}
& {} \quad (1 - t)^{2}\mathbf{P}_0 + 2(1 - t)t\mathbf{P}_1 + t^{2}\mathbf{P}_2 \\
& = (1 - t)^{3}\mathbf{P}_0 + (1 - t)^{2}t\mathbf{P}_0 + 2(1 - t)^{2}t\mathbf{P}_1 \\
& {} \qquad + 2(1 - t)t^{2}\mathbf{P}_1 + (1 - t)t^{2}\mathbf{P}_2 + t^{3}\mathbf{P}_2 \\
& = (1 - t)^{3}\mathbf{P}_0
+ 3(1 - t)^{2}t\frac{\mathbf{P}_0 + 2\mathbf{P}_1}{3}
+ 3(1 - t)t^{2}\frac{2\mathbf{P}_1 + \mathbf{P}_2}{3}
+ t^{3}\mathbf{P}_2
\end{align}


Για τυχαίο (αυθαίρετο) *n* χρησιμοποιούνται οι ισότητες

:{n+1 \choose i}(1-t)\mathbf{b}_{i,n} = {n \choose i} \mathbf{b}_{i,n+1},
\quad (1-t)\mathbf{b}_{i,n} = \frac{n+1-i}{n+1} \mathbf{b}_{i,n+1}

:{n+1 \choose i+1} t\mathbf{b}_{i,n} = {n \choose i} \mathbf{b}_{i+1,n+1},
\quad t\mathbf{b}_{i,n} = \frac{i+1}{n+1} \mathbf{b}_{i+1,n+1}

:
\begin{align}
\mathbf{B}(t) & = (1-t)\sum_{i=0}^n \mathbf{b}_{i,n}(t)\mathbf{P}_i
+ t\sum_{i=0}^n \mathbf{b}_{i,n}(t)\mathbf{P}_i \\
& = \sum_{i=0}^n \frac{n+1-i}{n+1}\mathbf{b}_{i,n+1}(t)\mathbf{P}_i
+ \sum_{i=0}^n \frac{i+1}{n+1}\mathbf{b}_{i+1,n+1}(t)\mathbf{P}_i \\
& = \sum_{i=0}^{n+1} \left(\frac{i}{n+1}\mathbf{P}_{i-1} + \frac{n+1-i}{n+1}\mathbf{P}_i\right) \mathbf{b}_{i,n+1}(t)
= \sum_{i=0}^{n+1} \mathbf{b}_{i,n+1}(t)\mathbf{P'}_i
\end{align}


υποδεικνύοντας αυθαίρετα \mathbf{P}_{-1} και \mathbf{P}_{n+1}.

Άρα τα νέα σημεία ελέγχου είναι 

: \mathbf{P'}_i = \frac{i}{n+1}\mathbf{P}_{i-1} + \frac{n+1-i}{n+1}\mathbf{P}_i,\quad i=0,\ldots, n+1.

## Δείτε επίσης
*Πολυώνυμο Μπέρνσταϊν
*NURBS
*Καμπύλη Ερμίτ
*Αλγόριθμος του ντε Καστελζώ

## Σημειώσεις


## Αναφορές

*Donald Knuth: *Metafont: the Program*, Addison-Wesley 1986, pp.&nbsp;123–131. Excellent discussion of implementation details; available for free as part of the TeX distribution.
*Dr Thomas Sederberg, BYU *Bézier curves*, https://web.archive.org/web/20060221000535/http://www.tsplines.com/resources/class_notes/Bezier_curves.pdf
* J.D. Foley *et al.*: *[[Computer Graphics: Principles and Practice#Second Edition in C|Computer Graphics: Principles and Practice in C]]* (2nd ed., Addison Wesley, 1992)

## Εξωτερικοί σύνδεσμοι
*Finding All Intersections of Two Bézier Curves. – Locating all the intersections between two Bézier curves is a difficult general problem, because of the variety of degenerate cases.  By Richard J. Kinch.
* From Bézier to Bernstein  Feature Column from American Mathematical Society
* A Primer on Bézier Curves A detailed explanation of implementing Bezier curves and associated graphics algorithms, with interactive graphics

Κατηγορία:Καμπύλες