Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο Γραφικά με υπολογιστές Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διαλέξεις #05 & #06 Αλγόριθμος Σχεδίασης Κύκλου Αλγόριθμος Σχεδίασης Έλλειψης Φοίβος Μυλωνάς Γραφικά με υπολογιστές 1
Άδεια χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα Ιονίου Πανεπιστημίου» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σχεδίαση Κύκλου - Γενικά Υπάρχουν πολλοί αλγόριθμοι για κωνικές τομές. Κύριο μέλημα είναι η αποφυγή τριγωνομετρικών πράξεων. Εκμετάλλευση της κεντρικής συμμετρίας. Υπολογίζεται η καμπύλη για ένα μόνο οκταμόριο (π.χ. το ο ) και τα υπόλοιπα pixels χρωματίζονται συμμετρικά. 4
Σχεδίαση Κύκλου - Γενικά Εξίσωση κύκλου: όπου r είναι η ακτίνα του κύκλου. Ένας απλός αλγόριθμος σχεδίασης κύκλου θα μπορούσε να προκύψει λύνοντας την εξίσωση ως προς y (για κάθε τιμή του x, υπολογίζεται η αντίστοιχη τιμή του y). 5
Σχεδίαση Κύκλου - Γενικά Για ακτίνα κύκλου r =0 έχουμε: 6
Σχεδίαση Κύκλου - Γενικά Δεν είναι έξυπνη/αποδοτική λύση! Πρώτον, ο κύκλος που προκύπτει έχει μεγάλα κενά όπου η κλήση προσεγγίζει την κάθετο. Δεύτερον, οι υπολογισμοί δεν είναι πολύ αποτελεσματικοί. Η πράξη πολ/σμού (τετράγωνο). Η πράξη τετραγωνικής ρίζας πρέπει να αποφεύγουμε αυτή την πράξη. Χρειαζόμαστε μια πιο αποτελεσματική και ακριβέστερη λύση. 7
Σχεδίαση Κύκλου Πολικές Συντεταγμένες Εξίσωση κύκλου: X=r*cosθ+x c Y=r*sinθ+y c όπου: 0º θ 360º ή 0 θ 6.8 (*π) Προβλήματα: Να πάρουμε απόφαση για την αύξηση σε θ! Υπολογισμοί cos, sin 8
Σχεδίαση Κύκλου - Συμμετρία Εκμετάλλευση 8-πλης συμμετρίας Αρκεί ο υπολογισμός σε 1 οκταμόριο (π.χ. ο ) Τα υπόλοιπα οκταμόρια υπολογίζονται με βάση τη συμμετρία 9
Σχεδίαση Κύκλου - Συμμετρία Σχεδιασμός των 8 συμμετρικών σημείων του κύκλου, άπαξ και προσδιοριστεί 1 σημείο (x,y) του ου οκταμορίου: circle_symmetry(int x, y, colour c) { setpixel(x, y, c); setpixel(y, x, c); setpixel(y, -x, c); setpixel(x, -y, c); setpixel(-x, -y, c); setpixel(-y, -x, c); setpixel(-y, x, c); setpixel(-x, y, c); } 10
Αλγόριθμος Bresenham για Κύκλο Ο Jack Bresenham εργάστηκε για 7 χρόνια στην IBM πριν γίνει πανεπιστημιακός, όπου και ανέπτυξε τους διάσημους πλέον αλγόριθμους του στις αρχές του 1960. 11
Αλγόριθμος Bresenham για Κύκλο ( ο ) r: η ακτίνα του κύκλου Το κέντρο του είναι το pixel (0,0) Ο αλγόριθμος ξεκινάει από το pixel (0,r) και σχεδιάζει μόλις κάτω από το ιδεατό τόξο του κύκλου 1
Αλγόριθμος Bresenham για Κύκλο Σχεδιάζει ένα κυκλικό τόξο στο ο οκταμόριο Η μεταβλητή x αυξάνεται σε κάθε βήμα. Όταν η τιμή της συνάρτησης του κύκλου γίνει θετική (το pixel βρίσκεται εκτός κύκλου), το y μειώνεται 13
Αλγόριθμος Bresenham για Κύκλο πλησιέστερο σημείο στην ιδεατή πορεία του κύκλου Έστω ότι βρισκόμαστε στο σημείο (x i,y i ). Το επόμενο θα είναι (x i +1,y i ) ή (x i +1,y i -1) 14
Αλγόριθμος Bresenham για Κύκλο Η απόφαση στηρίζεται στην απόσταση της αναμενόμενης τιμής του y επί της τροχιάς του κύκλου από τα δυο υποψήφια pixels. Προσπαθούμε να υπολογίσουμε την επόμενη θέση με μοναδικά στοιχεία την τρέχουσα θέση και την ακτίνα του κύκλου. 15
Αλγόριθμος Bresenham για Κύκλο 6 5 4 3 1 3 4 16
Αλγόριθμος Bresenham για Κύκλο M 6 5 4 3 1 3 4 17
Αλγόριθμος Bresenham για Κύκλο M 6 5 4 3 1 3 4 18
Αλγόριθμος Μεταβλητή απόφασης: όπου: e i = d 1 d d 1 = y i -y και d = y - (y i - 1) Αν e i 0, επιλέγεται το σημείο (x i +1, y i -1) αλλιώς επιλέγεται το σημείο (x i +1, y i ) 19
Υπολογισμός του e i Επειδή για x=x i +1 ισχύει ότι: y =r -(x i +1), έχουμε: e i = d 1 d = y i - y y + (y i -1) Άρα: e i = y i - r + (x i +1) + (y i -1) - r + (x i +1) e i = (x i +1) + y i + (y i -1) r (Α) 0
Αναδρομικός υπολογισμός e i+1 To σφάλμα για την επόμενη θέση e i+1 υπολογίζεται επαναληπτικά ως εξής: e i+1 = (x i+1 +1) + y i+1 + (y i+1-1) - r = (x i +) + y i+1 + (y i+1-1) - r {x i+1 = x i + 1} = x i + 8x i + 8+ y i+1 + y i+1 - y i+1 +1 -r = (x i +1) + 4x i + 6+ y i+1 - y i+1 + 1- r { από εξ. (Α) } = e i - y i + y i -1 + r + 4x i + 6 + y i+1 - y i+1 + 1 - r = e i + 4x i + 6 + (y i+1 - y i ) - (y i+1 - y i ) το μόνο άγνωστο! 1
Τελικός τύπος υπολογισμού Το y i+1 εξαρτάται από το e i, οπότε: Τέχνασμα υπολογισμού e i+1 : Αν e i < 0 y i+1 = y i e i+1 = e i + 4(x i +1) + Αν e i 0 y i+1 = y i 1, e i+1 = e i + 4x i + 6 + ((y i -1) - y i ) (y i -1- y i ) e i+1 = e i + 4(x i +1) + 4(y i 1)
Παρατηρήσεις Θεωρώντας σαν πρώτο σημείο του ου οκταμορίου το σημείο (x,y)=(0,r): Από (Α): e i = (x i +1) + y i + (y i -1) r αρχική τιμή μεταβλ. απόφασης: e 1 = + r + (r 1) r = 3 r Για μεταφορά του κύκλου από το (0,0) στο (x 0,y 0 ) αρκεί να αντικατασταθεί η κλήση circle_symmetry(x,y,colour); από: circle_symmetry(x-x 0,y-y 0,colour); 3
Υλοποίηση circle(int r, colour c) { int x, y, e; x = 0; y = r; e = 3 *r; // αρχική τιμή e while (x <= y){ circle_ symmetry(x, y, colour); x++; if (e >= 0) { y--; e = e+4*(x-y)+10 } e = e+4*x+6; } } 4
Παράδειγμα 1 r = 10 e 0 = 3 r = -17 Αρχικό σημείο (x 0, y 0 ) = (0, 10) 5
Παράδειγμα 1 r = 10 e 0 = 3 r = -17 Αρχικό σημείο (x 0, y 0 ) = (0, 10) e 1 = -17+ 4*0 + 6 = -11 e = -11+ 4*1 + 6 = -1 e 3 = -1+ 4* + 6 = 13 Αν e i < 0 e 4 = 13 + 4(3 10) + 10 = -5 y i+1 = y i e i+1 = e i +4(x i +1)+ Αν e i 0 y i+1 = y i 1, e i+1 = e i +4(x i +1)+ 4(y i 1) 6
Παράδειγμα 1 r = 10 e 0 = 3 r = -17 Αρχικό σημείο (x 0, y 0 ) = (0, 10) 10 i e i x i, y i 0-17 (0, 10) 1-11 (1, 10) -1 (, 10) 3 13 (3, 10) 4-5 (4, 9) 5 15 (5, 9) 6 9 (6, 8) 7 (7,7) 9 8 7 6 5 4 3 1 0 0 1 3 4 5 6 7 8 9 10 7
Παράδειγμα r = 6 e 0 = 3 r = -9 Αρχικό σημείο (x 0, y 0 ) = (-, 4) Για υπολογισμούς: (x 0, y 0 ) = (0, r) = (0, 6) Αν e i < 0 y i+1 = y i e i+1 = e i +4(x i +1)+ Αν e i 0 y i+1 = y i 1, e i+1 = e i +4(x i +1)+ 4(y i 1) 8
Παράδειγμα r = 6 e 0 = 3 r = -9 Αρχικό σημείο (x 0, y 0 ) = (-, 4) Για υπολογισμούς: (x 0, y 0 ) = (0, r) = (0, 6) Αν e i < 0 y i+1 = y i e i+1 = e i +4(x i +1)+ e 1 = -9+ 4*0 + 6 = -3 e = -3+ 4*1 + 6 = 7 e 3 = 7 + 4( 6) + 10 = 1 e 4 = 1 + 4(3 5) + 10 = 3 Αν e i 0 y i+1 = y i 1, e i+1 = e i +4(x i +1)+ 4(y i 1) 9
Παράδειγμα r = 6 e 0 = 3 r = -9 Αρχικό σημείο (x 0, y 0 ) = (-, 4) Για υπολογισμούς: (x 0, y 0 ) = (0, r) = (0, 6) i e i x i, y i 0-9 (-, 10) 1-3 (-1, 10) 7 (0, 10) 3 1 (1, 9) 4 3 (, 8) 5 (3, 7) 10 9 8 7 6 5 4 3 1 0-1 6 7 - - -1 0 1 3 4 30
Αλγόριθμος Σχεδίασης Κύκλου Αλγόριθμος Σχεδίασης Έλλειψης 31
Σχεδίαση Έλλειψης - Γενικά Απλοϊκά, μια έλλειψη είναι ένας επιμηκυμένος κύκλος! Επομένως, οι ελλειπτικές καμπύλες μπορούν να παραχθούν με την τροποποίηση των διαδικασιών για το σχεδιασμό κύκλων έλλειψης κατά μήκος του μικρού και του μεγάλου άξονα. 3
Σχεδίαση Έλλειψης - Γενικά Έλλειψη Ένας τροποποιημένος κύκλος του οποίου η ακτίνα λαμβάνει τιμές μεταξύ μιας μέγιστης τιμής σε μία κατεύθυνση (μεγάλος άξονας) και μιας minimum τιμής στην perpendicular κατεύθυνση (μικρός άξονας). F 1 d 1 P=(x,y) F d Το άθροισμα των δύο αποστάσεων d 1 και d, μεταξύ των σταθερών σημείων F 1 και F (που ονομάζονται foci της έλλεψης) προς οποιοδήποτε σημείο P επάνω στην έλλειψη, είναι σταθερό: d 1 + d = constant 33
Σχεδίαση Έλλειψης - Γενικά Αν εκφράσουμε τις αποστάσεις d 1 και d σε focal συντεταγμένες θα έχουμε: F 1 = (x 1, x ) και F = (x, y ): ( x x ) + ( y y ) + ( x x ) + ( y y ) = constant 1 1 r y r x Καρτεσιανές συντεταγμένες: x x c y y c + = 1 r x r y Πολικές συντεταγμένες: x= x + r cosθ sinθ c y c x y = y + r 34
Σχεδίαση Έλλειψης - Γενικά Υπάρχουν πολλοί αλγόριθμοι για κωνικές τομές. Κύριο μέλημα είναι η αποφυγή τριγωνομετρικών πράξεων. Αλγόριθμος Αγάθου-Θεοχάρη-Μπεμ (1998) Γρήγορος Μικρή απαίτηση ακρίβειας ακεραίων Σωστή μετάβαση περιοχής Επιδέχεται αντι-ταύτισης 35
Σχεδίαση Έλλειψης - Γενικά Εξίσωση έλλειψης με κέντρο (0,0): x /a + y /b = 1 4-πλή συμμετρία: δημιουργούμε μόνο περιοχές 1, χωρίζονται από το σημείο όπου dy/dx= 1 Κλίση: dy/dx = -b x/a y 36
Σχεδίαση Έλλειψης - Γενικά Επεξεργαζόμαστε το 1 ο τεταρτημόριο παίρνοντας μοναδιαία βήματα κατά την διεύθυνση των x, όταν η κλίση της καμπύλης είναι μεγαλύτερη του -1, ενώ παίρνουμε μοναδιαία βήματα κατά τη διεύθυνση των y, όταν η κλίση της καμπύλης είναι μικρότερη του -1. Κλίση: dy/dx = -1 => b x = a y 37
Σχεδίαση Έλλειψης - Γενικά Θα βρούμε: 1. Επαναληπτικές εκφράσεις για τον υπολογισμό των μεταβλητών απόφασης στις περιοχές d Ι,i και d Ι,i+1 / d ΙΙ,i και d ΙΙ,i+1. Αρχικές τιμές των μεταβλητών απόφασης d Ι,0 / d ΙΙ,0 3. Μία συνθήκη που να σηματοδοτεί την μετάβαση από την περιοχή Ι στην περιοχή ΙΙ. 38
Μεταβλητή απόφασης περιοχής Ι Έστω αρχικό σημείο: (0,b) της περιοχής Ι Περιοχή Ι: άξονας κύριας κίνησης ο X Εκκίνηση από το (0, b) Τέλος περιοχής όταν dy/dx = -1 39
Μεταβλητή απόφασης περιοχής Ι Ορίζουμε: d 1 = y i y d = y (y i 1) και θέτουμε: d = d 1 d = (y i y ) (y (y i 1) ) Η σύγκριση του d με το 0 καθορίζει την επιλογή B ή D 40
Μεταβλητή απόφασης περιοχής Ι Κάνουμε πράξεις & θέτουμε: ε = y i y, οπότε: d = d 1 d = (y i y ) (y (y i 1) ) = y i y y + (y i 1) = y i y y + y i y i + 1 = y i y y i + 1 = 4y i y i y + 4y i y 4y i y y i + 1 = y i y + 4y i y + 4y i 4y i y y i + 1 = (y i + y y i y) + 4y i (y i y) y i + 1 = (y i y) + 4y i (y i y) y i + 1 = ε + 4y i ε y i + 1 = d(ε) 41
Μεταβλητή απόφασης περιοχής Ι Θέτουμε: ε = y i y, οπότε: d(ε) = -ε + 4y i ε + 1 y i Η τιμή του d(ε) στη θέση ε = ½: d(1/) = ½ τιμή απόφασης: Αν d 1/ επιλέγουμε pixel B, αλλιώς pixel D. Τελικά: συνάρτηση απόφασης d(ε) 4
Μεταβλητή απόφασης περιοχής Ι νέα d(ε) Διευκολύνουμε περαιτέρω τον αυξητικό υπολογισμό παίρνοντας d = a (d 1 -d ): Νέα συνάρτηση απόφασης d(ε) d(ε) = -a ε + 4a y i ε + a a y i, οπότε: (Α) Αν d a / επιλέγουμε pixel B, αλλιώς pixel D (Β) 43
Υπολογισμός μεταβλ. απόφασης στο βήμα i Αυξητικός υπολογισμός x /a + y /b = 1 d Ι,i = a (d 1 -d ) = a (y i + (y i 1) y ) = a y i + a (y i 1) a y (από ορισμό d 1, d ) Όμως από την εξίσωση της έλλειψης για το σημείο (x i +1,y) έχουμε: a y = a b b (x i +1), οπότε: d Ι,i = -a b + b (x i +1) + a y i + a (y i 1) (Γ) 44
Υπολογισμός μεταβλ. απόφασης στο βήμα i+1 Στη συνέχεια ορίζουμε το d Ι,i+1 ως προς το d Ι,i : d Ι,i+1 = -a b + b (x i+1 +1) + a y i+1 + a (y i+1 1) = -a b + b ((x i +1)+1) + a y i+1 + a (y i+1 1) = -a b + b (x i +1) + b + 4b (x i +1) + a y i+1 + a (y i+1 1) Από (Γ): -a b + b (x i +1) = d Ι,i a y i a (y i 1) Άρα: d Ι,i+1 = d Ι,i + a y i+1 + a (y i+1 1) a y i a (y i 1) + b + 4b (x i +1) 45
Σχεδίαση Έλλειψης d Ι,i+1 = d Ι,i + a y i+1 + a (y i+1 1) a y i a (y i 1) + b + 4b (x i +1) Αν d Ι,i > a /, τότε y i+1 = y i 1 από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) 4a (y i 1) Αν d Ι,i a /, τότε y i+1 = y i από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) 46
Αρχική τιμή περιοχή Ι Εύρεση αρχικής τιμής: d Ι,0 βρίσκεται αντικαθιστώντας τις συντεταγμένες του 1 ου pixel της περιοχής Ι (0,b) για τα (x i,y i ) στην εξίσωση (Γ): d Ι,0 = -a b + b (0+1) + a b + a (b 1) = -a b + b + a b + a (b b + 1) = b + a (1-b) 47
Συνθήκη μετάβασης Κριτήριο αλλαγής περιοχής Στηρίζεται στην τιμή της συνάρτησης d για το σημείο (x i +1,y i 3/) Αν πραγματική έλλειψη περνάει κάτω από αυτό αλλαγή περιοχής Θέτοντας ε = 3/ στην (Α): d(3/) = -a (3/) + 4a y i (3/) + a a y i = 4a (y i 1) + a / Αν d 4a (y i 1) + a /, τότε παραμένουμε στην περιοχή Ι, διαφορετικά μεταβαίνουμε στην περιοχή ΙΙ. 48
Μεταβλητή απόφασης περιοχής ΙΙ Παρομοίως βρίσκουμε τη μεταβλητή απόφασης της περιοχής ΙΙ: d ΙΙ,i Περιοχή ΙΙ: άξονας κύριας κίνησης ο Υ Ορίζουμε: d 1 =(x i +1)-x, d =x -x i και θέτουμε: d=d 1 d Με επιλογή του pixel Α στη γραμμή i, η d=b (d 1 -d ) καθορίζει την επιλογή στην επόμενη γραμμή μεταξύ των C και D: Αν d <= b /, τότε επιλέγουμε το pixel D Αν d > b /, τότε επιλέγουμε το pixel C 49
Μεταβλητή απόφασης περιοχής ΙΙ Αν d ΙΙ,i > b /, τότε x i+1 = x i, οπότε: d ΙI,i+1 = d ΙI,i + Αν d ΙI,i b /, τότε x i+1 = x i +1, οπότε: d ΙI,i+1 = d ΙI,i + + Η αρχική τιμή: d ΙI,0 βρίσκεται αντικαθιστώντας τις συντεταγμένες του 1ου pixel της περιοχής IΙ = τελευταίο pixel της περιοχής Ι. 50
Υλοποίηση 1/3 Ellipse (a,b,colour) int a,b,colour; { int a_sqr,b_sqr,a,b,a4,b4; int x_slope,y_slope,d,mida,midb,x,y; x=0; y=b; a_sqr=a*a; b_sqr=b*b; a = a_sqr + a_sqr; b = b_sqr + b_sqr; a4 = a+a; b4 = b+b; x_slope = b4*(x+1); /* x_slope==(4*b^)*(x+1) πάντα */ y_slope = a4*(y-1); /* y_slope==(4*a^)*(y-1) πάντα */ 51
Υλοποίηση /3 mida=a_sqr>>1; midb=b_sqr>>1; d=b-a_sqr-(y_slope>>1)-mida; /* αφαιρούμε a^/ για βελτιστοποίηση */ /* περιοχή Ι */ while (d<=y_slope) {setpixel(x,y,colour); if (d>0) {d=d-y_slope; y--; y_slope=y_slope-a4;} d=d+b+x_slope; x++; x_slope=x_slope+b4;} 5
Υλοποίηση 3/3 /*Αλλαγή περιοχής*/ d=d-(x_slope+y_slope)>>1+(b_sqra_sqr)+(mida-midb); /* περιοχή ΙΙ */ while (y>=0) {setpixel (x,y,colour); if (d<=0) { d=d+x_slope; x++; x_slope=x_slope+b4;} d=d+a-y_slope; y--; y_slope=y_slope-a4;} } 53
Παράδειγμα Έστω έλλειψη με κέντρο την αρχή των αξόνων (0,0) και τις παραμέτρους: a=8, b=6 Τότε, έχουμε: dy/dx = -1 = -b x/a y => b =7, a =18, a /=3 => αρχικό σημείο (x0,y0)=(0,b)=(0,6) 54
Παράδειγμα Για την περιοχή Ι, το αρχικό σημείο της έλλειψης θα είναι το (x 0, y 0 ) = (0, 6) και η αρχική τιμή της παραμέτρου απόφασης: d Ι,0 = b + a (1-b) = *36+64-*6*64 = -63 55
Παράδειγμα Αν d Ι,i > a /=3, τότε y i+1 = y i 1 από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) 4a (y i 1) = d Ι,i + 7 + 144(x i +1) 56(y i 1) Αν d Ι,i a /=3, τότε y i+1 = y i από (Β), οπότε: d Ι,i+1 = d Ι,i + b + 4b (x i +1) = d Ι,i + 7 + 144(x i +1) i d I,i (x i+1, y i+1 ) d I,i+1 0-63 (1, 6) -416 1-416 (, 6) -56-56 (3, 6) 448 3 448 (4, 5) -184 4-184 (5, 5) 607 5 607 (6, 4) 519 6 519 (7, 3) 56
Παράδειγμα Σε αυτό το σημείο φεύγουμε από την περιοχή Ι, γιατί: b x > a y, αφού: (*36*7 =) 504 > 384 (= *64*3) Για την περιοχή ΙΙ, το αρχικό σημείο θα είναι το: (x 0, y 0 ) = (7, 3) οπότε υπολογίζουμε την αρχική παράμετρο απόφασης d II,0 και στην συνέχεια επαναληπτικά τις τιμές των υπόλοιπων pixels της περιοχής ΙΙ. Τελικά: 57
Παράδειγμα i d IΙ,i (x i+1, y i+1 ) d IΙ,i+1 0 (8, ) 1... (8, 1) (8, 0) - Stop όταν y = 0 6 5 4 3 1 0 0 1 3 4 5 6 7 8 58
Σχεδίαση Έλλειψης - Γενικά Μέχρι τώρα η υπόθεση εργασίας μας ήταν ότι η έλλειψη είχε κέντρο το (0,0). Εν γένει, η εξίσωση έλλειψης με κέντρο (h,k) δίνεται από την εξίσωση: (x - h) + (y - k) = 1 a b 59
Σχεδίαση Έλλειψης - Γενικά όπου: (h, k) = το κέντρο της έλλειψης a = μήκος του κύριου άξονα b = μήκος του μικρού άξονα y (x - h) + (y - k) = 1 a b k b a κέντρο (h, k) h x 60
Σχεδίαση Έλλειψης - Γενικά Αν ακολουθήσουμε πιστά την πολυωνυμική μέθοδο, η τιμή του x θα αυξάνει κατά μία μονάδα από το h στο a. Για κάθε βήμα αύξησης του x, κάθε τιμή του y προκύπτει από την εξίσωση: y = b 1 (x h) + k a Αυτή η μέθοδος δεν είναι υπολογιστικά αποδοτική, διότι πρέπει να υπολογιστούν τα τετράγωνα του a και της ποσότητας (x h), καθώς και η ακριβή υπολογιστικά πράξη της διαίρεσης. 61
Σχεδίαση Έλλειψης - Γενικά Εναλλακτικά μπορούμε να θεωρήσουμε την τριγωνομετρική μέθοδο. Οι ακόλουθες εξισώσεις ορίζουν μία έλλειψη με τριγωνομετρικό τρόπο: x = a cos(θ) + h και y = b sin(θ) + k όπου: (x, y) = οι τρέχουσες συντεταγμένες a = το μήκος του κύριου άξονα b = το μήκος του μικρού άξονα θ = τρέχουσα γωνία 6
Σχεδίαση Έλλειψης - Γενικά Η τιμή της θ ποικίλλει μεταξύ 0 και π/ radians. Τα υπόλοιπα σημεία βρίσκονται μέσω συμμετρίας. y (acos(θ)+h, bsin(θ)+k) k b θ a h x 63
Σχεδίαση Έλλειψης - Γενικά Ο αλγόριθμος που μάθαμε εφαρμόζεται μόνο στην ειδική περίπτωση που: η έλλειψη είναι κεντραρισμένη στο (0,0) και ο μεγάλος και ο μικρός άξονάς της είναι παράλληλοι στους άξονες του συστήματος συντεταγμένων. 64
Ερωτήσεις - Απορίες 65