Συμμετρικό τριγώνου ως προς κέντρο συμμετρίας

 

Οδηγίες για την Pascal

Tο περιβάλλον της Pascal προσφέρεται σε διάφορες εκδόσεις. Σκοπός του σεναρίου είναι να διερευνήσουν οι μαθητές τη γεωμετρία της οθόνης και τους γεωμετρικούς μετασχηματισμούς με απλό τρόπο και σύμφωνα με την απλή εμπειρία που διαθέτουν πάνω στον προγραμματισμό. Για το λόγο αυτό θα χρησιμοποιήσετε την έκδοση της Pascal σε παραθυρικό περιβάλλον, όμως σε πλατφόρμα του λειτουργικού συστήματος DOS, με την οποία έχετε εξοικειωθεί στη συγγραφή απλών προγραμμάτων και στη χρήση βασικών εντολών. Για να μεταγλωττίσετε τα γραμμένα σε Pascal προγράμματά σας μπορείτε να χρησιμοποιήσετε τον compiler Free Pascal που χρησιμοποιείται στις Διεθνείς Ολυμπιάδες Πληροφορικής.

Για να χρησιμοποιήσετε το γραφικό περιβάλλον της Pascal θα πρέπει να δηλώσετε την κατάλληλη μονάδα (unit). Στο πρόγραμμά σας, μετά την ονομασία program, θα ορίσετε τη μονάδα γραφικών, δίνοντας uses graph;. Στη συνέχεια, με την εντολή Initgraph, το πρόγραμμα επιλέγει την κάρτα γραφικών του υπολογιστή και το mode της κάρτας. Η σύνταξή της έχει ως εξής:

Initgraph (graphdriver, graphmode, drivepath) όπου:

 

ü  Η παράμετρος graphdriver := Detect; επιλέγει αυτόματα την κάρτα.

ü  Η παράμετρος graphmode λαμβάνει την τιμή της μεγίστης ανάλυσης.

ü  Η παράμετρος drivepath ορίζει το μονοπάτι που βρίσκονται τα αρχεία με κατάληξη bgi.

 

Σημείωση: Αν εργάζεστε σε έκδοση της Pascal, που για το γραφικό περιβάλλον χρειάζεται τα αρχεία με κατάληξη bgi, θα πρέπει να δηλώνετε το πλήρες μονοπάτι (drivepath) του φακέλου bgi που περιέχει αυτά τα αρχεία (π.χ. c:/pascal/bgi). Μπορείτε βέβαια να έχετε ένα αντίγραφο του φακέλου bgi στο χώρο αποθήκευσης και εκτέλεσης των προγραμμάτων σας, οπότε δεν χρειάζεται το πλήρες μονοπάτι. Η έκδοση της Free Pascal δεν χρειάζεται το φάκελο bgi. Ωστόσο, δεν δημιουργείται πρόβλημα αν έχει δηλωθεί, ώστε να τρέχουν τα προγράμματα και στις δύο περιπτώσεις.

 

Κάθε πρόγραμμα Pascal που θέλει να απεικονίζει pixels θα πρέπει να περιλαμβάνει τα παραπάνω. Για παράδειγμα, αν θέλουμε να τυπώσουμε ένα pixel (θέση 120,100 κόκκινο), θα πρέπει να γράψουμε το παρακάτω πρόγραμμα:

 

Program open-graphika;

uses Graph;

var grDriver,grMode, X,Y,: Integer;

const drivepath='bgi';

begin

grDriver := Detect;

InitGraph(grDriver, grMode, drivepath);

 

X:= 120;

Y:= 100;

PutPixel(X,Y,LightRED);

 

writeln ('πατήστε ENTER για έξοδο');

Readln;

CloseGraph;

end.

 

Οδηγίες εκτέλεσης προγράμματος

Κατά την εκτέλεση του προγράμματος με τη Free Pascal θα εμφανίζονται δύο παράθυρα:

·         Παράθυρο εκτέλεσης εντολών (Free pascal IDE)

·         Παράθυρο γραφικών (graph window applicacion)

 

Όταν σας ζητείται κάποια εντολή εκτέλεσης θα πρέπει να τη δίνετε από το παράθυρο (Free Pascal IDE), εμφανίζοντάς το, και να επιστρέφετε στο παράθυρο (graph window applicacion) για να βλέπετε τα αποτελέσματα.

 

Μερικές ρουτίνες για τα γραφικά της οθόνης είναι οι εξής:

 

ü  Line (x1, y1, x2, y2): Σχηματίζει γραμμή μεταξύ 2 σημείων (χ1, y1) και (x2, y2).

ü  GetMaxX: Επιστρέφει τη μεγίστη τιμή της οριζόντιας συντεταγμένης.

ü  GetMaxY: Επιστρέφει τη μεγίστη τιμή της κατακόρυφης συντεταγμένης.

ü  Circle (x, y, radius): Σχεδιάζει κύκλο με κέντρο (x, y) και radius=ακτίνα.

ü  OutTextXY(X,Y: Integer; TextString: string); Στέλνει ένα string στην οθόνη.

 

Με βάση τις ρουτίνες getmaxX και getmaxY η οθόνη του υπολογιστή έχει συντεταγμένες όπως φαίνονται στο σχήμα 2.

 

 

 

 

 

 

 

 

 

 

 

 

                                                          σχήμα 2

 

Το πρόβλημα που προκύπτει είναι ότι δεν μπορούμε να αναπαραστήσουμε σημεία που έχουν μία ή δύο αρνητικές συντεταγμένες. Για το λόγο αυτό θα πρέπει να κατασκευάσετε δύο νέους άξονες με κέντρο κάποιο άλλο σημείο Κ της οθόνης, ορίζοντας τα κατάλληλα σημεία (2 για κάθε άξονα) και χρησιμοποιώντας την εντολή line. Αν Κ(χκκ) το νέο κέντρο, τότε, όπως φαίνεται στο σχήμα 3, τα σημεία που χρειαζόσαστε, μαζί με τις συντεταγμένες τους, είναι τα:

 

Μ(0, yκ), Μ΄(getmaxX, yκ), Ν(χκ ,0) και Ν΄(χκ, getmaxY)

 

 

 

 

 

 

 

 

                                                σχήμα 3

 

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

 

 

 

 

 

 

 

 

 

 

 

 

                                                σχήμα 4

 

Όπως θα παρατηρήσετε στο παραπάνω σχήμα, αν (X,Y) είναι οι συντεταγμένες ενός σημείου ως προς το νέο σύστημα αξόνων και (X1,Y1) οι συντεταγμένες που εσείς θέλετε να αναπαραστήσετε (τις δίνετε από πληκτρολόγιο), τότε οι μεταξύ τους σχέσεις δίνονται από τους τύπους X=(AB/2)+X1, Y=(AΓ/2)-Υ1.

 

Για να απεικονίσετε σημεία στο νέο σύστημα αξόνων, θα πρέπει να μετατρέψετε τις συντεταγμένες (Χ1, Υ1) σε (Χ, Υ) σύμφωνα με τους παραπάνω τύπους.

 

Προκαταρτικές πληροφορίες

 

Με την εντολή Line μπορείτε να σχηματίζετε ευθύγραμμα τμήματα:

 

Line (x1, y1, x2, y2) (σχηματίζει γραμμή μεταξύ 2 σημείων (χ1, y1) και (x2, y2))

 

Με βάση το πρόγραμμα my1_7b και χρησιμοποιώντας την εντολή Line, μπορείτε να σχηματίσετε στην οθόνη σας ένα τρίγωνο ΑΒΓ και να βρείτε το συμμετρικό του Α΄Β΄Γ΄ ως προς ένα κέντρο Ο(χκ, ψκ) που έχετε επιλέξει. Επειδή όμως η εύρεση του συμμετρικού θα επαναλαμβάνεται ως διαδικασία, μπορείτε να ορίσετε μια διαδικασία (procedure) την οποία και θα χρησιμοποιείτε κάθε φορά που τη χρειάζεστε.

 

Έστω Μ(χ, ψ) ένα σημείο, Κ(χκ, ψκ) το κέντρο συμμετρίας και Ν(χς, ψς) το συμμετρικό του σημείου Μ με κέντρο το σημείο Κ. Ονομάστε τη διαδικασία (procedure) ως Symmetria και ορίστε την ως εξής:

 

procedure Symmetria(X,Y:integer; var Xs,Ys:integer);

begin

Xs:=2*Xk-Χ Ys:=2*Yk-Υ;

end;

 

Στην περίπτωση του τριγώνου θα πρέπει να ορίσετε: τρία σημεία ως κορυφές του (χ1,ψ1), (χ2,ψ2), (χ3,ψ3) και ένα σημείο Κ(χκ, ψκ) ως κέντρο, και να βρείτε τα συμμετρικά των κορυφών με τη βοήθεια της διαδικασίας (procedure).

 

Για να βρείτε το συμμετρικό ενός σημείου (π.χ. του (χ3,ψ3)), θα πρέπει να γράψετε στο πρόγραμμα την εντολή Symmetria (Χ3, Υ3, Χs3, Ys3). Για τις μεταβλητές Χ3 η διαδικασία (procedure) δέχεται ως τιμές εκείνες που δίνονται από το πρόγραμμα, ενώ οι τιμές των μεταβλητών Χs3, Ys3 προκύπτουν από τον τύπο που έχετε ορίσει (όλες οι μεταβλητές πρέπει να έχουν ορισθεί).

 

 

Ερωτήματα – Διερευνήσεις

 

Επιλέξτε το πρόγραμμα my1_7a

Στο περιβάλλον που θα εμφανιστεί δώστε τις κατάλληλες εντολές και απαντήστε στα ερωτήματα που ακολουθούν:

 


Ερωτήματα – Διερευνήσεις

 

1.   Ποιες προσθήκες πρέπει να κάνετε στο πρόγραμμα my1_7a, ώστε να σχηματιστούν οι συντεταγμένες των κορυφών ενός τριγώνου και στη συνέχεια το τρίγωνο ΑΒΓ.  Μετονομάστε το πρόγραμμα σε my1_7d και αποθηκεύστε το στο φάκελο εργασίας σας.

  

    Κατεβάστε το πρόγραμμα εδώ.

    Κατεβάστε το εκτελέσιμο αρχείο εδώ.

 

 

2.   Ποιες προσθήκες πρέπει να κάνετε στο πρόγραμμα my1_7d, ώστε να σχηματιστεί το συμμετρικό του τριγώνου ΑΒΓ ως προς κέντρο συμμετρίας ένα σημείο Κ. Μετονομάστε το πρόγραμμα σε my1_7e και αποθηκεύστε το στο φάκελο εργασίας σας.

 

    Κατεβάστε το πρόγραμμα εδώ.

    Κατεβάστε το εκτελέσιμο αρχείο εδώ.