1. Η κωδικοποίηση των χρωµάτων για σύστηµα γραφικών µε 16 χρώµατα Κωδικός Χρώµα Χρώµατος 0 BLACK 1 BLUE 2 GREEN 3 CYAN 4 RED 5 MAGENTA 6 BROWN 7 LIGHTGRAY 8 DARKGRAY 9 LIGHTBLUE 10 LIGHTGREEN 11 LIGHTCYAN 12 LIGHTRED 13 LIGHTMAGENTA 14 YELLOW 15 WHITE 2. Τα στυλ της γραµµής σχεδίασης Κωδικός Είδος Στυλ Στυλ Γραµµής 0 SOLID_LINE 1 DOTTED_LINE 2 CENTER_LINE 3 DASHED_LINE 4 USERBIT_LINE 3. Τα είδη γεµίσµατος επιφανειών Κωδικός Είδος Γεµίσµατος Γεµίσµατος 0 EMPTY_FILL 1 SOLID_FILL 2 LINE_FILL 3 LTSLASH_FILL 4 SLASH_FILL 5 BKSLASH_FILL 6 LTBKSLASH_FILL 7 HATCH_FILL 8 XHATCH_FILL 9 INTERLEAVE_FILL 10 WIDE_DOT_FILL 11 CLOSE_DOT_FILL 12 USER_FILL. Πυροµάλης Νοέµβριος 2007 Σελ. 1 από 10
4. Εντολές Σχεδίασης Βασικών Σχηµάτων 4.1. Σχεδίαση Κύκλου Όπως είναι γνωστό ένας κύκλος ορίζεται από τη θέση του κέντρο του καθώς και από το µήκος της ακτίνας του. void circle( int x, int y, int radius ) x,y radious είναι οι συντεταγµένες του κέντρου του κύκλου είναι η ακτίνα του κύκλου circle(50,100,25); Οι συντεταγµένες του κέντρου είναι 50,100 και η ακτίνα είναι 25. initwindow(400,300); circle(50,100,25); while(!kbhit()); //open a 400x300 graphics window //wait for user to press a key. Πυροµάλης Νοέµβριος 2007 Σελ. 2 από 10
4.2. Σχεδίαση Γραµµής 4.2.A. Όπως είναι γνωστό µια ευθεία γραµµή ορίζεται από τουλάχιστον δύο σηµεία. void line( int x1, int y1, int x2, int y2 ); x1,y1 x2,y2 είναι οι συντεταγµένες του πρώτου σηµείου της ευθείας είναι οι συντεταγµένες του δεύτερου σηµείου της ευθείας line (50,100,80,150); Οι συντεταγµένες του πρώτου σηµείου είναι 50,100 και οι συντεταγµένες του δεύτερου σηµείου της ευθείας είναι 80,150. initwindow(400,300); line (50,100,80,150); while(!kbhit()); //open a 400x300 graphics window //wait for user to press a key 4.2.B. Ένας άλλος τρόπος σχεδίασης γραµµής είναι κάνοντας χρήση της συνάρτησης lineto (x,y). Με την συνάρτηση αυτή σχεδιάζουµε µία ευθεία η οποία θα ξεκινήσει από την αρχή των αξόνων (0,0) και θα τερµατίζεται στο σηµείο µε συντεταγµένες (x,y). Στην περίπτωση αυτή, η γραφίδα σχεδιασµού έχει µείνει στο σηµείο (x,y), έτσι εάν καλέσουµε ξανά την συνάρτηση lineto µε συντεταγµένες (x,y ) τότε θα σχεδιαστεί ένα νέο ευθύγραµµο τµήµα το οποίο αρχίζει από το σηµείο (x,y) και τελειώνει στο σηµείο µε συντεταγµένες (x,y ). Η διαδικασία αυτή µπορεί να επαναλαµβάνεται όσες φορές επιθυµεί ο χρήστης. void lineto( int x, int y );. Πυροµάλης Νοέµβριος 2007 Σελ. 3 από 10
x y είναι η συντεταγµένη κατά x του σηµείου τερµατισµού της ευθείας είναι η συντεταγµένη κατά y του σηµείου τερµατισµού της ευθείας lineto (50,100); lineto (80,150); Η πρώτη ευθεία που σχεδιάζεται αρχίζει από το σηµείο (0,0) και τελειώνει στο σηµείο (50,100). Η δεύτερη ευθεία που σχεδιάζεται αρχίζει από το σηµείο (50,100) και τελειώνει στο σηµείο (80,150). initwindow(400,300); lineto (50,100); lineto (80,150); while(!kbhit()); //open a 400x300 graphics window //wait for user to press a key Με τη χρήση της συνάρτησης moveto(x,y) είναι δυνατόν να ορίζει ο χρήστης ποιο θα είναι το αρχικό σηµείο της γραφίδας σχεδιασµού. Έτσι σε συνδυασµό µε την συνάρτηση lineto(x,y) µπορούµε να καθορίζουµε τις συντεταγµένες έναρξης της ευθείας. οκιµάστε να ενσωµατώσετε στο πρόγραµµά σας τις ακόλουθες κλήσεις, και παρατηρήστε την επίδραση της moveto(x,y): lineto( 50, 40 ); moveto(100,100); lineto(150,50); 4.2.Γ. Ένας τρίτος τρόπος σχεδίασης ευθείας είναι κάνοντας χρήση της συνάρτησης linerel (x,y). Η λέξη linerel προκύπτει από τις λέξεις line και relative υποδηλώνοντας έτσι τη σχεδίαση µιας ευθείας σε σχέση µε ένα ζεύγος συντεταγµένων που είναι γνωστό εκ των προτέρων.. Πυροµάλης Νοέµβριος 2007 Σελ. 4 από 10
Αρχίζει από το (0,0) όταν δεν έχει προηγηθεί ο σχεδιασµός άλλης ευθείας προηγουµένως. Μπορεί επίσης να χρησιµοποιηθεί σε συνδυασµό µε την συνάρτηση moveto(x,y). void linerel( int dx, int dy ); dx dy είναι η συντεταγµένη κατά x του σηµείου τερµατισµού της ευθείας. Ο συµβολισµός dx σηµαίνει πως από το προηγούµενο x το οποίο είναι γνωστό, η µετακίνηση θα γίνει κατά dx. Έτσι, το νούµερο που βάζουµε στην παράµετρο αυτή σηµαίνει σχετική µετατόπιση ως προς το αρχικό γνωστό σηµείο. είναι η συντεταγµένη κατά y του σηµείου τερµατισµού της ευθείας. Ο συµβολισµός dy σηµαίνει πως από το προηγούµενο y το οποίο είναι γνωστό, η µετακίνηση θα γίνει κατά dy. Έτσι, το νούµερο που βάζουµε στην παράµετρο αυτή σηµαίνει σχετική µετατόπιση ως προς το αρχικό γνωστό σηµείο. linerel (50,70); linerel (100,40); Η πρώτη ευθεία που σχεδιάζεται αρχίζει από το σηµείο (0,0) και τελειώνει στο σηµείο (50,70). Η δεύτερη ευθεία που σχεδιάζεται αρχίζει από το σηµείο (50,70) και τελειώνει στο σηµείο (150,110). Παρατηρήστε πως οι απόλυτες συντεταγµένες (150,110) εκφράστηκαν ως σχετικές συντεταγµένες (100,40) κάνοντας χρήση της συνάρτησης linerel(100,40). initwindow(400,300); linerel (50,70); linerel (100,40); while(!kbhit()); //open a 400x300 graphics window //wait for user to press a key. Πυροµάλης Νοέµβριος 2007 Σελ. 5 από 10
Με τη χρήση της συνάρτησης moveto(x,y) είναι δυνατόν να ορίζoυµε ποιο θα είναι το αρχικό σηµείο της γραφίδας σχεδιασµού. Έτσι σε συνδυασµό µε την συνάρτηση linerel(x,y) µπορούµε να καθορίζουµε τις συντεταγµένες έναρξης και τερµατισµού της ευθείας. οκιµάστε να ενσωµατώσετε στο πρόγραµµά σας τις ακόλουθες κλήσεις, και παρατηρήστε την επίδραση της moveto(x,y): lineto( 50, 40 ); moveto(100,100); linerel(150,50);. Πυροµάλης Νοέµβριος 2007 Σελ. 6 από 10
4.3. Σχεδίαση Παραλληλογράµµου Όπως είναι γνωστό ένα παραλληλόγραµµο ορίζεται από τις συντεταγµένες των τεσσάρων κορυφών του. Επειδή οι γωνίες που σχηµατίζουν δύο διαδοχικές πλευρές του παραλληλογράµµαου είναι ορθές, δηλαδή 90 ο, τότε αρκεί να γνωρίζουµε τις συντεταγµένες µιας µόνο κορυφής και έτσι η θέση των υπολοίπων κορυφών µπορεί να εκφραστεί ως τη διάσταση ως προς τον οριζόντιο ή τον κάθετο άξονα συντεταγµένων. top x2,y2 x3,y3 Άξονας y bottom x1,y1 x4,y4 left right Άξονας x void rectangle( int left, int top, int right, int bottom ); Σύµφωνα µε το παραπάνω σχήµα είναι: left = x1 = x2 top = y2 = y3 right = x3 = x4 bottom = y1 = y4 Είναι οι συντεταγµένες x1 και x2 Είναι οι συντεταγµένες y2 και y3 Είναι οι συντεταγµένες x3 και x4 Είναι οι συντεταγµένες y1 και y4 rectangle (50,20,100,40); Οι συντεταγµένες του παραλληλογράµµου είναι (x1,y1) = (50,40), (x2,y2) = (50,20), (x3,y3) = (100,20), (x4,y4) = (100,40).. Πυροµάλης Νοέµβριος 2007 Σελ. 7 από 10
initwindow(400,300); //open a 400x300 graphics window rectangle (50,20,100,40); while(!kbhit()); //wait for user to press a key. Πυροµάλης Νοέµβριος 2007 Σελ. 8 από 10
4.4. Σχεδίαση Σηµείου Όπως είναι γνωστό ένα σηµείο ορίζεται από τις συντεταγµένες του. Άξονας y y x Άξονας x void pixel ( int x, int y, int color); Σύµφωνα µε το παραπάνω σχήµα είναι: x Είναι η συντεταγµένη x του σηµείου y Είναι η συντεταγµένη y του σηµείου color Είναι το χρώµα του σηµείου putpixel (50,50,YELLOW); Θα σχεδιαστεί ένα κίτρινο σηµείο στη θέση (50,50). initwindow(400,300); //open a 400x300 graphics window putpixel (50,50,YELLOW); putpixel (100,100,LIGHTGREEN); putpixel (150,150,RED); while(!kbhit()); //wait for user to press a key. Πυροµάλης Νοέµβριος 2007 Σελ. 9 από 10
5. Μετασχηµατισµός Περιστροφής µιας Ευθείας Μια ευθεία που ορίζεται από δύο σηµεία, έστω (x1,y1) και (x2,y2), µπορεί να περιστραφεί κατά µία γωνία θ, εάν χρησιµοποιήσουµε τον πίνακα περιστροφής που φαίνεται στον παρακάτω τύπο. Οι νέες συντεταγµένες που προκύπτουν είναι (x1,y1 ) και (x2,y2 ). x1 x2 y1 y2 cosθ -sinθ sinθ cosθ = x1 y1 x2 y2 Οι µετασχηµατισµένες συντεταγµένες είναι: x1 = x1 cosθ + y1 (-sinθ) y1 = x1 sinθ + y1 cosθ x2 = x2 cosθ + y2 (-sinθ) y2 = x2 sinθ + y2 cosθ Προσοχή Η γωνία θ πρέπει να δωθεί σε ακτίνια κι όχι σε µοίρες!. Πυροµάλης Νοέµβριος 2007 Σελ. 10 από 10