background image

 

77 

 

Περιγραφή λειτουργίας του κώδικα 

 

Ο κώδικας που υλοποιήθηκε χωρίζεται σε τρία αρχεία, καθένα από τα οποία περιέχει 

συναρτήσεις που καλύπτουν διαφορετικά τμήματα του αλγορίθμου. 

 

Το πρώτο αρχείο ονομάζεται par1.py, και αποτελεί τη βάση του αλγορίθμου. Οι τιμές 

που απαιτούνται για την εκτέλεση του αρχείου είναι το κελί που βρίσκεται ο παρατηρητής με 

τις συντεταγμένες του (χ,ψ), και το ύψος του παρατηρητή. Το αρχείο par1.py συντονίζει τις 

διεργασίες,  και  καλεί τις  συναρτήσεις  από τα  άλλα αρχεία, ώστε να γίνει η σάρωση με της 

συναρτήσεις που βρίσκονται στο  αρχείο par2.py, και ο υπολογισμός της ορατότητας με της 

συναρτήσεις που βρίσκονται στο αρχείο par3.py. Επομένως, περιέχει εκτός από τη main μόνο 

τη συνάρτηση split. Η έξοδος του αρχείου γίνεται κατά τον τερματισμό του αλγορίθμου, και 

είναι ένας πίνακας ο οποίος δίνει τιμή ένα στα κελιά που είναι ορατά και μηδέν σε αυτά που 

δεν είναι ορατά. 

Η  συνάρτηση  split()  είναι  η  πρώτη  συνάρτηση  που  εκτελείται.  Είσοδος  της  είναι  ο 

αριθμός των κελιών που περιέχει το αρχείο TIFF. Η συνάρτηση υπολογίζει το μερίδιο κάθε 

διεργασίας ανάλογα με τον αριθμό των διεργασιών, και έχει ως έξοδο μια λίστα με τις γωνίες 

στις  οποίες  αρχίζει  το  κομμάτι  που  θα  υπολογίσει  η  κάθε  διεργασία.  Η  διαδικασία  που 

ακολουθεί καταγράφεται στο κεφάλαιο 3.5.1. 

 

Η  συνάρτηση  που  εκτελείται  στη  συνέχεια,  είναι  η  rotation(),  η  οποία  ανήκει  στο 

δεύτερο  αρχείο  με  όνομα  par2.py.  H  συνάρτηση  αυτή  δέχεται  ως  είσοδο  το  αρχείο 

TIFF(Tagged Image File Format), που περιέχει το υψόμετρο του εδάφους για το κέντρο του 

κάθε εικονοστοιχείου και τις τιμές από τη λίστα που προέκυψε από τη split(). Η συνάρτηση 

υπολογίζει  τη  σάρωση  της  περιοχής  για  τον  υπολογισμό  των  δεδομένων  των  κελιών,  όπως 

περιγράφεται στο κεφάλαιο 3.3. Έξοδος της είναι η λίστα σάρωσης και η λίστα ορατότητας 

μετά τη αρχικοποίηση της.  

Μέσα από τη συνάρτηση rotation καλείται αρχικά η συνάρτηση gridx() με ορίσματα τη 

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

Ακολουθεί η gridy(), η οποία σε συνδυασμό με τη gridx() καταγράφει τις συντεταγμένες για 

τα καλιά που θα εξεταστούν. Η τεχνικές που χρησιμοποιούνται περιγράφονται στο κεφάλαιο 

3.4.1. Τα ορίσματα της gridy() είναι τα ίδια με της gridx(), ενώ περιλαμβάνει ακόμα τη τιμή χ 

των κελιών που εξετάζονται, τη μεταβλητή currentpace που είναι το βήμα για τον βρόχο που 

χρησιμοποιείται,  και   τις fs και flag. Οι  δύο τελευταίες  αποτελούν μεταβλητές σημαίες  που 

διευκρινίζουν ποια περίπτωση έχει προκύψει από αυτές που αναφέρονται στο κεφάλαιο 3.5.2.