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

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
(Ανακατεύθυνση από Kαμπύλη Μπεζιέ)
Μετάβαση σε: πλοήγηση, αναζήτηση
Καμπύλη Bézier
Ταξινόμηση
Dewey 518
MSC2010 65Dxx

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

Κυβική καμπύλη Bézier.

Στα διανυσματικά γραφικά , οι καμπύλες Bézier χρησιμοποιούνται ως μοντέλα ομαλών καμπύλων που μπορούν να αυξομειωθούν απεριόριστα. Τα “μονοπάτια” που συχνά αναφέρονται στα προγράμματα επεξεργασίας εικόνας[note 1] είναι συνδυασμοί διασυνδεμένων καμπυλών Bézier. Τα μονοπάτια δεν περιορίζονται από τα πλαίσια των τυποποιημένων εικόνων (rasterized images) και υπόκεινται σε μετατροπές. Οι καμπύλες Bézier χρησιμοποιούνται επίσης στην εμψύχωση χαρακτήρα - κινούμενη εικόνα (animation) ως εργαλείο ελέγχου της κίνησης[note 2].

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

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

Εξέταση Περιπτώσεων[Επεξεργασία | επεξεργασία κώδικα]

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

Γραμμικές Καμπύλες Bézier[Επεξεργασία | επεξεργασία κώδικα]

Για 2 δεδομένα σημεία P0 και P1, μία γραμμική καμπύλη 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), για δοσμένα σημεία P0, P1, και P2,

\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 από το P0 στο P1 και από το P1 στο P2 αντίστοιχα. Πιο αναλυτικά μπορεί να γραφεί ως εξής:

\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].

Ξεκινάει από το σημείο P0 με φορά το σημείο P1, έπειτα στρέφεται για να φτάσει στο P2 στη φορά από το P1. Με άλλα λόγια, οι εφαπτόμενες στα P0 και P2 διέρχονται από το σημείο P1. Αυτό φαίνεται άμεσα από την παράγωγο της καμπύλης 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[Επεξεργασία | επεξεργασία κώδικα]

Τέσσερα σημεία P0, P1, P2 και P3 σε ένα επίπεδο ή σε χώρο μεγαλύτερης διάστασης ορίζουν μία κυβική καμπύλη Bézier. Η καμπύλη ξεκινάει από το σημείο P0 προς το σημείο P1 και φτάνει στο σημείο P3 από την κατεύθυνση του σημείου P2. Συνήθως, δεν θα διέλθει από το σημείο P1 ή από το P2. Τα σημεία αυτά υπάρχουν μόνο για να παρέχουν κατευθυντικές πληροφορίες. Η απόσταση μεταξύ των σημείων P0 και P1 καθορίζει το "πόσο μακρυά" μετακινείται η καμπύλη στην κατεύθυνση του P2 πριν στραφεί προς το P3.

Γράφοντας BPi,Pj,Pk(t) για την τετραγωνική καμπύλη Bézier ορισμένη από τα σημεία Pi, Pj, και Pk, η κυβική καμπύλη 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].

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

Γενίκευση[Επεξεργασία | επεξεργασία κώδικα]

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

Επαναληπτικός Ορισμός[Επεξεργασία | επεξεργασία κώδικα]

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

Έστω \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n} η καμπύλη Bézier που ορίζεται από τα σημεία P0, P1, ..., Pn. Τότε

\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 = 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.

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

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

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

Ιδιότητες[Επεξεργασία | επεξεργασία κώδικα]

  • Η καμπύλη ξεκινάει στο σημείο P0 και τελειώνει στο σημείο Pn. Ιδιότητα παρεμβολής τελευταίου σημείου.
  • Η καμπύλη είναι ευθεία γραμμή αν και μόνο αν όλα τα σημεία ελέγχου είναι συγγραμμικά.
  • Η αρχή (τέλος) της καμπύλης είναι εφαπτόμενη στον πρώτο (τελευταίο) τομέα του πολυγώνου 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 με σημεία ελέγχου P0, …, Pn είναι ισοδύναμη (συμπεριλαμβανομένης της παραμετροποίησης) με μία καμπύλη βαθμού 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[Επεξεργασία | επεξεργασία κώδικα]

Γραμμικές Καμπύλες[Επεξεργασία | επεξεργασία κώδικα]

Animation of a linear Bézier curve, t in [0,1]
Κινητική Απεικόνιση Γραμμικής Καμπύλης Bézier, t ανήκει στο [0,1]

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

Τετραγωνικές Καμπύλες[Επεξεργασία | επεξεργασία κώδικα]

Για τις τετραγωνικές καμπύλες Bézier μπορεί κανείς να κατασκευάσει ενδιάμεσα σημεία Q0 και Q1 τέτοια ώστε όσο το t μεταβάλλεται από το 0 στο 1:

  • Το σημείο Q0 μεταβάλλεται από το P0 στο P1 και περιγράφει μία γραμμική καμπύλη Bézier.
  • Το σημείο Q1 μεταβάλλεται από το P1 στο P2 και περιγράφει μία γραμμική καμπύλη Bézier.
  • Το σημείο B(t) μεταβάλλεται από το Q0 στο Q1 και περιγράφει μία τετραγωνική καμπύλη Bézier.
Construction of a quadratic Bézier curve Animation of a quadratic Bézier curve, t in [0,1]
Κατασκευή Τετραγωνικής Καμπύλης Bézier Κινητική Απεικόνιση Τετραγωνικής Καμπύλης Bézier, t ανήκει στο [0,1]

Καμπύλες Μεγαλύτερου Βαθμού[Επεξεργασία | επεξεργασία κώδικα]

Για καμπύλες μεγαλύτερου βαθμού απαιτούνται αντίστοιχα περισσότερα ενδιάμεσα σημεία. Για κυβικές καμπύλες μπορούν να κατασκευαστούν ενδιάμεσα σημεία Q0, Q1, και Q2 που περιγράφουν γραμμικές καμπύλες Bézier, και σημεία R0 & R1 που περιγράφουν τετραγωνικές καμπύλες Bézier:

Κατασκευή Κυβικής Καμπύλης Bézier Κινητική Απεικόνιση Κυβικής Καμπύλης Bézier, t in [0,1]
Κατασκευή Κυβικής Καμπύλης Bézier Κινητική Απεικόνιση Κυβικής Καμπύλης Bézier, t ανήκει στο [0,1]

Για τετάρτου βαθμού καμπύλες μπορούν να κατασκευαστούν ενδιάμεσα σημεία Q0, Q1, Q2 & Q3 που περιγράφουν γραμμικές καμπύλες Bézier, σημεία R0, R1 & R2 που περιγράφουν τετραγωνικές καμπύλες Bézier, και σημεία S0 & S1 που περιγράφουν κυβικές καμπύλες Bézier:

Construction of a quartic Bézier curve Animation of a quartic Bézier curve, t in [0,1]
Κατασκευή Καμπύλης Bézier Τετάρτου Βαθμού Κινητική Απεικόνιση Καμπύλης Bézier Τετάρτου Βαθμού, t ανήκει στο [0,1]

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

Αύξηση Βαθμού Καμπύλης[Επεξεργασία | επεξεργασία κώδικα]

Μία καμπύλη Bézier βαθμού n μπορεί να μετατραπεί σε καμπύλη Bézier βαθμού n + 1 με το ίδιο σχήμα (μορφή). Για την αύξηση του βαθμού, χρησιμοποιείται η ισότητα \mathbf{B}(t) = (1-t)\mathbf{B}(t) + t\mathbf{B}(t). Καθε στοιχείο (τμήμα) \mathbf{b}_{i,n}(t)\mathbf{P}_i πολλαπλασιάζεται με (1 − t) ή t, έτσι αυξάνεται ο βαθμός κατά μία μονάδα. Στο παράδειγμα που ακολουθεί ο βαθμός της καμπύλης αυξάνεται από 2 σε 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}.

Άρα τα νέα σημεία ελέγχου είναι [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.

Εφαρμογές[Επεξεργασία | επεξεργασία κώδικα]

Δείτε Επίσης[Επεξεργασία | επεξεργασία κώδικα]

Σημειώσεις[Επεξεργασία | επεξεργασία κώδικα]

  1. Προγράμματα διαχείρισης και επεξεργασίας εικόνας όπως τα Inkscape, Adobe Photoshop, και GIMP.
  2. Σε προγράμματα εφαρμογών σχεδίασης αντικειμένων και κινούμενης εικόνας-εμψύχωσης χαρακτήρα (animation) Adobe Flash, Adobe After Effects, Microsoft Expression Blend, Blender, Autodesk Maya και Autodesk 3ds max.

Αναφορές[Επεξεργασία | επεξεργασία κώδικα]

  1. Farin, Gerald (1997), Curves and surfaces for computer-aided geometric design (4 έκδοση), Elsevier Science & Technology Books, ISBN 978 0 12249054 5 

Εξωτερικοί Σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]