Αλγόριθµοι Παράστασης Βασικών Σχηµάτων Προσέγγιση µαθηµατικών σχηµάτων από διακριτά pls: Ευθύγραµµο τµήµα, κύκλος, κωνικές τοµές, πολύγωνο. S/W ή H/W. Θέσεις αντικειµένων και φωτεινών πηγών Θέση παρατηρητή 3 Μαθηµατικά Μοντέλα ΣΣΑ 3 Μετασχ/σµοί Μοντέλου ΠΣΣ (WCS) 3 Μετασχ/σµός Παρατήρησης ΣΣΠ (ECS) Αποµάκρυνση Πίσω Επιφανειών 3 Αποκοπή Είσοδοι (για κάθε καρέ) Παράσταση Στην Οθόνη: Σάρωση Αντιταύτιση Φωτισµός Υφή Απόκρυψη Γραµµών/ Επιφανειών D ΣΣΟ (SCS) Προβολή. Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ευθύγραµµο Τµήµα: Αλγόριθµος Κριτήρια καλού αλγόριθµου ευθύγραµµου τµήµατος: Σταθερό πάχος ανεξάρτητο κλίσης, όχι κενά (συνεκτική). Pls όσο το δυνατόν πλησιέστερα στη µαθηµατική πορεία της. Ταχύτητα. Εστω ευθύγραµµο τµήµα µεταξύ P (, ) και P n ( n, n ) ου οκταµορίου: Για κάθε σηµείο P(, ) του ευθύγραµµου τµήµατος ισχύει: n n n s b µε s και b n n ln(,,n,n,colour) nt,,n,n,colour; /*colour η τιµή του χρώµατος του ευθύγραµµου τµήµατος*/ {flot s,b,; nt ; s(n-)/(n-); b(*n-n*)/(n-); for (;<n;) {s*b; stpl(,round(),colour);. Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ευθύγραµµο Τµήµα: Αλγόριθµος Πολλαπλασιασµός µέσα στο βρόχο µπορεί να αποφευχθεί: Αντικαθίσταται από πρόσθεση αφού ισχύει: s b s b s s ln (,,n,n,colour) nt,,n,n,colour; {flot s,; nt ; s(n-)/(n-); ; for (;<n;) {stpl(,round(),colour); s;.3 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ευθύγραµµο Τµήµα: Αλγόριθµος 3 Στρογγύλευση () µέσα στο βρόχο µπορεί να αποφευχθεί: ιαχωρισµός σε ακέραιο () και δεκαδικό (rror) µέρος. rror είναι η απόσταση του pl (, ) από ιδεατή ευθεία: ln3 (,,n,n,colour) nt,,n,n,colour; {flot s,rror; nt,; s(n-)/(n-); ; rror0; for (;<n;) {stpl(,,colour); rrorrrors; f (rror>0.5){; rror--.4 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ευθύγραµµο Τµήµα: Αλγόριθµος 4 (Brsnhm) Αντικατάσταση πραγµατικών µεταβλητών από ακέραιες µε κατάλληλη κλιµάκωση s, rror & συνθήκης επιλογής: πολλαπλασιάζουµε µε d n -, s d, rror ακέραιο. συνθήκη rror d/ rror d/ rror 0 & αρχική αφαίρεση d/ από rror ( / µε ολίσθηση). ln4 (,,n,n,colour) nt,,n,n,colour; {nt rror,,,d,d; dn-; dn-; rror-d/; ; for (; <n; ) {stpl(,,colour); rrorrrord; f (rror>0){; rrorrror-d.5 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ευθύγραµµο Τµήµα: Αλγόριθµος Brsnhm Παραπάνω λειτουργεί µόνο στο ο οκταµόριο (αλλά συµµετρικά): µεταφορά (, ) ώστε να συµπέσει µε αρχήαξόνων. 3 Y Οκταµόριο Άξονας ταχυτ. Κίνησης Άλλος άξονας Αυξάνεται 4 5 8 X 3 4 5» Μειώνεται» Αυξάνεται 6 7 6 7» Μειώνεται 8».6 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Κύκλος 8-πλή συµµετρία, δηµιουργούµε έναοκταµόριο (έστω ο ) crcl_smmtr (,,colour) nt,,colour; {stpl(,,colour); stpl(,,colour); stpl(,-,colour); stpl(,-,colour); stpl(-,-,colour); stpl(-,-,colour); stpl(-,,colour); stpl(-,,colour);.7 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Κύκλος: Αλγόριθµος Brsnhm Εστω (, ) επελέγη. Επόµενο βήµα (, ) ή (, -) Μεταβλητή απόφασης: d -d όπου d και d Αν 0 επιλέγεται το σηµείο (, -) διαφορετικά»»» (, ) Επειδή για ισχύει r -( ) έχουµε: r ( ) ( ) r ( ) ( ) ( ) r ( ).8 crcl (r,colour) nt r,colour; {nt,,; 0; r; 3-*r; whl (<) {crcl_smmtr(,,colour); ; f (>0) {--; -4* 4*; Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
.9 Εθνικό Εθνικό & Καποδιστριακό Καποδιστριακό Πανεπιστήµιο Πανεπιστήµιο Αθηνών Αθηνών Τµήµα Πληροφορικής Εργα Εργα: 000 & : 000 & ΣΚΕΠΣΙΣ ΣΚΕΠΣΙΣ (ΕΠΕΑΚ ΕΠΕΑΚ - ΥΠΕΠΘ ΥΠΕΠΘ) Κύκλος: Αλγόριθµος Brsnhm Ητιµή υπολογίζεται επαναληπτικά ως εξής: Για τον υπολογισµό του χρησιµοποείται το εξής τέχνασµα: Θεωρώντας σαν πρώτο σηµείο του ου οκταµορίου το σηµείο (,)(0,r) ( ) ( ) ( ) ( ) ( ) ( ) ( ) r r r r 6 4 6 4 6 4 8 8 ( ) ( ) ( ) ( ) ( ) ( ) 4 4 6 4 0 4 0 < ή Αν Αν ( ) r r r r 3
Ελλειψη Πολλοί αλγόριθµοι για κωνικές τοµές: Εδώ αλγόριθµος Αγάθου-Θεοχάρη-Μπεµ (998). Γρήγορος, µικρή απαίτηση ακρίβειας ακεραίων, σωστή µετάβασης περιοχής. Εξίσωση έλλειψης µε κέντρο(0,0): / /b Τετραπλή συµµετρία: δηµιουργούµε µόνο περιοχές,.0 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ελλειψη Περιοχή : άξονας κύριας κίνησης ο X Εκκίνηση από (0, b) Τέλοςπεριοχήςότανd/d - Ορίζουµε: d ( ) d και θέτουµε: d ( ) ( ( ) ) d d Θέτουµε - οπότε: () ε ε 4ε d. Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ελλειψη Τιµή απόφασης: d(/) / δηλαδή για ε / Αν d / επιλέγουµε pl B διαφορετικά επιλέγουµε pl D ιευκολύνουµε περαιτέρω αυξητικό υπολογισµό παίρνοντας d (d-d) d ( ε ) ε 4 ε (.3) οπότε: Αν d / επιλέγουµε pl B (.4) διαφορετικά επιλέγουµε pl D. Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
.3 Εθνικό Εθνικό & Καποδιστριακό Καποδιστριακό Πανεπιστήµιο Πανεπιστήµιο Αθηνών Αθηνών Τµήµα Πληροφορικής Εργα Εργα: 000 & : 000 & ΣΚΕΠΣΙΣ ΣΚΕΠΣΙΣ (ΕΠΕΑΚ ΕΠΕΑΚ - ΥΠΕΠΘ ΥΠΕΠΘ) Ελλειψη Αυξητικός υπολογισµός d Οµως από την εξίσωση της έλλειψης για το σηµείο (, ) έχουµε b -b ( ) οπότε: Στη συνέχεια ορίζουµε τοd, ως προς το d, : ( ) ( ), b b d ( ) ( ) ( ) ( ) ( ) { ( ) ( ) ( ), 4 b b b b b b b b d ( ) ( ), d d d (.5) (.6)
Ελλειψη Αλλά από την (.6) έχουµε οπότε: d b Αν d, > / τότε - από την (.4), οπότε: Αν d, / τότε από την (.4), οπότε: b ( ) d ( ), Ηαρχικήτιµή d,0 βρίσκεται αντικαθιστώντας τις συντεταγµένες του πρώτου pl της περιοχής (0,b) για τα (, ) στην (.6): ( ) ( ) b 4b ( ), d, ( ) 4 ( ) d, d, b 4b ( ) d, d, b 4b ( b),0 d b,.4 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ελλειψη Μετάβαση περιοχής: Στηρίζεται στην τιµή του d για το σηµείο (, -3/) Αν πραγµατική έλλειψη περνάει κάτω από αυτό αλλαγή περιοχής θέτοντας ε 3/ στην (.3) Αν d 4 ( -) / τότε παραµένουµε στην περιοχή διαφορετικά µεταβαίνουµε στην περιοχή. Παροµοίως βρίσκουµε µεταβλητή απόφαση περιοχής d, Αρχική τιµή µεταβλητής απόφασης περιοχής : d, λαµβάνεται από τελική τιµή d, : d, d, (d, -d, ) d d ( 3 ) ( 3 ) ( 3 4 ) 4 ( ) ( ) b ( ), d,.5 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Ελλειψη Ellps (,b,colour) nt,b,colour; {nt _sqr,b_sqr,,b,4,b4,_slop,_slop,d,md,mdb,,; 0; b; _sqr*; b_sqrb*b; _sqr_sqr; bb_sqrb_sqr; 4; b4bb; _slopb4; /*_slop(4*b^)*() πάντα */ _slop4*(-); /*_slop(4*^)*(-) πάντα */ md_sqr>>; mdbb_sqr>>; db-_sqr-(_slop>>)-md; /* αφαιρούµε ^/ για βελτιστοποίηση */ /* περιοχή */ whl (d<_slop) {stpl(,,colour); f (d>0) {dd-_slop; --; _slop_slop-4; ddb_slop; ; _slop_slopb4; /*Αλλαγή περιοχής*/ dd-(_slop_slop)>>(b_sqr-_sqr)(md-mdb); /* περιοχή */ whl (>0) {stpl (,,colour); f (d<0) {dd_slop; ; _slop_slopb4; dd-_slop; --; _slop_slop-4;.6 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
RstrOp Πλεγµατική οθόνη: εικόνα παριστάνεται στην µνήµη οθόνης Πολλές λειτουργίες υλοποιούνται µε µετακινήσεις ή/και συνδυασµούς στην µνήµη οθόνης. π.χ. Επεξεργαστής κειµένου, παραθυρικές εφαρµογές:.7 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
RstrOp RstrOp: γενική ρουτίνα µετακίνησης/συνδυασµού ορθογώνιων παραλληλόγραµµων τµηµάτων εικόνας, ταχέως υλοποιηµένη.8 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
RstrOp RstrOp(src mn,src mn,dst mn,dst mn,sz,sz,functon) nt src mn,src mn,dst mn,dst mn,sz,sz; ftp functon) /* (src mn, src mn) και (dst mn, dst mn) */ /* ήκάτωαριστερήγωνίατωνsourc και dstnton */ /* sz, sz οι και διαστάσεις σε pl */ /* functon κάποιος τελεστής µεταξύ pl */ /* (θεωρείται δυνατή η συνάρτηση παράµετρος για απλοποίηση) */ {nt,j; for (0; <sz; ) for (j0; j<sz; j) st_pl(dst mn,dst mnj, functon(rd_pl(dst mn,dst mnj) rd_pl(src mn,src mnj)));.9 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
RstrOp Ασπρόµαυρες εικόνες: functon από τα 6 δυνατά XΟR ιδιαίτερα χρήσιµη γιααντιµετάθεση sourc & dstnton χωρίς χρήση βοηθητικού χώρου: chng (src mn,src mn,dst mn,dst mn,sz,sz) nt src mn,src mn,dst mn,dst mn,sz,sz; {RstrOp (src mn,src mn,dst mn, dst mn,sz,sz,xor); RstrOp (dst mn,dst mn,src mn, src mn,sz,sz,xor); RstrOp (src mn,src mn,dst mn, dst mn,sz,sz,xor);.0 Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
RstrOp chng ιδιαίτερη χρήσιµη για διαδοχικές µετακινήσεις αντικειµένου (π.χ. Cursor) mov (from mn,from mn,to mn,to mn, bck mn,bck mn,sz,sz) nt from mn,from mn,to mn,to mn, bck mn,bck mn,sz,sz; {chng (to mn,to mn, bck mn,bck mn, sz,sz); {chng (from mn,from mn, to mn,to mn, sz,sz);. Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ
Σηµείο Εντός Πολυγώνου. Αριθµός τοµών ηµιευθείας µε περίµετρο. Wndng numbr 3. Ελεγχος προσήµου (κυρτό πολύγωνο). Εργα: : 000 & ΣΚΕΠΣΙΣ (ΕΠΕΑΚ