Ένας απλός και γρήγορος αλγόριθμος για την αποκοπή γραμμών στο Scratch

Σχετικά έγγραφα
Ένας απλός και γρήγορος αλγόριθμος για την αποκοπή γραμμών στο Scratch

Διδάσκων: Φοίβος Μυλωνάς

Εισαγωγή Αποκοπή ευθείας σε 2Δ Αποκοπή πολυγώνου σε 2Δ Αποκοπή σε 3Δ. 3ο Μάθημα Αποκοπή. Γραφικα. Ευάγγελος Σπύρου

Γραφικά Υπολογιστών: Εμφάνιση σε 2D

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Γραφικά με υπολογιστές

Γραφικά με Η/Υ Αλγόριθμοι σχεδίασης βασικών 22D D σχημάτων (ευθεία

Γραφικά με Η/Υ Αποκοπή

ΚΕΦΑΛΑΙΟ 5: ΑΠΕΙΚΟΝΙΣΗ ΚΑΙ ΑΠΟΚΟΠΗ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Στο Κεφάλαιο 5 µελετώντας την προβολή του τρισδιάστατου χώρου στο επίπεδο της κάµερας εξετάστηκε

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Γραφικά με Η/Υ Αποκοπή

Ο παρακάτω πίνακας τιμών θα βοηθήσει να γίνει πιο κατανοητή η λειτουργία των εντολών της συγκεκριμένης άσκησης. Α/Α Εντολές Μνήμη (Μεταβλητή α) Οθόνη

1. ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ (Ή ΚΑΙ ΑΛΛΟΥ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ) ΑΞΙΟΛΟΓΗΣΗ ΤΩΝ ΜΑΘΗΤΩΝ

Η εντολή «επανέλαβε Χ»

Μπορούμε να χρησιμοποιήσουμε τις παρακάτω μορφές συντεταγμένων με οποιοδήποτε συνδυασμό θέλουμε. Καρτεσιανές συντεταγμένες

3. Να γραφεί πρόγραμμα που θα διαβάζει 100 ακεραίους αριθμούς από το πληκτρολόγιο και θα υπολογίζει το άθροισμά τους.

Εισαγωγή στην επανάληψη

Παιδαγωγικό σενάριο : Μελέτη της συνάρτησης y=αx

ήγαινε στο x : y : κατέβασε πένα σήκωσε πένα

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Ψευδοκώδικας. November 7, 2011

4. 1 Η ΣΥΝΑΡΤΗΣΗ Y=AX 2 ME A 0

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

4. Να βρείτε την εξίσωση της ευθείας που διέρχεται από την αρχή των αξόνων και το σημείο Α(,.

ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΑΣΚΗΣΕΙΣ ΠΡΟΕΤΟΙΜΑΣΙΑΣ ΓΙΑ ΤΟ ΔΙΑΓΩΝΙΣΜΑ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2. Στη δραστηριότητα αυτή θα μάθεις να δημιουργείς τις δικές σου εντολές.


4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες

ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ

18.ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 1 Δραστηριότητα 1

Το ελικόπτερο. Γνωστικό Αντικείμενο: Φυσική (Κίνηση - Μορφές Ενέργειας) - Τεχνολογία Τάξη: Β Γυμνασίου

Ο μαθητής που έχει μελετήσει το κεφάλαιο αυτό θα πρέπει να είναι σε θέση:

ΚΙΝΗΜΑΤΙΚΗ ΥΛΙΚΟΥ ΣΗΜΕΙΟΥ ΣΕ ΜΙΑ ΔΙΑΣΤΑΣΗ

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

ΜΑΝΤΕΨΕ ΤΟΝ ΑΡΙΘΜΟ! ΕΚΠΑΙΔΕΥΤΙΚΟ ΣΕΝΑΡΙΟ Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ ΥΠΟ ΣΥΝΘΗΚΗ

Γραφικά Υπολογιστών & Εικονική Πραγματικότητα. Μετασχηματισμός απεικόνισης & Αλγόριθμοι αποκοπής

Προγραμματισμός. Το περιβάλλον του scratch

Γραφικές παραστάσεις (2ο μέρος)

5ο Μάθημα Αλγόριθμοι Σχεδίασης Βασικών Σχημάτων

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

Τι είναι Αποκοπή (clip)?

Ψευδογλώσσας και Διαγράμματα Ροής

Slalom Race Computer Game on Scratch

3. Τρισδιάστατα γραφικά

Πληροφορική 2. Αλγόριθμοι

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ας κάνουμε μια γάτα να περπατάει στο Scratch 2.0

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Ανάπτυξη εφαρμογών Σχετικά με την εντολή επανάληψης «Για από μέχρι με_βήμα»

Ευρωπαϊκή Ολυμπιάδα Φυσικών Επιστημών Προκαταρκτικός Διαγωνισμός Ανατολικής Αττικής. Φυσική

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

αξιοποίηση των ΤΠΕ: Η logo στη διδακτική διδακτική πράξη

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ

ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ ΛΥΜΕΝΕΣ & ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ. Επιμέλεια: Γ. Π. Βαξεβάνης (Γ. Π. Β.

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον. τελική επανάληψη /4/2015 1

Ιπτάμενες Μηχανές. Οδηγός για το Μαθητή

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ 1) Χ 0 ΟΣΟ Χ<10 ΕΠΑΝΑΛΑΒΕ X X+3 ΓΡΑΨΕ Χ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ 2) Χ 0 ΟΣΟ Χ<14 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ Χ X X+3 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ. Εργαλειοθήκη Παρουσιάζετε το έργο σας Εκκινείτε τα σενάριά σας Σταματάτε όλα τα σενάρια. Οι 8 ομάδες της Παλέτας εντολών

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

φροντιστήρια Θέματα Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ λυκείου Προσανατολισμός Σπουδών Οικονομίας και Πληροφορικής

Η Δομή Επανάληψης. Εισαγωγή στην δομή επανάληψης Χρονική διάρκεια: 3 διδακτικές ώρες

Κεφάλαιο 6: Ζωγραφική

Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, Τ.Ε.Π Π.Μ, Μάθημα: Γραφικά με Η/Υ

Περιεχόμενα. Κεφάλαιο 1 ΣΥΣΤΗΜΑΤΑ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΣΕ ΜΙΑ ΕΥΘΕΙΑ Οι συντεταγμένες ενός σημείου Απόλυτη τιμή...14

ΔΕΙΓΜΑ ΠΡΙΝ ΤΙΣ ΔΙΟΡΘΩΣΕΙΣ - ΕΚΔΟΣΕΙΣ ΚΡΙΤΙΚΗ

Ημερομηνία: Τρίτη 27 Δεκεμβρίου 2016 Διάρκεια Εξέτασης: 3 ώρες ΕΚΦΩΝΗΣΕΙΣ

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Το μεσαίο πλήκτρο ενεργοποιεί τα Osnaps μόνο αν η μεταβλητή MBUTTONPAN έχει τιμή 1.

ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Η συνάρτηση y = αχ 2. Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος: «Σπουδές στην εκπαίδευση» ΜEd

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

αντίστοιχο γεγονός. Όταν όντως το κουμπί

Μαθήματα Scratch -Δραστηριότητα 1 Παλέτα Κίνηση

Ορισμός Τετραγωνική ονομάζεται κάθε συνάρτηση της μορφής y = αx 2 + βx + γ με α 0.

ΔΙΑΓΩΝΙΣΜΑ ΣΤΑ ΜΑΘΗΜΑΤΙΚΑ 6 Β' Λυκείου. Ύλη: Συστήματα Ιδιότητες Συναρτήσεων- Τριγωνομετρία

Αποκοπή ευθυγράμμων τμημάτων

Εφαρμογή δημιουργίας σεναρίων Sctatch

y x y x+2y=

7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή

Σχεδίαση και ανάπτυξη δραστηριοτήτων στο προγραμματιστικό περιβάλλον MicroWorlds Pro

Υπάρχουν πολλά είδη Ηλιακών Ρολογιών. Τα σημαντικότερα και συχνότερα απαντόμενα είναι:

Άσκηση 1 (κλιμακωτή χρέωση) Ένα γραφείο ενοικίασης αυτοκινήτων εφαρμόζει την παρακάτω τιμολογιακή πολιτική: Πάγιο 30 ευρώ

ΑΠΑΝΤΗΣΕΙΣ. Επιµέλεια: Οµάδα Πληροφορικής της Ώθησης

ΔΙΑΓΩΝΙΣΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ:- Γ ΛΥΚΕΙΟΥ ΤΜΗΜΑΤΑ: ΓΟ4 ΓΟ7 (ΖΩΓΡΑΦΟΥ) ΓΟ5 ΓΟ6 (ΧΟΛΑΡΓΟΣ) HM/NIA: 15/1/2017

Transcript:

Ένας απλός και γρήγορος αλγόριθμος για την αποκοπή γραμμών στο Scratch Ματθές Δημήτριος 1, Μαγουλάς Αντώνιος 2 1 Εκπαιδευτικός Πληροφορικής ΠΕ86, dimmat@gmail.com 2 Εκπαιδευτικός Πληροφορικής ΠΕ03, amagul@yahoo.com

Σχεδίαση με πένα στο Scratch Το Scratch διαθέτει μια ομάδα εντολών που ονομάζεται «Σχεδιασμοί Πένας». Κάθε μορφή μπορεί να χρησιμοποιήσει την πένα για να αφήσει ένα ίχνος όταν κινείται. Για παράδειγμα:

Οθόνη του Scratch και όρια Η οθόνη του Scratch είναι συγκεκριμένων διαστάσεων (480 εικονοστοιχεία πλάτος x 360 εικονοστοιχεία ύψος). Η αρχή των αξόνων θεωρείται το κέντρο (σημείο 0,0). Σε αυτή ο χρήστης μπορεί να κινεί τις διάφορες μορφές ή να σχεδιάζει σχήματα με τη βοήθεια της πένας. Δεν επιτρέπει στις μορφές ή στην πένα να «βγουν» εκτός των ορίων της οθόνης

Mπορώ να ξεπεράσω τα όρια; Αν ο προγραμματιστής θελήσει να σχεδιάσει μία πάρα πολύ μεγάλη γραμμή η οποία εκτείνεται εκτός των ορίων, αυτό δεν είναι εφικτό με τις υπάρχουσες επιλογές. Τη λύση στο πρόβλημα της σχεδίασης μιας μεγάλης γραμμής ή γενικότερα ενός μεγάλου σχήματος έρχεται να δώσει η τεχνική που ονομάζεται «αποκοπή γραμμής» (line clipping).

Τι είναι η αποκοπή γραμμής Ως αποκοπή γραμμής ορίζεται η διαδικασία αφαίρεσης των τμημάτων μιας γραμμής τα οποία βρίσκονται εκτός μιας επιθυμητής περιοχής (Hearn, 1997).

Τι είναι η αποκοπή γραμμής Η διαδικασία της αφαίρεσης των περιττών τμημάτων γίνεται χρησιμοποιώντας τα μαθηματικά. Ο προγραμματιστής σχεδιάζει το τμήμα της γραμμής που βρίσκεται εντός των ορίων χρησιμοποιώντας: είτε την εξίσωση της ευθείας y=a*x+b είτε κάνοντας χρήση διανυσμάτων

Γνωστοί αλγόριθμοι αποκοπής γραμμών Οι πιο γνωστοί αλγόριθμοι για την αποκοπή γραμμών είναι δύο: Ο αλγόριθμος των Cohen-Sutherland Ο αλγόριθμος των Liang-Barsky Πάνω σε αυτούς βασίστηκαν κι άλλοι αλγόριθμοι, όπως οι Cyrus-Beck, Nicholl-Lee-Nicholl, Fast clipping, Scala κλπ.

Αλγόριθμος Cohen-Sutherland Ο αλγόριθμος των Danny Cohen και Ivan Sutherland αναπτύχθηκε το 1967 κατά τη δημιουργία ενός εξομοιωτή πτήσεων. Θεωρείται ένας από τους πρώτους αλγόριθμους αποκοπής γραμμής στην ιστορία της σχεδίασης γραφικών.

Αλγόριθμος Cohen-Sutherland Σύμφωνα με αυτόν, ο δισδιάστατος χώρος στον οποίο βρίσκεται η προς αποκοπή γραμμή χωρίζεται σε 9 τμήματα. Σε κάποια από αυτά εντοπίζονται τα δύο σημεία που ορίζουν την γραμμή. Ανάλογα με τις περιοχές αυτές, ο αλγόριθμος πραγματοποιεί πλήρη, μερική ή καθόλου σχεδίασή της (Foley, 1996).

Αλγόριθμος Cohen-Sutherland Για να εντοπιστούν οι περιοχές όπου βρίσκονται η αρχή και το τέλος της γραμμής και να σχεδιαστεί η αποκομμένη γραμμή απαιτούνται πράξεις «λογικού ΚΑΙ» (bitwise AND). Η πράξη του «λογικού ΚΑΙ» δεν υπάρχει στο Scratch. Ο προγραμματιστής θα πρέπει να την κατασκευάσει (δημιουργία υπορουτίνας). Η κατασκευή της όμως επιβαρύνει κατά πολύ σε ταχύτητα τον αλγόριθμο.

Αλγόριθμος Liang-Barsky Ο αλγόριθμος των You-Dong Liang και Brian Barsky χρησιμοποιεί την εξίσωση της ευθείας καθώς και κάποιες ανισότητες για να βρει την περιοχής αποκοπής και να προσδιορίσει τα σημεία τομής της με την προς σχεδίαση γραμμή (Liang & Barsky, 1984).

Αλγόριθμος Liang-Barsky Όμως, κι αυτός ο αλγόριθμος στην υλοποίησή του στο Scratch απαιτεί έναν σχετικά μεγάλο αριθμό συγκρίσεων προκειμένου να σχεδιαστεί η γραμμή με αποτέλεσμα να μην είναι ιδιαίτερα αποδοτικός.

Προτεινόμενος αλγόριθμος Τις δυσκολίες των δύο γνωστών αλγορίθμων αποκοπής γραμμής στο Scratch φαίνεται να ξεπερνά ο επόμενος προτεινόμενος αλγόριθμος. Στοχεύει στην απλότητα και την ταχύτητα και πραγματοποιεί τις απαραίτητες συγκρίσεις προκειμένου να προσδιορίσει αν η αρχή και το τέλος της γραμμής βρίσκονται εντός της περιοχής αποκοπής. Επιπλέον, χρησιμοποιεί ελάχιστες μεταβλητές για λόγους απλότητας και ευκολίας.

Θεωρητικό υπόβαθρο Θεωρούμε ότι θέλουμε να αποκόψουμε μια γραμμή εντός μιας ορθογώνιας περιοχής η οποία προσδιορίζεται από τα εξής σημεία: (xmin, ymax) και (xmax, ymin), όπως στην εικόνα:

Θεωρητικό υπόβαθρο Έστω (x1, y1) και (x2,y2) δύο γνωστά σημεία που προσδιορίζουν τη γραμμή που θέλουμε να σχεδιάσουμε. Σύμφωνα με τα μαθηματικά, η κλίση m της γραμμής είναι πάντα σταθερή και προσδιορίζεται από τον λόγο: (y2 m (x2 y1) x1) y2 y1 m * (x2 x1) y2 m * (x2 x1) y1

Θεωρητικό υπόβαθρο Για ένα οποιοδήποτε σημείο (x,y) της γραμμής, ο παραπάνω τύπος μπορεί να γραφεί υπό τη μορφή εξίσωσης ως εξής: y m * (x x1) y1 y (y2 (x2 y1) x1) (x x1) y1

Θεωρητικό υπόβαθρο Ομοίως, αν λύσουμε ως προς x, η προηγούμενη εξίσωση γίνεται: (x2 x (y2 x1) y1) (y y1) x1

1 ο βήμα του προτεινόμενου αλγορίθμου Έστω ότι η προς αποκοπή γραμμή προσδιορίζεται από τα σημεία (x1,y1) και (x2,y2). Κατά το πρώτο βήμα του αλγορίθμου ελέγχεται αν και τα δύο σημεία της γραμμής βρίσκονται εκτός της περιοχής αποκοπής και ταυτόχρονα στο ίδιο τμήμα (δηλαδή πάνω, κάτω, δεξιά, αριστερά). Αν κάτι από τα παρακάτω συμβαίνει τότε ολόκληρη η γραμμή είναι εκτός της περιοχής αποκοπής και ο αλγόριθμος δεν την σχεδιάζει. x1<xmin ΚΑΙ x2<xmin x1>xmax ΚΑΙ x2>xmax y1<ymin ΚΑΙ y2<ymin y1>ymax ΚΑΙ y2>ymax (η γραμμή βρίσκεται αριστερά της περιοχής αποκοπής) (η γραμμή βρίσκεται δεξιά της περιοχής αποκοπής) (η γραμμή βρίσκεται κάτω από την περιοχή αποκοπής) (η γραμμή βρίσκεται πάνω από την περιοχή αποκοπής)

2 ο βήμα του προτεινόμενου αλγορίθμου Στο δεύτερο βήμα, ο αλγόριθμος συγκρίνει τις συντεταγμένες των δύο σημείων με τα όρια της περιοχής αποκοπής. Συγκρίνει κάθε ένα από τα x1 και x2 με τα όρια xmin και xmax καθώς και κάθε ένα από τα y1 και y2 με τα όρια ymin και ymax. Αν κάποια από τις παραπάνω συντεταγμένες είναι εκτός ορίων τότε το συγκεκριμένο όριο (xmin, xmax, ymin, ymax) χρησιμοποιείται στην εξίσωση που προσδιορίζει την γραμμή προκειμένου αλλάξουν τα σημεία που την προσδιορίζουν για να επιτευχθεί αποκοπή.

2 ο βήμα του προτεινόμενου Πιο συγκεκριμένα: αλγορίθμου Αν το x i < xmin τότε x i =xmin y i (y2 (x2 y1) x1) (x min x1) y1 Αν το x i > xmax τότε xi=xmax y i (y2 (x2 y1) x1) (x max x1) y1 Αν το y i < ymin τότε yi=ymin x i (x2 (y2 x1) y1) (y min y1) x1 Αν το y i > ymax τότε yi=ymax x i (x2 (y2 x1) y1) (y max y1) x1 όπου i: από 1 έως 2.

3 ο βήμα του προτεινόμενου αλγορίθμου Το τρίτο και τελευταίο βήμα του αλγορίθμου συγκρίνει τα νέα σημεία που προέκυψαν μετά τις αλλαγές. Aν αυτά είναι εντός των ορίων της περιοχής αποκοπής τότε σχεδιάζει τη γραμμή που προσδιορίζεται από αυτά.

Ψευδοκώδικας προτεινόμενου αλγόριθμου Αλγόριθμος Scratch_Line_Clipping Δεδομένα // x[2], y[2], xmin, ymax, xmax, ymin // Αν όχι(x[1]<xmin και x[2]<xmin) και όχι(x[1]>xmax και x[2]>xmax) τότε Αν όχι(y[1]<ymin και y[2]<ymin) και όχι(y[1]>ymax και y[2]>ymax) τότε i<-1 Αρχή_επανάληψης Αν x[i] < xmin τότε x[i]<-xmin y[i]<- ((y[2]-y[1])/(x[2]-x[1])*(xmin-x[1])+y[1] Τέλος_αν Αν x[i] > xmax τότε x[i]<-xmax y[i]<- ((y[2]-y[1])/(x[2]-x[1])*(xmax-x[1])+y[1] Τέλος_αν Αν y[i] < ymin τότε y[i]<-ymin x[i]<- ((x[2]-x[1])/(y[2]-y[1])*(ymin-y[1])+x[1] Τέλος_αν Αν y[i] > ymax τότε y[i]<-ymax x[i]<- ((x[2]-x[1])/(y[2]-y[1])*(ymax-y[1])+x[1] Τέλος_αν i<-i+1 Μέχρις_ότου i>2 Αν όχι(x[1]<xmin και x[2]<xmin) και όχι(x[1]>xmax και x[2]>xmax) τότε Αν όχι(y[1]<ymin και y[2]<ymin) και όχι(y[1]>ymax και y[2]>ymax) τότε Σχεδίασε_γραμμή(x[1],y[1],x[2],y[2]) Τέλος_αν Τέλος_αν Τέλος_αν Τέλος_αν Τέλος Scratch_Line_Clipping

Συγκρίνοντας τους αλγορίθμους Για να προσδιορίσουμε την αποδοτικότητα του προτεινόμενου αλγορίθμου αποφασίσαμε να τον συγκρίναμε με τους δύο πιο γνωστούς αλγόριθμους αποκοπής γραμμών: τον αλγόριθμο των Cohen-Sutherland και τον αλγόριθμο των Liang-Barsky. Όλοι οι αλγόριθμοι υλοποιήθηκαν έχοντας ως βασικούς άξονες την απλότητα και την αποδοτικότητα και καταβλήθηκε προσπάθεια προκειμένου να έχουν την ίδια περίπου δομή.

Προϋποθέσεις πειράματος Το πείραμα για τη σύγκριση ήταν το εξής: Κάθε ένας από τους αλγορίθμους θα έπρεπε να δημιουργεί 10.000 τυχαίες γραμμές σε ένα δισδιάστατο χώρο 4πλάσιο από τη βασική οθόνη σχεδίασης του Scratch. Ένας τέτοιος χώρος προσδιορίζεται από τα σημεία (-960, 720) και (960,-720). Η περιοχή αποκοπής θα έπρεπε να βρίσκεται στο κέντρο της οθόνης σχεδίασης του Scratch και ορίζεται από τα σημεία (-100, 75) και (100,-75) Η γραμμές θα έπρεπε να εκτείνονται τυχαία, οπουδήποτε μέσα στον μεγάλο χώρο, να αποκόπτονται τα περιττά τμήματά τους και να σχεδιάζονται μόνο τμήματα εκείνα που βρίσκονται εντός της περιοχής αποκοπής

Προϋποθέσεις πειράματος Ο χρόνος που απαιτείται κάθε φορά για τη σχεδίαση των 10.000 γραμμών καταγράφεται για κάθε έναν από τους αλγορίθμους. Η διαδικασία επαναλαμβάνεται 10 φορές και στο τέλος υπολογίζεται ο μέσος χρόνος εκτέλεσης. Αλγόριθμος Cohen-Sutherland Liang-Barsky Προτεινόμενος Διεύθυνση URL https://scratch.mit.edu/projects/166917422 https://scratch.mit.edu/projects/166820820 https://scratch.mit.edu/projects/166877443

Αποτελέσματα Στον πίνακα φαίνονται οι χρόνοι εκτέλεσης των συγκρινόμενων αλγορίθμων: Εκτέλεση Cohen- Sutherland (sec) Liang- Barsky (sec) Προτεινόμενος Αλγόριθμος (sec) 1 4,245 1,159 0,625 2 4,279 1,149 0,632 3 4,456 1,159 0,592 4 4,364 1,135 0,618 5 4,275 1,132 0,592 6 4,352 1,142 0,427 7 4,347 1,167 0,630 8 4,356 1,132 0,620 9 4,295 1,143 0,577 10 4,326 1,159 0,587 Μέσος χρόνος : 4,330 1,148 0,590

Συμπεράσματα Συγκρίνοντας τους χρόνους μεταξύ τους παρατηρούμε ότι στο Scratch: Ο προτεινόμενος αλγόριθμος είναι περίπου 10 φορές πιο γρήγορος από τον αλγόριθμο των Cohen-Sutherland Σχεδόν 2 φορές πιο γρήγορος από τον αλγόριθμο των Liang-Barsky

Συμπεράσματα Ο αλγόριθμος των Cohen-Sutherland είναι πιο αργός στην υλοποίησή του στο Scratch διότι οι πράξεις του λογικού ΚΑΙ (bitwise AND) που απαιτούνται σε κάθε επανάληψη καθυστερούν σημαντικά την εκτέλεση του.

Συμπεράσματα Ο αλγόριθμος των Liang-Barsky δείχνει αρκετά πιο γρήγορος σε σχέση με τον Cohen-Sutherland και μοιάζει να πλησιάζει τον προτεινόμενο αλγόριθμο σε ταχύτητα. Είναι όμως πιο πολύπλοκος στην υλοποίησή του και ελαφρώς πιο δυσνόητος διότι εμπεριέχει δυσκολότερες μαθηματικές έννοιες.

Συμπεράσματα Αν το παραπάνω πείραμα επαναληφθεί με διαφορετικές παραμέτρους (π.χ. σχεδίαση περισσότερων γραμμών, διαφορετικός δισδιάστατος χώρος δημιουργίας των γραμμών, διαφορετική περιοχή αποκοπής, άλλο υπολογιστικό σύστημα) τα αποτελέσματα είναι ανάλογα.

Αυτοαξιολόγηση Ο προτεινόμενος αλγόριθμος αποκοπής γραμμών, στην υλοποίησή του στο Scratch, δύναται να αποκόψει και να σχεδιάσει 10.000 γραμμές σε χρόνο κάτω του 1 δευτερολέπτου Είναι αρκετά απλός. Αίρει τους περιορισμούς οθόνης του Scratch. Δίνει τη δυνατότητα σε εκπαιδευτικούς να διδάξουν την έννοια της αποκοπής γραμμής πολύ απλά και με πολύ γρήγορα αποτελέσματα.

Ευχαριστούμε για την προσοχή σας! Ερωτήσεις;