ΟΜΑΔΑ Β. ΕΙΔΙΚΕΣ ΕΡΩΤΗΣΕΙΣ

1. Περιγράψτε τον τρόπο λειτουργίας των οπτικών δίσκων (CD-DVD/ROM).

Οι οπτικοί δίσκοι (Compact Disk) είναι τα τελευταία χρόνια το πιο διαδεδομένο μέσο αποθήκευσης μεγάλου όγκου ψηφιακών δεδομένων, ειδικά για εφαρμογές πολυμέσων. Οι συσκευές ανάγνωσης οπτικών δίσκων βασίζονται στην ανάκλαση μιας φωτεινής δέσμης laser πάνω στην επιφάνεια του δίσκου. Το υλικό κατασκευής τους ποικίλλει ανάλογα με την τεχνολογία ανάγνωσης και εγγραφής. Το κοινό χαρακτηριστικό τους είναι η μεγάλη διάρκεια ζωής τους λόγω του προστατευτικού στρώματος πλαστικού που τους περιβάλλει.

2. Τι ονομάζουμε κύρια και τι δευτερεύουσα μνήμη; Ποια είναι η βασική διαφορά τους;

Στην κύρια ή κεντρική μνήμη (main m κύρια ή κεντρική μνήμη (main memory) του υπολογιστή αποθηκεύονται τα προγράμματα που εκτελεί η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) και τα δεδομένα για τα προγράμματα αυτά. Η αποθήκευση αυτή είναι προσωρινή, και διαρκεί όσο και η λειτουργία του υπολογιστή. Όταν κλείσει ο υπολογιστής τα δεδομένα αυτά χάνονται. Επειδή η κύρια μνήμη των υπολογιστών είναι έτσι οργανωμένη ώστε να μπορεί να προσπελαστεί άμεσα οποιαδήποτε θέση της, αναφέρεται ως μνήμη τυχαίας προσπέλασης (Random Access Memory) και αποκαλείται RAM. Συμπλήρωμα της κύριας μνήμης είναι η μνήμη ROM (Read Only Memory), στην οποία είναι καταγραμμένα μόνιμα από τον κατασκευαστή του υπολογιστή ορισμένα βασικά προγράμματα ή μικρά τμήματα του ΛΣ.

Στη δευτερεύουσα ή περιφερειακή μνήμη (secondary memory) τα δεδομένα αποθηκεύονται μόνιμα. Τα δεδομένα που θα καταγραφούν στη δευτερεύουσα μνήμη δε χάνονται όταν κλείσει ο υπολογιστής, και είναι διαθέσιμα την επόμενη φορά που θα λειτουργήσει. Μονάδες δευτερεύουσας μνήμης είναι οι σκληροί δίσκοι, οι εύκαμπτοι δίσκοι, τα CD ROM σκληροί δίσκοι, οι εύκαμπτοι δίσκοι, τα CD ROM κλπ.

3. Πόσους αγωγούς χρησιμοποιεί ο δίαυλος USB και ποια η χρήση του καθενός απ' αυτούς;

•Κόκκινο =5 V •Καφέ = γείωση •Κίτρινο = Data •Μπλε = Data

4. Τι είναι το υλικό (Hardware) και τι το λογισμικό (Software) στοιχείο ενός υπολογιστικού συστήματος; Να αναφέρετε τέσσερα παραδείγματα από το καθένα.

Στην πληροφορική ως υλικό (Hardware) ορίζεται το σύνολο των φυσικών εξαρτημάτων ενός υπολογιστή, όπως π.χ. ηλεκτρικά και ηλεκτρονικά στοιχεία, μικροτσίπ κλπ. Παραδείγματα: Παραδείγματα: Πληκτρολόγιο, Ποντίκι, Μητρική κάρτα, Κεντρική Μονάδα Επεξεργασίας.

Με τον όρο λογισμικό υπολογιστών ή λογισμικό (Software) ορίζεται η συλλογή από προγράμματα υπολογιστών, διαδικασίες και οδηγίες χρήσης που εκτελούν ορισμένες εργασίες σε ένα υπολογιστικό σύστημα Παραδείγματα: επεξεργαστές κειμένου, λειτουργικό σύστημα, πρόγραμμα αναπαραγωγής ήχου, videogames.

5. Ποιες είναι οι βασικές κατηγορίες των λειτουργικών συστημάτων; Ποια είναι τα ιδιαίτερα χαρακτηριστικά καθεμιάς;

Λειτουργικό Σύστημα Ομαδικής Επεξεργασίας(Batch Systems Processing): Το σημαντικότερο χαρακτηριστικό των συστημάτων Ομαδικής Επεξεργασίας είναι ότι δεν υπήρχε αλληλεπίδραση μεταξύ του χρήστη και της εργασίας, ενώ η εργασία βρισκόταν σε εκτέλεση. Η εργασία προετοιμάζεται και υποβάλλεται, ενώ το αποτέλεσμα εμφανίζεται μετά τη μεσολάβηση κάποιου χρονικού διαστήματος (ώρες ή μέρες). Το χρονικό διάστημα μεταξύ της υποβολής της εργασίας της ολοκλήρωσής της ονομάζεται χρόνος περάτωσης ή ανακύκλωσης.

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

Λειτουργικό Σύστημα Καταμερισμού Χρόνου(Time Sharing): Σε αυτό το λειτουργικό σύστημα, στην κύρια μνήμη του υπολογιστή υπάρχει ένα σύνολο προγραμμάτων τα οποία περιμένουν να εξυπηρετηθούν από εξυπηρετηθούν από την Κεντρική Μονάδα Επεξεργασίας. Επιπλέον όμως το Λειτουργικό Σύστημα διαθέτει ένα χρονοδρομολογητή ο οποίος με τη βοήθεια ενός ειδικού κυκλώματος που ονομάζεται χρονιστής (timer), αναλαμβάνει να κατανείμει το χρόνο της ΚΜΕ σε όσα προγράμματα είναι έτοιμα για εκτέλεση. Δηλαδή η ΚΜΕ εξυπηρετεί διαδοχικά όλα τα προγράμματα διαθέτοντας σε καθένα από αυτά ένα ορισμένο ποσό χρόνου. Αυτό το χρονικό διάστημα ονομάζεται κβάντο χρόνου και συνήθως είναι μερικά δέκατα του δευτερολέπτου.

6. Ποιους τύπους οθονών υπολογιστών γνωρίζετε; Περιγράψτε σύντομα τις αρχές λειτουργίας τους.

Οι οθόνες κατηγοριοποιούνται, σύμφωνα με την τεχνολογία που χρησιμοποιούν σε: Οθόνες καθοδικού σωλήνα (CRT m καθοδικού σωλήνα (CRT monitors) onitors) και Επίπεδες οθόνες (flat-panel displays).

Οθόνες καθοδικού σωλήνα: Αποτελούνται από ένα (για μονόχρωμες οθόνες) ή τρία (για έγχρωμες οθόνες) πυροβόλα ηλεκτρονίων μέσα σε ένα σωλήνα. Τα ηλεκτρόνια, αφού διανύσουν το σωλήνα, προσκρούουν στο πίσω μέρος της οθόνης που είναι επιστρωμένο με φωσφορίζουσα ουσία. Στο σημείο πρόσκρουσης με την οθόνη, η φωσφορίζουσα ουσία διεγείρεται και λάμπει με αποτέλεσμα την εμφάνιση μιας φωτεινής κουκκίδας. Η κουκκίδα αυτή αποτελεί το ελάχιστο ίχνος απεικόνισης και ονομάζεται εικονοστοιχείο (pixel - picture picture element). element). Η διέγερση της φωσφορίζουσας ουσίας διαρκεί μερικά χιλιοστά του δευτερολέπτου, που αποτελούν το χρόνο αναλαμπής

Eπίπεδη οθόνη τεχνολογία υγρών κρυστάλλων (LCD): Η λειτουργία τους στηρίζεται στην ύπαρξη ενός πλέγματος από κύτταρα υγρών κρυστάλλων που είναι οργανωμένα σε γραμμές και στήλες. Τα κύτταρα κρυστάλλων ελέγχονται από τρανζίστορ. Όταν διοχετεύεται ρεύμα στα τρανζίστορ, αυτά περιστρέφουν τους κρυστάλλους κατά γωνία ανάλογη της έντασης του ρεύματος. Στο πίσω μέρος της οθόνης υπάρχει μια φθοριούχος πλάκα που ακτινοβολεί φως, το οποίο διέρχεται μέσα από δύο φίλτρα οριζόντιας και κατακόρυφης πόλωσης, στη μέση των οποίων υπάρχει το πλέγμα των κρυστάλλων και το φίλτρο των χρωμάτων. Τα φίλτρα οριζόντιας και κατακόρυφης πόλωσης αφήνουν να περάσει ακτινοβολία συγκεκριμένου μήκους κύματος με οριζόντια ή κατακόρυφη ταλάντωση. Στη συνέχεια το πλέγμα των κρυστάλλων στρέφει την ακτίνα του φωτός ώστε να περάσει ολόκληρη, λίγη ή καθόλου μέσα από το επόμενο φίλτρο, με αποτέλεσμα στην οθόνη να εμφανίζεται το τελικό ίχνος.

Επίπεδη οθόνη τεχνολογία LED: Oι LED οθόνες δεν είναι τίποτα περισσότερο από μια παραλλαγή των οθονών LCD. Μάλιστα το πλήρες όνομα τους είναι LED-Backlit LCD. Η μόνη διαφορά μεταξύ των δύο τύπων οθονών είναι πως οι LED χρησιμοποιούν ως πηγή φωτισμού λυχνίες (λάμπες) LED, αντί για λυχνίες φθορισμού. Οι λάμπες LED είναι πιο φιλικές προς το περιβάλλον, παράγουν περισσότερο φως, ενώ ταυτόχρονα έχουν χαμηλότερες ενεργειακές ανάγκες.

7. Με ποιο τρόπο το Λειτουργικό Σύστημα συνεργάζεται με την Κεντρική Μονάδα Επεξεργασίας;

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

8. Τι πρέπει να κάνουμε, έτσι ώστε να είναι δυνατόν να γράψουμε ένα μικρό κείμενο μπροστά ακριβώς από μια εικόνα που έχουμε εισάγει στο κείμενο;

Πατάμε δεξί κλικ πάνω στην εικόνα και επιλέγουμε "αναδίπλωση κειμένου→πίσω από το κείμενο". Κάνουμε κλικ στα αριστερά της εικόνας έξω από το περίγραμμά της και μόλις εμφανιστεί ο δείκτης θέσεως γράφουμε το κείμενο που θέλουμε. Αυτό εμφανίζεται πάνω στην εικόνα.

9. Να περιγράψετε τον κύκλο ανάπτυξης ενός Πληροφοριακού Συστήματος. Δώστε ένα παράδειγμα.

Κύκλος ανάπτυξης ενός Πληροφοριακού Συστήματος: ● Διερευνητική μελέτη ● Μελέτη σκοπιμότητας ● Ανάλυση απαιτήσεων ● Έλεγχος ● Υλοποίηση-κωδικοποίηση ● Σχεδιασμός ● Παράδοση ● Εγκατάσταση-Λειτουργία-Συντήρηση, Απόσυρση. π.χ. Ένα σύγχρονο πληροφοριακό σύστημα Data Warehouse (Αποθήκευσης δεδομένων).

10. Με τη χρήση κατάλληλου προγράμματος να παρουσιάσετε την διαφορά μεταξύ των εντολών break και continue.

Η εντολή break διακόπτει τον βρόχο αμέσως όταν συναντάται, ενώ η εντολή continue παραλείπει ορισμένες δηλώσεις μέσα στο βρόχο. Για παράδειγμα εάν θέλω να παρουσιάσω τον υπολογισμό αθροίσματος 10 θετικών ακεραίων θα χρησιμοποιήσουμε break ως εξής:

# include <stdio.h>

int main(){

int i;

double number, sum = 0.0;

for(i=1; i <= 10; ++i) {

printf("Ent printf("Enter a n%d: ",i); n%d: ",i);

scanf("%lf",&number);

if(number < 0.0){

break;

}

sum += number;

}

printf("Sum = printf("Sum = %.2lf",sum); %.2lf",sum);

return 0;

}

Από την άλλη αν δεν είμαστε αυστηροί ως προς την είσοδο και μπορούμε να παραλείψουμε

απλά τους αρνητικούς αριθμούς, θα χρησιμοποιήσουμε το continue ως εξής:

# include <stdio.h>

int main(){

int i;

double number, sum = 0.0;

for(i=1; i <= 10; ++i) {

printf("Ent printf("Enter a n%d: ",i); n%d: ",i);

scanf("%lf",&number);

if(number < 0.0){

continue;

}

sum += number;

}

printf("Sum = printf("Sum = %.2lf",sum); %.2lf",sum);

return 0;

11. Να γραφεί πρόγραμμα σε C, που να υπολογίζει τη μέση τιμή ακέραιων αριθμών, όταν εισάγονται από το πληκτρολόγιο. Η εισαγωγή τερματίζεται, όταν δοθεί σαν τιμή ακεραίου το 0 (μηδέν).

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[]) {

int number=0;

int value=0;

double mean=0;

int counter;

printf("\nG printf("\nGive number: ive number: ");

scanf("%d",&number);

value=value+number;

counter=1; mean=value/counter;;

printf("\nThe mean is: %lf", mean);

while(number!=0){

printf("\nG printf("\nGive number: ive number: ");

scanf("%d",&number);

value=value+number;

counter++;

mean=value/counter;

printf("The mean is: %lf", mean);

}

printf("\ncomputation terminated ...");

return 0;

}

12. Να γραφεί πρόγραμμα σε C, που θα διαβάζει 2 ακεραίους αριθμούς από το πληκτρολόγιο και θα εκτυπώνει το άθροισμά τους στην οθόνη σε δεκαδική μορφή. Το αποτέλεσμα να φαίνεται επίσης σε οκταδική και δεκαεξαδική μορφή.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[]) {

int x,y,sum;

printf("give x: ");

scanf("%d",&x);

printf("give y: ");

scanf("%d",&y);

sum=x+y;

printf("%X\n", sum);

printf("%o\n", sum);

return 0;

}

13. Να γραφεί πρόγραμμα σε C, που θα υπολογίζει το μέσο όρο δύο πραγματικών αριθμών. Ο υπολογισμός της μέσης τιμής να γίνει με τη δημιουργία ξεχωριστής συνάρτησης.

#include <stdio.h>

#include <stdlib.h>

double mean(int, int);

int main(int argc, char *argv[]) {

int x,y;

double result;

printf("give x: ");

scanf("%d",&x);

printf("give y: ");

scanf("%d",&y);

result=mean(x,y);

printf("the mean value is: printf("the mean value is: %lf",result %lf",result);

return 0;

}

double mean(int a, int b){

int sum;

double mean_value;

sum=a+b;

mean_value=(double)(sum/2);

return mean_value;

}

14. Να γραφεί πρόγραμμα σε C, που θα διαβάζει το όνομα του χρήστη και θα εκτυπώνει φιλικό χαιρετισμό.

#include <stdio.h>

#include <stdlib.h>

int main(){

char array[100];

printf("Enter your name: ");

scanf("%s" scanf("%s", array); array);

printf("\nHello %s, nice to meet you !!! \n",array);

return 0;

}

15. Να γραφεί πρόγραμμα σε C, που θα εκτυπώνει πίνακα αντιστοίχισης μονάδων θερμοκρασίας από Φαρενάιτ σε Κελσίου ανά 20 βαθμούς. [Ο τύπος μετατροπής είναι C=5(F-32)/9 ]

#include<stdio.h>

#include <stdlib.h>

int main() {

double celsius;

int fahrenheit;

int i;

for(i=0;i<1000;i=i+20){

fahrenheit=i;

celsius=5*(fahrenheit-32)/9 ;

printf("\n printf("\n temp in temp in Fahrenheit Fahrenheit : %d ---> ", ---> ",fahrenheit) fahrenheit);

printf("tem printf("temp in celsius : p in celsius : %.2f ", celsius); %.2f ", celsius);

}

return (0);

}

16. Να σχεδιαστεί ο αλγόριθμος εξαγωγής στοιχείου από λίστα.

Algorithm Deletion

1.If (DATA(list)='VAL')then{

Ptr=LIST;

LIST=NEXT(list);

Delete ptr;

Stop;

}

Back=list;

Ptr=list;

2.while(ptr 2.while(ptr<>NULL) repeat step 3 to <>NULL) repeat step 3 to 5

3. If(DATA(ptr)='VAL') then{

NEXT(back)=NEXT(ptr);

Delete ptr;

Exit;

}

4. back=ptr;

5. ptr=next(ptr);

6.[end of while loop]

7.END

17. Να σχεδιαστεί ο αλγόριθμος εισαγωγής στοιχείου σε λίστα.

Algorithm Insertion

1.X=new node;

2.Read(DATA(X);

3.If (FIRST=NULL) then{

First=X;

NEXT(X)=NULL;

}

Else{

NEXT(X)=First;

First=X;

}

4.END

18. Να σχεδιαστεί ο αλγόριθμος εισαγωγής στοιχείου σε ουρά.

Algorithm Enqueue

1. If ( REAR = size ) then // then //Queue i Queue is full

2. print "Queue is full"

3. Exit

4. Else

5. If ( FRONT = 0 ) and ( REAR = 0 ) then //Queue //Queue is empty

6. FRONT = 1

7. End if

8. REAR = REAR + 1 // increment increment REAR

9. Que[ REAR ] = ITEM

10. End if

11. Stop

19. Να σχεδιαστεί ο αλγόριθμος εξαγωγής στοιχείου από ουρά.

Algorithm Dequeue

1. If ( FRONT = FRONT = 0 ) then

2. print "Queue is empty"

3. Exit

4. Else

5. ITEM = Que [ FRONT ]

6. If ( FRONT = REAR )

7. REAR = 0

8. FRONT = 0

9. Else

10. FRONT = FRONT + 1

11. End if

12. End if

13. Stop

20. Να σχεδιαστεί ο αλγόριθμος εισαγωγής στοιχείου σε στοίβα.

Algorithm Push

1. If TOP >= SIZE - 1 then

Write "Stack is Overflow"

2. TOP = TOP + 1

3. STACK [TOP] = X

21. Να σχεδιαστεί ο αλγόριθμος εξαγωγής στοιχείου από στοίβα.

Algorithm Pop

1. If TOP = -1 then

Write "Stack is Underflow"

2. Return STACK [TOP]

3. TOP = TOP - 1

22. Να σχεδιαστεί ο αλγόριθμος της σειριακής αναζήτησης.

Algorithm Linear Search

Input ( Array A, Value x)

1. Set i to 1

2. if i > n then go to step 7

3. if A[i] = x then go to step 6

4. Set i to i + 1

5. Go to Step 2

6. Print Element x Found at index i and 6. Print Element x Found at index i and go to step go to step 8

7. Print element not found

8. Exit

23. Να σχεδιαστεί ο αλγόριθμος της δυαδικής αναζήτησης.

Algorithm binary_search

1. A ← sorted array

2. n ← size of array

3. x ← value ← value to be searched searched

4. Set lowerBound lowerBound = 1

6. Set upperBound upperBound = n

7. while x not found

8. if upperBound upperBound < lowerBound lowerBound

9. EXIT: x does not exists. exists.

10. set midPoint midPoint = lowerBound owerBound + ( upperBound upperBound - lowerBound werBound ) / 2

11. if A[midPoint] A[midPoint] < x

12. set lowerBound lowerBound = midPoint midPoint + 1

13. if A[midPoint] A[midPoint] > x

14. set upperBound upperBound = midPoint midPoint - 1

15. if A[midPoint] A[midPoint] = x

16. EXIT: x found at location location midPoint midPoint

17. end while

24. Να σχεδιαστεί ο αλγόριθμος της ταξινόμησης φυσαλίδας.

Algorithm BubbleSort

Input (list)

1.for all elements of list

2. if list[i] list[i] > list[i+1] list[i+1]

3. swap(list[i] swap(list[i], list[i+1]) list[i+1])

end if

end for

4. return list

end BubbleSor

25. Τι είναι ένα σύστημα Πολυδιεργασίας (Multitasking System);

Το multitasking σε ένα λειτουργικό σύστημα επιτρέπει την εκτέλεση περισσότερων από μία εργασιών κάθε φορά (ταυτόχρονα). Το λειτουργικό σύστημα είναι σε θέση να παρακολουθεί τη κατάσταση αυτών των εργασιών (tasks) και να μεταφέρει τον έλεγχο από το ένα στο άλλο χωρίς να χάνουμε πληροφορίες. Τα Microsoft Windows 2000, το OS / 390 και το Linux της IBM είναι παραδείγματα λειτουργικών συστημάτων που μπορούν να κάνουν multitasking (σχεδόν όλα τα σημερινά λειτουργικά συστήματα μπορούν). Όταν για παράδειγμα, ανοίγουμε το πρόγραμμα περιήγησης και, στη συνέχεια, μια άλλη εφαρμογή ταυτόχρονα, προκαλείται το λειτουργικό σύστημα να κάνει πολλαπλές εργασίες. Κάθε διεργασία καταναλώνει αποθηκευτικό σύστημα και άλλους πόρους, και ως εκ τούτου ο αριθμός των παράλληλων διεργασιών δεν είναι απεριόριστος. Καθώς ξεκινούν περισσότερες εργασίες, το σύστημα μπορεί να επιβραδυνθεί ή να ξεκινήσει να εξαντλείται από κοινόχρηστο αποθηκευτικό χώρο

26. Τι εννοούμε με τον όρο διεργασία; Σε τι διαφέρει από το πρόγραμμα;

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

27. Πως λειτουργεί η σελιδοποίηση; Τι συμβαίνει όταν μια σελίδα της εικονικής μνήμης δεν αντιστοιχεί σε ενότητα της φυσικής μνήμης;

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

28. Τι λέγεται εικονική μηχανή (virtual machine);

Η εικονική μηχανή (virtual machine) είναι μια εξομοίωση ενός ξεχωριστού υπολογιστή μέσα στο PC μας. Έχει ακριβώς τις λειτουργίες ενός φυσικού υπολογιστή: κάνει boot, επανεκκίνηση, και τερματισμό λειτουργίας. Μπορούμε να συνδέσουμε περιφερειακές συσκευές, από φλασάκια USB μέχρι εκτυπωτές και scanner. H virtual machine διαθέτει μέχρι και δικό της BIOS ή UEFI, ενώ χρειάζεται drivers για την εξομοίωση της κάρτας γρ χρειάζεται drivers για την εξομοίωση της κάρτας γραφικών και φικών και ήχου.

29. Πόσα είδη διεργασιών υπάρχουν; Σε ποιες καταστάσεις μπορεί να βρίσκεται μια διεργασία;

Με τον όρο διεργασία (process) νοείται ένα πρόγραμμα το οποίο έχει φορτωθεί στην κύρια μνήμη και βρίσκεται σε κατάσταση εκτέλεσης με αποτέλεσμα να καταναλώνει χρόνο της ΚΜΕ και πόρους του συστήματος(κύρια μνήμη,χώρο σε αποθηκευτικά μέσα,κανάλια επικοινωνίας). Η διεργασία δηλαδή εκφράζει κάτι δυναμικό και σε εξέλιξη, σε αντίθεση με το πρόγραμμα που είναι κάτι στατικό. Κάθε ΛΣ αποτελείται από πολλά επί μέρους προγράμματα,τα οποία εκτελούνται παράλληλα για να εξυπηρετούν τους χρήστες, είναι δηλαδή και αυτό χωρισμένο σε διεργασίες. Το ίδιο μπορεί να γίνει και με τα προγράμματα των χρηστών, να διαιρεθούν δηλαδή σε τμήματα τα οποία εκτελούνται παράλληλα. Όταν όμως τα τμήματα αυτά πρέπει να μοιράζονται διάφορα στοιχεία του προγράμματος, όπως π.χ. μεταβλητές, μπορεί να χρησιμοποιηθεί και ένα εναλλακτικό είδος διεργασιών,οι ελαφρές διεργασίες (lightweightprocesses) ή νήματα εκτέλεσης (threadsofexecution) ή απλούστερα νήματα(threads). Όταν ένα πρόγραμμα διαιρεθεί σε νήματα που εκτελούνται «παράλληλα» «παράλληλα» (όπως οι διεργασίες) αντί σε ανεξάρτητες διεργασίες, προκαλείται μικρότερη επιβάρυνση στο υπολογιστικό σύστημα, γιατί η μεταγωγή περιβάλλοντος μεταξύ νημάτων είναι πιο γρήγορη από ό,τι μεταξύ διεργασιών. Οι καταστάσεις που μπορεί μια διεργασία να βρεθεί: ● Νέα (New): Η διεργασία δημιουργείται. ● Εκτελούμενη (Running): Εκτελούνται εντολές. ● Εν αναμονή (Waiting): Η διεργασία αναμένει να συμβεί κάποιο γενονός (όπως η λήψη ενός σήματος). ● Έτοιμη (Ready): Η διεργασία περιμένει να ανατεθεί σε έναν επεξεργαστή. ● Τερματισμένη (Terminated): Η εκτέλεση της διεργασίας έχει ολοκληρωθεί.

30. Τι ονομάζεται εσωτερικός και εξωτερικός κατακερματισμός;

Λόγω των κανόνων που διέπουν την κατανομή μνήμης, η μνήμη μπορεί να παραχθεί μόνο σε «τεμάχια» 4,8,16 bytes. Έτσι αν κάποιο πρόγραμμα ζητήσει 23 bytes θα πάρει 32 bytes. Άρα ουσιαστικά μένουν 9 bytes ανεκμετάλλευτα και αυτό είναι μία περίπτωση εσωτερικού κατακερματισμού.

Εσωτερικός κατακερματισμός: είναι η μνήμη που δεν χρησιμοποιείται (δαπανάται) και είναι ορατή μόνον από τη διεργασία που ζητά μνήμη. Συμβαίνει επειδή η ποσότητα μνήμης που θα εκχωρηθεί στη διεργασία πρέπει να είναι μεγαλύτερη ή ίση από την αιτούμενη ποσότητα.

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

31. Τι συμβαίνει κατά την ανταλλαγή μνήμης;

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

32. Να ορισθούν οι έννοιες "Μερισμός χρόνου" (Time sharing) και "επεξεργασία Πραγματικού χρόνου" (RealTime processing).

Ο "μερισμός χρόνου" (time sharing) είναι η ανταλλαγή ενός υπολογιστικού πόρου μεταξύ πολλών χρηστών μέσω του πολλαπλού προγραμματισμού και της πολλαπλής εκτέλεσης εργασιών ταυτόχρονα.

Με τον όρο "επεξεργασία Πραγματικού χρόνου" (Real Time processing), εννοούμε την επεξεργασία δεδομένων που εμφανίζεται ή λαμβάνει χώρα αμέσως, κατά την εισαγωγή δεδομένων ή την παραλαβή μιας εντολής.

33. Τι είναι τα μονότροπα και τι τα πολύτροπα καλώδια οπτικών ινών;

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

34. Περιγράψτε την λειτουργία του δρομολογητή (router) και του μεταγωγέα (ethernet Switch).

ΜΕΤΑΓΩΓΕΙ ΜΕΤΑΓΩΓΕΙΣ (SWITCHES) (SWITCHES) Ο μεταγωγέας αποτελεί ένα συνδυασμό της γέφυρας και του επαναλήπτη. Χρησιμοποιείται για την μείωση της κίνησης του δικτύου. Δουλεύουν με την έννοια , εξέταση ενός μέρος της πληροφορίας και μετά αποστολή (cut-through). Λειτουργεί σε 2 επίπεδα : στο φυσικό επίπεδο (MAC), και στο λογικό επίπεδο (LLC)ανάλογα με τον προορισμό της πληροφορίας.

ΔΡΟΜΟΛΟΓΗΤΕΣ (ROUTERS) Η κύρια λειτουργία τους είναι η διασύνδεση των δικτύων στο 3ο επίπεδο του OSI. Συνδέουν τα δίκτυα μεταξύ τους βάση το πρωτόκολλο που χρησιμοποιούν για την επικοινωνία τους. Οι δρομολογητές κάνουν 2 βασικές διαδικασίες : Α) τον καθορισμό της καλύτερης διαδρομής Β) τη μεταφορά των πακέτων Η δρομολόγηση των πακέτων γίνεται βάση της λογικής διεύθυνσης ( διεύθυνσης (LLC).

35. Τι είναι η οπτική ίνα; Να περιγράψετε την λειτουργία της.

Η οπτική ίνα χρησιμοποιείται όταν οι απαιτήσεις σε ρυθμούς μετάδοσης είναι αρκετά αυξημένες και όταν οι αποστάσεις είναι πολύ μεγάλες. Στο κέντρο του καλωδίου υπάρχει η οπτική ίνα που κατασκευάζεται από γυαλί, που θα μεταφέρει τη δέσμη φωτός (που συνήθως εκπέμπεται από LED , LASER) με πολύ λίγες απώλειες. Την οπτική ίνα την περιβάλει ειδικό υλικό με δείκτη διάθλασης μικρότερο από αυτόν της οπτικής ίνας (cladding). Το υλικό αυτό βοηθά να αντανακλάται συνέχει η δέσμη φωτός που θα πέσει στην οπτική ίνα. Εξωτερικά υπάρχουν δέσμες συνθετικών ινών που προστατεύουν την ίνα και όλα αυτά περικλείονται από εξωτερικό πλαστικό περίβλημα. (Το φως εκπέμπεται από LED και διαθλάται κατά μήκος της οπτικής ίνας με την βοήθεια του εξωτερικού περιβλήματος).

36. Τι είναι ημίδιπλη (ταυτόχρονα αμφίδρομη - Full Duplex) επικοινωνία και τι η ημίδιπλη (αμφίφρομη μη ταυτόχρονη - Half Duplex) επικοινωνία. Να αναφέρετε τις διαφορές μεταξύ τους.

HALF DUPLEX (Αμφίδρομη μη Ταυτόχρονη Επικοινωνία). Η αποστολή δεδομένων γίνεται είτε προς τη μία είτε προς την άλλη μεριά όχι όμως ταυτόχρον όμως ταυτόχρονα.

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

37. Τι είναι το Χ.25; Να περιγράψετε τα επίπεδα του.

Το Χ.25 είναι ακριβώς ένα πρωτόκολλο επικοινωνίας το οποίο ορίζει ένα σύνολο καθορισμών / προδιαγραφών για το DTE / DCE interface. Τα βασικά του καθήκοντα είναι τα εξής : 1) Ανταλλαγή κωδίκων για αποκατάσταση μιας σύνδεσης (Link Set-Up). 2) Αλληλουχία λειτουργιών που αφορούν στη μετάδοση / λήψη δεδομένων, στη διαχείριση διαδικασιών ελέγχου σφαλμάτων, στην εξασφάλιση έγκυρης και σωστής λήψης πληροφοριών.

Τυπικό Δίκτυο X.25 : Ένα Χ.25 δίκτυο, αποτελείται από επικοινωνιακούς κόμβους μεταγωγής πακέτων, συνδεδεμένων ανά δύο point - to - point (Connected (Connected Mesh Topology). Topology). Υπάρχει επομένως ένας τουλάχιστον φυσικός δρόμος επικοινωνίας μεταξύ οποιονδήποτε δύο κόμβων του δικτύου.

• Φυσικό επίπεδο: Το Φυσικό Επίπεδο (Επίπεδο-1) λέγεται και Επίπεδο bits. Εδώ μας ενδιαφέρει η μεταφορά bits πληροφορίας, με όσο αξιόπιστο τρόπο γίνεται. Το επίπεδο αυτό ορίζει συστάσεις για τα ηλεκτρικά χαρακτηριστικά (επιτρεπόμενες ηλεκτρικές τάσεις, ρυθμοί μετάδοσης, κ.λ.π.), τα μηχανικά χαρακτηριστικά (χρησιμοποιούμενα καλώδια, connectors, κ.λ.π.), τα λειτουργικά και διαδικαστικά χαρακτηριστικά που απαιτούνται για μια φυσική DTE/DCE. Για μια τέτοια σύνδεση δεν καθορίζεται το μέσο, αλλά συνήθως είναι πάνω από μια αφιερωμένη γραμμή ενός επιλεγόμενου τηλεφωνικού δικτύου (PSTN) με modem στις δύο άκρες του, προκειμένου να συνδεθούμε στο Δημόσιο Δίκτυο Δεδομένων (PDN - Public Data Network). Οι ρυθμοί μετάδοσης δεδομένων μπορούν να φθάσουν έως και 48.000 bps.

• Data Link Layer(Επίπεδο 2): Σκοπός του επιπέδου αυτού είναι η αξιόπιστη, χωρίς σφάλματα μεταφορά δεδομένων μεταξύ των δύο άκρων ενός λογικού κυκλώματος. Ενώ στο επίπεδο-1 αποκαθίσταται η φυσική σύνδεση DTE/DCE και αποστέλλονται απλά bits, στο επίπεδο-2 γίνεται μια πρώτη οργάνωση και απόδοση έννοιας στα bits του επιπέδου-1. Τώρα στέλνονται πλαίσια (frames) και μάλιστα με αξιόπιστο τρόπο. Δύο είναι τα βασικά χαρακτηριστικά του επιπέδου αυτού: Υπάρχει επιβεβαίωση σωστής λήψης από το δίκτυο. Η επικοινωνία DTE/DCE είναι σύγχρονη, point-to- point και Full Duplex(ταυτόχρονης διπλής κατεύθυνσης).

• Network Network Layer(Επίπεδο 3) (packet - layer protocol) Το πρωτόκολλο αυτό περιγράφει την ανταλλαγή πακέτων (packets) μεταξύ DTE και DCE. Οι βασικές λειτουργίες που ορίζονται DTE και DCE. Οι βασικές λειτουργίες που ορίζονται είναι οι εξής: • Δημιουργία πακέτων ελέγχου και μεταφοράς δεδομένων. • Διαδικασίες ανταλλαγής των πακέτων αυτών Διαδικασίες ανταλλαγής των πακέτων αυτών μεταξύ DTE μεταξύ DTE/DCE. • Δημιουργία και εποπτεία Νοητών Κυκλωμάτων. Ένα DTE μπορεί να δημιουργήσει ταυτόχρονα περισσότερα του ενός νοητά κυκλώματα PVC ή SVC προς διάφορους συνδρομητές (DTEs).

38. Τι γνωρίζετε για την τεχνολογία ADSL;

Asymmetric Digital Subscriber Line (Ασύμμετρη Ψηφιακή Συνδρομητική Γραμμή) ή ADSL είναι μια μορφή DSL, δηλαδή μια τεχνολογία μετάδοσης δεδομένων δηλαδή μια τεχνολογία μετάδοσης δεδομένων που λειτουργεί πάνω σε παραδοσιακή τηλεφωνική γραμμή αλλά πετυχαίνει υψηλότερους ρυθμούς μεταφοράς από τα παραδοσιακά modem. Το απλό χάλκινο καλώδιο (γνωστό και ως τοπικός βρόχος, local loop ή last mile) που συνδέει σχεδόν κάθε σπίτι με το τοπικό τηλεφωνικό κέντρο, έχει πολύ περισσότερες δυνατότητες από την υποστήριξη της απλής τηλεφωνίας. Έτσι με χρήση ανώτερου τμήματος του εύρους ζώνης του βρόχου, εκείνου το οποίο μένει αναξιοποίητο από την κλασική τηλεφωνία (PSTN ή ISDN), επιτυγχάνονται υψηλές ταχύτητες μετάδοσης δεδομένων. Το γεγονός αυτό προσφέρει κι ενα ακόμη πλεονέκτημα: η παραδοσιακή τηλεφωνία και η μετάδοση δεδομένων μπορούν να λειτουργούν ταυτόχρονα και ανεξάρτητα η μία από την άλλη, εφόσον χρησιμοποιούν διαφορετικό φάσμα συχνοτήτων στην τηλεφωνική γραμμή. Ωστόσο οι συχνότητες που χρησιμοποιεί το ADSL εξασθενούν συντομότερα από αυτές της τηλεφωνίας, με αποτέλεσμα να μπορεί να λειτουργήσει σε αποστάσεις έως 5 Χλμ. από το τηλεφωνικό κέντρο. Επιπλέον, όσο μεγαλώνει η απόσταση από το τηλεφωνικό κέντρο τόσο μειώνεται η ταχύτητα μετάδοσης δεδομένων που μπορεί να επιτευχθεί από το ADSL. Χαρακτηριστικό του ADSL είναι το ότι οι ταχύτητες λήψης και αποστολής δεδομένων διαφέρουν - σε αυτό οφείλει και τη λέξη «ασύμμετρη» στο όνομά του. Η μέγιστη ταχύτητα που μπορεί να επιτύχει είναι τα 24/1 Mbps. Ένα επιπλέον χαρακτηριστικό είναι οτι η σύνδεση ADSL είναι μόνιμη και διαθέσιμη ανά πάσα στιγμή (always-on). Δηλαδή δεν απαιτείται σύνδεση και αποσύνδεση από το δίκτυο όπως συμβαίνει με τίς τηλεφωνικές κλήσεις.

39. Περιγράψτε την δομή ενός δικτύου ATM καθώς και τις κατηγορίες υπηρεσιών που προσφέρει.

Ο ασύγχρονος τρόπος μεταφοράς (Asynchronous Transfer Mode, ATM) είναι σύγχρονη και πολλά υποσχόμενη εφαρμογή της τεχνικής της μεταγωγής. Συνδυάζει την αποδοτικότητα της μεταγωγής πακέτων με την αξιοπιστία της μεταγωγής κυκλώματος. Για τη μετάδοση των δεδομένων, χρησιμοποιεί σταθερού μεγέθους πακέτα των 53 bytes, τις κυψέλες (cells). Από αυτά, τα 5 πρώτα bytes αποτελούν της ΑΤΜ επικεφαλίδα (header) και τα υπόλοιπα 48 bytes την ωφέλιμη πληροφορία του χρήστη (payload). Το γεγονός ότι χρησιμοποιούνται κυψέλες σταθερού μεγέθους, επιβαρύνει πολύ λιγότερο τις διεργασίας μεταγωγής και δρομολόγησης που εκτελούνται σε κάθε κόμβο του δικτύου ΑΤΜ. Έτσι, μπορούν να επιτευχθούν πολύ υψηλές ταχύτητες μεταγωγής των δεδομένων, που μπορούν να φθάσουν και στα θάσουν και στα 622 Mbps. 622 Mbps.

Το μοντέλο ATM αποτελείται από 3 επίπεδα:

Φυσικό επίπεδο: ασχολείται με το φυσικό μέσο (τάση, ρυθμός μετάδοσης, κτλ.) Το ΑΤΜ έχει σχεδιαστεί για να είναι ανεξάρτητο από το μέσο μετάδοσης,απλά αναφέρεται ότι η μετάδοση πρέπει να γίνεται με ομοαξονικά καλώδια, οπτικές ίνες και γενικά μέσα μετάδοσης ευρείας ζώνης.

Το επίπεδο ΑΤΜ: ασχολείται με τη μετάδοση των πακέτων (ονομάζονται κελιά) και καθορίζει τα χαρακτηριστικά και τα περιεχόμενά τους. Ασχολείται με την εγκατάσταση και αναγνώριση κυκλωμάτων καθώς και με τον έλεγχο της συμφόρησης.

Επίπεδο προσαρμογής ΑΤΜ (ATM Adaptation layer): επειδή οι περισσότερες εφαρμογές δεν εργάζονται με κελιά το επίπεδο προσαρμογής ATM επιτρέπει την αποστολή πακέτων με μέγεθος μεγαλύτερο του ενός κελιού. Τα πακέτα αυτά χωρίζονται σε μικρότερα κομμάτια ενός κελιού και μεταδίδονται ενώ στο δέκτη επανασυναρμολογο επανασυναρμολογούνται δίνοντας το αρχικό πακέτο.

40. Τι είναι το PSTN και το ISDN; Να αναφέρετε τις λειτουργίες τους.

To PSTN είναι ένα δίκτυο για μετάδοση φωνής και δεδομένων. Τα βασικά στοιχεία του είναι: • Τηλεφωνικές συσκευές των συνδρομητών. • Τα τηλεφωνικά κέντρα. • Το ζευκτικό δίκτυο. Η λειτουργία του PSTN είναι αυτή του δικτύου μεταγωγής κυκλώματος και έχει 3 φάσεις: φάσεις: α' φάση - Αποκατάσταση κυκλώματος β' φάση - Μεταφορά πληροφορίας γ' φάση - Τερματισμός κυκλώματος

Το ISDN επιτρέπει στους χρήστες να μεταδίδουν φωνή, εικόνα κα δεδομένα σε ψηφιακή μορφή επάνω σε ένα δισύρματο καλώδιο. Έχει τα εξής βασικά στοιχεία : 1.Ψηφιακή Μετάδοση 2.Υπάρχει Σηματοδότηση 3.Πολλαπλός Σκοπός Διασύνδεσης.

41. Ποια είναι τα βασικά στάδια κατά την επεξεργασία εικόνων bitmap;

α) Ανάλυση (resolution). Εκφράζει την πυκνότητα των εικονοστοιχείων της εικόνας σε κάθε διάσταση και μετριέται σε σημεία ανά ίντσα (dots per inch, ενός αρχείου εικόνας είναι ανάλογο του τετραγώνου της ανάλυσης της. Θα πρέπει να σημειωθεί, ότι η ανάλυση της εικόνας είναι διαφορετική από την ανάλυση της συσκευής που χρησιμοποιείται για την παρουσίασή της. Ενδεικτικά αναφέρουμε ότι μια εικόνα στην οθόνη του υπολογιστή υπολογιστή έχει συνήθως συνήθως ανάλυση ανάλυση 72 dpi, σε έναν κοινό εκτυπωτή εκτυπωτή 600 dpi, ενώ για επαγγελματικές επαγγελματικές εκτυπώσεις απαιτείται ανάλυση της τάξης των εκτυπώσεις απαιτείται ανάλυση της τάξης των 3000 dp 3000 dpi.

β) Χρωματικό βάθος. Το χρωματικό βάθος σχετίζεται με τον αριθμό των χρωμάτων που είναι διαθέσιμα για τη δημιουργία μιας εικόνας. Καθορίζεται από τον αριθμό των bit που χρησιμοποιούνται για τη χρωματική περιγραφή ενός pixel. Έτσι μια εικόνα με χρωματικό βάθος 8 bits αποδίδει 28=256 χρώματα, ενώ με 16 bit αποδίδονται 216=65536 χρώματα. Για τέλεια χρωματική απόδοση πραγματικού χρώματος (true colour) απαιτούνται 24 bit, οπότε η εικόνα διαθ απαιτούνται 24 bit, οπότε η εικόνα διαθέτει περίπου 16,8 εκατομμύρια (224) χρώματα.

γ) Μέγεθος. Η εικόνα, ανεξάρτητα από το σχήμα της, καταλαμβάνει το χώρο ενός ορθογώνιου παραλληλογράμμου που την περιβάλει. Η απαιτούμενη χωρητικότητα για την αποθήκευση μιας εικόνας τύπου bitmap δίνεται από τη σχέση

Μέγεθος αρχείου (bytes) = [Πλήθος εικονοστοιχείων (pixel) x Χρωματικό Βάθος (bit/pixel)] / 8 bit per byte

Μέγεθος (bytes) = [(πλάτος x ύψος) x (ορ.x κατακ. ανάλυση) x (χρώμ. βάθος, +....+χρωμ. βάθος)] 1/8

Χαρακτηριστικά Ψηφιακής Εικόνας

42. Τι είναι τα ψηφιακά φίλτρα σε ένα οποιοδήποτε πρόγραμμα επεξεργασίας εικόνας; Αναφέρετε τέσσερις κατηγορίες φίλτρων που εφαρμόζουμε επί εικόνων bitmap και ποια είναι τα αποτελέσματά τους.

Τα ψηφιακά φίλτρα είναι έτοιμα εφέ, τα οποία μπορούν να εφαρμοστούν είτε σε ολόκληρη την εικόνα μας ή σε μια επιλεγμένη περιοχή. Το Photoshop CS6 περιέχει από μόνο του μια μεγάλη ποικιλία φίλτρων, αλλά υπάρχουν και αρκετές χιλιάδες ξεχωριστά φίλτρα με την μορφή plug -ins. Σε γενικές γραμμές, τα φίλτρα χρησιμοποιούνται για την προσθήκη ειδικών εφέ σε μια εικόνα. Μπορούν να χρησιμοποιηθούν στο ρετουσάρισμα, την δημιουργία ρεαλιστικών υφών, εντυπωσιακών εφέ κειμένου και σε πολλά άλλα πράγματα. Μπορούν να αλλάξουν εντελώς το περιβάλλον μιας εικόνας. Τα φίλτρα βρίσκονται στο μενού επιλογών Filters. Μερικές από τις κατηγορίες αυτών είναι το Blur (δημιουργεί θόλωμα), sharpen (κάνει τις φωτογραφίες να είναι αιχμηρές δηλαδή να έχουν σχέδιο), render(δημιουργεί οπτικά φαινόμενα φωτιάς, σύννεφα ανέμου κλπ)

43. Περιγράψτε ποιο είναι το περιεχόμενο σ' ένα αρχείο διανυσματικών γραφικών.

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

44. Αναφέρετε πλεονεκτήματα και μειονεκτήματα των διανυσματικών γραφικών.

Πλεονεκτήματα: • Τα διανυσματικά αρχεία παρέχουν δυνατότητες αλλαγής μεγέθους και περιστροφής των σχημάτων, χωρίς να προκαλούνται αλλοιώσεις. • Τα νέα αρχεία διατηρούν αναλλοίωτα τα βασικά χαρακτηριστικά τους (σχετικές διαστάσεις και σχετική θέση). • Τα διανυσματικά γραφικά είναι ανεξάρτητα ανάλυσης (resolution free) και προσαρμόζονται αυτόματα στο μέγεθος και την ανάλυση του μέσου που προβάλλονται ή εκτυπώνονται.

Μειονέκτημα: • Για τη δημιουργία ενός σχήματος επιτρέπεται ο προσδιορισμός ενός μόνο χρώματος ή γέμισμα με χρωματική διαβάθμιση (color gradient), αλλά δεν είναι δυνατή η ενσωμάτωση φωτορεαλιστικής ποιότητας (σε αντίθεση με τις χαρτογραφικές εικόνες όπου μπορείς να αλλάξεις το χρώμα σε κάθε pixel).

45. Ποιες είναι οι βασικές διαφορές μεταξύ bitmap graphics και vector graphics;

Τα vector graphics αρχεία με την αλλαγή μεγέθους και περιστροφής των σχημάτων δεν προκαλούνται αλλοιώσεις ενώ τα bitmap graphics μεταβάλλονται και ειδικά οι μεγάλες μεγεθύνεις προκαλούν απώλειες στην ποιότητα.

• Τα vector graphics είναι ανεξάρτητα ανάλυσης (resolution free) και προσαρμόζονται αυτόματα στο μέγεθος και την ανάλυση του μέσου που προβάλλονται ή εκτυπώνονται ενώ τα bitmap graphics η εκτύπωσή τους εξαρτάται άμεσα με την αρχική τους ανάλυση

• Τα vector graphics. Για τη δημιουργία ενός σχήματος επιτρέπεται ο προσδιορισμός ενός μόνο χρώματος ή γέμισμα με χρωματική διαβάθμιση (color gradient), αλλά δεν είναι δυνατή η ενσωμάτωση φωτορεαλιστικής ποιότητας (σε αντίθεση με τις χαρτογραφικές εικόνες όπου μπορείς να αλλάξεις το χρώμα σε κάθε pixel).

46. Περιγράψτε τις διαφορές μεταξύ των προτύπων TIFF, JPEG, GIF. Που χρησιμοποιείται το καθένα;

Από άποψη μεγέθους, οι εικόνες τύπου JPEG είναι πολύ μεγαλύτερες από τις άλλες δύο. Το jpg χρησιμοποιείται ευρέως για την διανομή εικόνων μέσω διαδικτύου ή ηλεκτρονικού ταχυδρομείου (mail) και αυτό γιατί μας δίνει πολύ περισσότερες λεπτομέρειες, συν του ότι είναι πολύ αποτελεσματικός στην διαχείρισή του.

Από την άλλη οι δύο άλλοι τύποι αρχείων άλλοι τύποι αρχείων -οι GIF και PNG- καταναλώνουν πολύ λιγότερο χώρο στο σύστημά μας και, συγχρόνως, είναι αποτελεσματικοί στην χρήση και τις λειτουργίες τους.

Σε ό,τι αφορά την στήριξη, ο τύπος αρχείων GIF υποστηρίζεται από όλους τους φυλλομετρητές (web browsers) -εν αντιθέσει με τον τύπο αρχείων PNG ο οποίος δεν υποστηρίζεται από όλους τους browsers καθώς αναπτύχθηκε ως μια δωρεάν εναλλακτική λύση του GIF.

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

Από την άλλη, η μορφή αρχείου εικόνας PNG πολύ συχνά χρησιμοποιείται για την δημιουργία των λογοτύπων που ενέχει διαφάνεια και ξεθώριασμα. Η μορφή αρχείου εικόνων PNG είναι η ιδανική και για τα screenshots, δηλαδή, για τα λογισμικά που μας παρέχουν την λήψη στιγμιότυπου οθόνης.

Ο δε τύπος αρχείων GIF, χρησιμοποιείται σε κινούμενα σχέδια. Και βέβαια, υπάρχουν πολλές περισσότερες διαφορές που μπορούν να εντοπιστούν μόνο από τους ειδικούς. Για παράδειγμα, ο τύπος αρχείων εικόνων GIF δεν έχει απώλειες -όπως ο τύπος JPEG που μπορεί να αλλάξει ριζικά την εικόνα, προς το χειρότερο όμως. Από την άλλη βέβαια, σε ορισμένες περιπτώσεις μπορεί (ο τύπος JPEG) να δώσει ένα ενδιαφέρον αποτέλεσμα στην εικόνα. Λόγω του ότι ο τύπος αρχείων εικόνων GIF δεν έχει απώλειες, μπορεί να χρησιμοποιηθεί στις περιπτώσεις που χρειάζεται να διατηρηθούν οι αυστηρές γραμμές στην τυπογραφία και στα γεωμετρικά σχήματα. Ο τύπος GIF δεν είναι ιδανικός για την σύγχρονη φωτογραφία, λόγω του ότι έχει περιορισμένους πίνακες χρωμάτων και μικρά μεγέθη. Από την άλλη, βέβαια, αυτά τα μικρά μεγέθη αποβαίνουν ιδιαιτέρως χρήσιμα κάποιες φορές -ειδικά όταν δεν κρίνεται κατάλληλος ο τύπος JPEG εξαιτίας του τεραστίου μεγέθους του.

47. Να βρεθούν τα χρώματα που είναι στην παρακάτω λίστα. Υπάρχουν διαδικτυακά χρώματα συμπληρωματικά μεταξύ τους; Αν ναι, ποια ειναι αυτά και ως προς τι είναι συμπληρωματικά;α) #FF0000 b) #FFFFFF c) #00FFFF d) #000000 e) #A1A1A1 Σημείωση: δοκιμάστε πρώτα να μετατρέψετε τις παραπάνω τιμές στην κλίμακα 0 έως 255 για κάθε κανάλι χρώματος.

Από τα 6 σύμβολα μετά το # τα δύο πρώτα FF αφορούν το κόκκινο, το 3-4 FF το πράσινο και το

5-6 FF το μπλε. Έχουν τιμές 255 για το κάθε κύριο χρώ για το κάθε κύριο χρώμα. Έτσι έχουμε

α) #FF0000 είναι το Κόκκινο (R:255, G:0, B:0)

b) #FFFFFF είναι το Άσπρο (R:255, G:255, B:255)

c) #00FFFF είναι το γαλάζιο (R:0, G:255, B:255)

d) #000000 είναι το μαύρο(R:0, G:0, B:0)

e) #A1A1A1 είναι το γκρι (R:161, G:161, B:161)

Συμπληρωματικά είναι:

Για το α) #FF0000 είναι το γαλάζιο (R:0, G:255, B:255)

Για το b) #FFFFFF είναι το Μαύρο (R:0, G:0, B:0)

Για το c) #00FFFF είναι το κόκκινο (R:255, G:0, B:0)

Για το d) #000000 είναι το άσπρο (R:255, G:255, B:255)

Για το e) #A1A1A1 είναι το γκρι (R:161, G:161, B:161)

48. Εξηγήστε την τεχνική Antialiasing και Alpha channel που χρησιμοποιείται σε εφαρμογές επεξεργασίας εικόνας και φωτορεαλιστικής απεικόνισης αντικειμένων.

Ένα από τα σημαντικότερα προβλήματα των γραφικών είναι ότι κάθε γραμμή που είναι κυρτή ή παρουσιάζει κάποια κλίση εμφανίζει οδοντώματα, μοιάζοντας περισσότερο με μια μεγάλη σκάλα πάρα με μια ευθεία γραμμή. Αυτές οι ακανόνιστες γραμμές είναι ιδιαίτερα εμφανείς στις κινούμενες εικόνες, πράγμα που τις καθιστά ιδιαίτερα ενοχλητικές στα βιντεοπαιχνίδια. Αυτό το φαινόμενο στα 3D γραφικά είναι γνωστό ως aliasing. Το φαινόμενο εμφανίζεται διότι η εικόνα στην οθόνη είναι μόνο ένα δείγμα από pixels της αρχικής τρισδιάστατης εικόνας που η κάρτα γραφικών σας έχει υπολογίσει. Στις μεγαλύτερες αναλύσεις, καθώς χρησιμοποιούνται περισσότερα pixels, το δείγμα έρχεται πιο κοντά στην αρχική του μορφή και ως εκ τούτου η εικόνα είναι ευκρινέστερη και εμφανίζει πολύ λιγότερο aliasing.

Για να αντιμετωπιστεί το πρόβλημα χρησιμοποιείται μια τεχνική που ονομάζεται Full Scene AntiAliasing (FSAA) ή απλώς Anti-Aliasing (AA). Το Anti-Aliasing βοηθά στο να εμφανίζονται οι ακανόνιστες αυτές γραμμές πιο ''ομαλές'', χωρίς να χρειάζεται να αυξήσετε την ανάλυση της οθόνης σας. Ουσιαστικά το ΑΑ συνδυάζει τις ακανόνιστες γραμμές με το περιβάλλον τους και μπορεί να εφαρμοστεί, είτε σε 2D ή 3D γραφικά.

Τύποι anti-aliasing

Υπάρχουν διάφορες μέθοδοι για την επίτευξη του anti-aliasing. Οι περισσότερες από αυτές βασίζονται σε δύο μεθόδους:

1. Στη μέθοδο του sampling: το sampling είναι μια διαδικασία όπου επιλέγεται μία μόνο τιμή από μια συνεχώς μεταβαλλόμενη σειρά τιμών. Το αποτέλεσμα του sampling είναι μία τιμή που ονομάζεται sample. Στα 3D γραφικά, ένα sample περιγράφει μια περιοχή γεωμετρίας.

2. Στη μέθοδο του post-processing: σε αυτή τη μέθοδο ένα αλγόριθμος τροποποιεί την εικόνα λίγο πριν αυτή προβληθεί στη οθόνη μας, αφαιρώντας, όσο alias όσο aliasing μπορεί να εντοπίσει. ing μπορεί να εντοπίσει.

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

Το Multi Sampling (MSAA) είναι μια νεότερη μορφή ΑΑ που βασίζεται στο super sampling antialiasing, αλλά αντί να αυξάνει την ανάλυση ολόκληρης της εικόνας εντοπίζει τις πλευρές που χρειάζονται anti-aliasing και επεξεργάζεται μόνο τις περιοχές αυτές. Έτσι ο αντίκτυπος στις επιδόσεις είναι πολύ μικρότερος.

49. Τι είναι το encapsulation; Δώστε ένα παράδειγμα σε γλώσσα προγραμματισμού Java.

Ο συνδυασμός δεδομένων και συναρτήσεων μέσα στα αντικείμενα, και η «προστασία» των private δεδομένων μέσω των public συναρτήσεων λέγεται ενθυλάκωση (encapsulation).

Παράδειγμα Java:

public class EncapTest {

private String name;

private String idNum;

private int age;

public int getAge() {

return age;

}

public String getName() {

return name;

}

public String getIdNum() {

return idNum;

}

public void setAge( int newAge) {

age = newAge;

}

public void setName(String newName) {

name = newName;

}

public void setIdNum( String newId) {

idNum = newId;

}

}

public class RunEncap {

public static void main(String args[]) {

EncapTest encap = new EncapTest encap = new EncapTest() EncapTest();

encap.setName("James");

encap.setAge(20);

encap.setIdNum("12343ms");

System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge());

}

}

50. Δημιουργήστε ένα πρόγραμμα σε Java το οποίο θα ζητάει από το χρήστη να εισάγει/πληκτρολογήσει μία φράση και στη συνέχεια θα εμφανίζει πόσες φορές εμφανίζεται το κάθε φωνήεν στη φράση.

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Scanner SC = new Scanner(System.in);

System.out.print("Enter a phrase: ");

String s String s = SC.next().toLowerCase = SC.next().toLowerCase();

int vowelCount = 0;

int count[]=new int [5];

for (int i = 0; i<5;i++){

count[i]=0;

}

for (int i = 0; for (int i = 0; i < s.length(); ++i) { i < s.length(); ++i){

switch(s.charAt(i)) {

case 'a':

count[0]++;break;

case 'e':

count[1]++;break;

case 'i':

count[2]++;break;

case 'o':

count[3]++;break;

case 'u':

count[4]++;break;

case ' ':

break;

default:

}

}

for (int i = 0; i<5;i++){

switch(i) {

case 0:

System.out.println("a->"+count[i]);break;

case 1:

System.out.println("e->"+count[i]);break;

case 2:

System.out.println("i->"+count[i]);break;

case 3:

System.out.println("o->"+count[i]);break; case 4:

System.out.println("u->"+count[i]);break;

default:

}

}

}

}

51. Δημιουργήστε ένα πρόγραμμα σε Java το οποίο θα σχεδιάζει ένα κύκλο. Το χρώμα και το μέγεθος της ακτίνας του κύκλου θα καθορίζεται από τον χρήστη.

package circle;

import java.lang.*;

import java.util.*; import java.util.L java.util.List;

import java.io.*;

import java.awt.*;

import java.awt.ev java.awt.event.*;

import java.awt.geom.*;

import java.lang.reflect.Field;

import java.util.logging.Level;

import java.util.l java.util.logging.Logge ogging.Logger;

public class Circle extends Frame {

public static void main(String args[])

{

Circle frame = new Circle();

frame.addWindowListener(

new WindowAdapter()

{

public void windowClosing(WindowEvent we)

{

System.exit(0);

}}

);

frame.setSiz frame.setSize(400, 400);

frame.setVisible(true);

}

public void paint(Graphics g) {

Scanner SC = new Scanner(System.in);

System.out.print("SET R: ");

int R = SC.nextInt();

System.out.print("\nSET COLOR: ");

String current_color = SC.next();

Graphics2D ga = Graphics2D ga = (Graphics2D) (Graphics2D)g;

Field field=null;

try {

field =

Class.forName("java.awt.Color").getField(current_color.toLowerCase());

} catch (ClassNotFoundException ex) {

Logger.getLogger(Circle.class.getName()).log(Level.SEVERE,null,ex);

} catch (NoSuchFieldException ex) {

Logger.getLogger(Circle.class.getName()).log(Level.SEVERE,null,ex);

} catch (SecurityException ex) {

Logger.getLogger(Circle.class.getName()).log(Level.SEVERE,null,ex);

}

Color color = null;

try {

color = (Color)field.get(null);

} catch (IllegalArgumentException ex) {

Logger.getLogger(Circle.class.getName()).log(Level.SEVERE,null,ex);

} catch (IllegalAccessException ex) {

Logger.getLogger(Circle.class.getName()).log(Level.SEVERE,null,ex);

}

ga.setPaint(color);

ga.drawOval(150,150,R,R);

}

}

52. Τι είναι τα Demon Threads και τί τα Non-Demon Threads; Από που εκτελούνται και πως;

Demon είναι τα Threads που συνεχίζουν να ζουν ακόμα και αν ο πατέρας τους πέθανε. Αντίθετα τα Non-Demon πεθαίνουν όταν πεθάνει αυτός που τα δημιούργησε. Τα Demon Threads στην Java είναι τα threads που τρέχουν στο παρασκήνιο και δημιουργούνται κυρίως από την JVM(java virtual machine) για την εκτέλεση εργασιών στο παρασκήνιο, όπως τη συλλογή σκουπιδιών(garbage collection). Τα Demon Threads τρέχουν ακόμα και μετά το τέλος του προγράμματος.H βασική διαφορά μεταξύ Demon Threads και Non-Demon Threads είναι ότι η JVM δεν περιμένει κάποιο Demon Thread πριν τερματίσει η εφαρμογή, ενώ τα Non-Demon Threads τα περιμένει και δεν τερματίζει αν τα Non-Demon Threads δεν τελειώσουν την εκτέλεσή τους

53. Δίνεται το μη ASCII αρχείο DATA.dbs όπου κάθε εγγραφή είναι αντικείμενο που έχει την ακόλουθη δομή: IBAN λογαριασμού (20 χαρακτήρες) Ανάληψη/Κατάθεση ('0'/'1' αντίστοιχα) Ποσό συναλλαγής (δεκαδικός αριθμός) Όνομα πελάτη (40 χαρακτήρες) ΑΦΜ πελάτη (ακέραιος 8-ψήφιος) Να γραφεί πρόγραμμα Java προσπέλασης του αρχείου DATA.dbs που να τυπώνει στην οθόνη το άθροισμα των καταθέσεων, το άθροισμα των αναλήψεων καθώς και τα στοιimport java.io.*;

import com.linuxense.javadbf.*;

import org.xBaseJ.*;

import org.xBaseJ.fields.CharField;

import org.xBaseJ.fields.LogicalField;

import org.xBaseJ.fields.NumField;

import org.xBaseJ.fields.DoubleField;

public class JavaDBFReaderTest {

public static void main( String args[]) {

String IBAN[];

String TRANSACTION[];

Double AMOUNT[];

String CREDENTIALS[];

String TIN[];

CharField iban;

CharField transaction;

DoubleField amount;

CharField credentials;

CharField tax_number;

int numberOfFields;

double withdrawals=0;

double deposits=0;

double max_withdrawal;

double max_deposit;

int max_withdrawal_customer;

int max_deposit_customer;

try{

InputStream inputStream=null;

try {

inputStream inputStream = new FileInputStream("C:/DATA.dbs"); FileInputStream("C:/DATA.dbs");

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (inputStream != null)

inputStream.close();

} catch (IOException ex) {

ex.printStackTrace();

} }

DBFReader dataDB = new DBFReader(inputStream);

numberOfFields = dataDB.getFieldCount();

IBAN=new String[numberOfFields];

TRANSACTION=new String[numberOfFields];

AMOUNT=new Double[numberOfFields];

CREDENTIALS=new String[numberOfFields];

TIN=new String[numberOfFields];χεία του πελάτη με τη μεγαλύτερη ανάληψη και κατάθεση.

for(int i=0; i<numberOfFields; i++) {

dataDB.read();

iban = (CharField) (CharField) dataDB.getField("IBAN"); dataDB.getField("IBAN");

IBAN[i]=iban.getValue();

transaction transaction = (CharField) (CharField) dataDB.getField("TRANSACTION"); dataDB.getField("TRANSACTION");

TRANSACTION[i]=transaction.getValue();

amount = (CharField) dataDB.getField("AMOUNT");

AMOUNT[i]=amount.getValue();

credentials credentials = (CharField) (CharField) dataDB.getField("CREDENTIALS"); dataDB.getField("CREDENTIALS"); CREDENTIALS[i]=credentials.getValue();

tax_number = (CharField) dataDB.getField("TAX_IDENTIFICATION_NUMBER");

TIN[i]=tax_number.getValue();

}

max_withdrawal=AMOUNT[0];

max_deposit=AMOUNT[0];

for(int i=0; i<numberOfFields; i++) {

if(TRANSACTION[i].equals('O')){

withdrawals=withdrawals+AMOUNT[i];

if(AMOUNT[i]>max_withdrawal){

max_withdrawal=AMOUNT[i];

max_withdrawal_customer=i;

} }

if(TRANSACTION[i].equals('Y')){

deposits=deposits+AMOUNT[i];

if(AMOUNT[i]>max_deposit){

max_deposit=AMOUNT[i];

max_deposit_customer=i;

} } }

System.out.println("The total ammount of withdrawals is: "+withdrawals);

System.out.println("The total ammount of deposits is: "+deposits);

System.out.println("The customer with max withdrawal amount is

"+CREDENTIALS[max_withdrawal_customer]+ " with TAX_IDENTIFICATION_NUMBER " +

TIN[max_withdrawal_customer]+" and IBAN " + IBAN[max_withdrawal_customer]);

System.out.println("The customer with max deposit amount is

"+CREDENTIALS[max_deposit_customer]+ " with TAX_IDENTIFICATION_NUMBER " +

TIN[max_deposit_customer]+" and IBAN " + IBAN[max_deposit_customer]);

inputStream.close();

}

catch( DBFException e) {

System.out.println( e.getMessage());

}

catch( IOException e) {

System.out.println( e.getMessage());

}

}

}

54. Περιγράψτε τη βασική δομή μιας εφαρμογής φτιαγμένης σε OpenGL.

Η βασική δομή μιας εφαρμογής σε OpenGL αποτελείται απο δύο κυρίως κομμάτια. Το πρώτο κομμάτι είναι η αρχικοποίηση όπου καθορίζονται οι παράμετροι και οι βασικές μεταβλητές απαραίτητες για την δημιουργία της σκηνής. Οι παράμετροι αυτοί σχετίζονται με το μέγεθος της οθόνης, τα χρώμματα, το είδος της σκηνής(τρείς ή δύο διαστάσεις) κτλ. Σε δεύτερη φάση μια OpenGL εφαρμογή δημιουργεί την σκηνή συνεχώς και αλληλεπιδρά με τον χρήστη. Εδώ δηλαδή, έχουμε συναρτήσεις όπου δημιουργούν κάθε ένα Pixel στην οθόνη, αλληλεπιδρούν με το πληκτρολόγιο και το ποντίκι και είναι υπεύθυνες για το resize του παραθύρου

55. Να αναφέρετε και να περιγράψετε σύντομα τα callback functions της OpenGL.

1 glutDisplayFunc

2 glutOverlayDisplayFunc

3 glutReshapeFunc

4 glutKeyboardFunc

5 glutMouseFunc

6 glutMotionFunc, glutPassiveMotionFunc

7 glutVisibilityFunc

8 glutEntryFunc

9 glutSpecialFunc

10 glutSpaceballMotionFunc

11 glutSpaceballRotateFunc

12 glutSpaceballButtonFunc

13 glutButtonBoxFunc

14 glutDialsFunc

15 glutTabletMotionFunc

16 glutTabletButtonFunc

17 glutMenuStatusFunc

18 glutIdleFunc

19 glutTimerFunc

56. Ποιες εντολές χρησιμοποιούμε για τις εξής λειτουργίες της OpenGL: α. translate β. rotate γ. scale ή stretch;

Η συνάρτηση συνάρτηση glTranslate πολλαπλασιάζει τον τρέχοντα πίνακα με έναν translation πίνακα. Η συνάρτηση αυτή παράγει ένα ένα translation πίνακα βάσει των x y z. Ο τρέχων πίνακας πολλαπλασιάζεται με αυτόν τον translation πίνακα και το γινόμενο αντικαθιστά τον τρέχοντα πίνακα. Έχει τις συναρτήσεις C, void glTranslated(GLdouble x,GLdouble y,GLdouble z) και void glTranslatef(GLfloat x,GLfloat y,GLfloat z),όπου οι παράμετροι x, y, z καθορίζουν τις x, y,και z συντεταγμένες ενός translation vector.

Η συνάρτηση glRotate πολλαπλασιάζει τον τρέχοντα πίνακα με έναν rotation πίνακα. Η συνάρτηση αυτή παράγει μια επριστροφή της γωνίας των αξόνων γωνίας των αξόνων περί το διάνυσμα x,y,z. Ο τρέχων πίνακας πολλαπλασιάζεται με αυτόν το rotation πίνακα και το γινόμενο αντικαθιστά τον τρέχοντα πίνακα. Έχει τις συναρτήσεις C,void glRotated(GLdouble angle,GLdoublex,GLdouble y,GLdouble z) και void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z); όπου οι παράμετροι angle x, y, z καθορίζουν τη γωνία περιστροφής και τις x, y, z συντεταγμένες αντίστοιχα.

Η συνάρτηση glScale πολλαπλασιάζει τον τρέχοντα πίνακα με έναν γενικό έναν γενικό scaling πίνακα. Η συνάρτηση αυτή παράγει μια ανομοιόμορφη κλιμάκωση (scaling) στους x,y,z άξονες. Οι τρεις παράμετροι x,y,z καθορίζουν την επιθυμητή κλιμάκωση κατά μήκος των x,y,z αξόνων. Έχει τις συναρτήσεις C, void glScaled(GLdouble x, GLdouble y, GLdouble z) και void glScalef(GLfloat x,GLfloat y,GLfloat z) ,όπου οι παράμετροι x, y, z των x,y,z αξόνων αντίστοιχα. Επιπρόσθετα, οι συναρτήσεις glViewport glortho αξιοποιούνται στο να πολλαπλασιαστούν με έναν πίνακα που ορίζει πόσο stretch πρέπει να γίνει. Το ορθό ορίζει το νέο ορθοκανονικό σύστημα σύστημα συντεταγμένων και το viewport αλλάζει το view που θα έχει το object πανω στο νέο σύστημα συντεταγμένων.

57. Για ποιο λόγο είναι καλό να χρησιμοποιούμε τους τύπους δεδομένων της OpenGL;

Με τους τύπους δεδομένων της OpenGL επιτυγχάνεται κυρίως καλύτερο compatibility γιατί η OpenGL είναι cross- platform platform δηλαδή ανεξάρτητη λειτουργικού, και ως εκ τούτου, δεν απαιτείται περεταίρω κώδικας ή compile.

Εντοπίζονται κυρίως έξι βασικοί τύποι δεδομένων, μερικοί από αυτούς είναι οι ίδιοι με τους C, άλλοι προστίθενται ειδικά για προγραμματισμό GPU, αυτοί οι τύποι εί υτοί οι τύποι είναι:

float - ένας αριθμός κινητής υποδιαστολής 32 bit

hald - έναν αριθμό κινητής υποδιαστολής 16 bit

int - ένας ακέραιος 32-bit

fixed - αριθμός σταθερού σημείου 12-bit

bool - μια μεταβλητή boolean

sampler * - αντιπροσωπεύει ένα αντικείμενο υφής

Το Cg διαθέτει επίσης τύπους δεδομένων vector και matrix που βασίζονται στους βασικούς τύπους δεδομένων, όπως float3, float4*4, αυτοί οι τύποι δεδομένων είναι αρκετά συνηθισμένοι όταν αξιοποιούνται στον προγραμματισμό τρισδιάστατων γραφικών, το Cg έχει επίσης τύπους δεδομένων struct και array, οι οποίοι λειτουργούν σε παρόμοια τρόπο ισοδύναμα C

58. Περιγράψτε τη σύνταξη και τις παραμέτρους της glLookAt() (στην OpenGL).

Η gluLookAt δίνει την δυνατότητα να τοποθετήσουμε μια κάμερα στην σκηνή και να θέσουμε την κατεύθυνση της. Συντάσσεται ως εξής: gluLookAt (GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); Η εντολή παίρνει ως παραμέτρους 3 διανύσματα: το [eyex, eyey, eyez] ορίζει τις συντεταγμένες του σημείου θέασης (μάτι), το [centerx, centery, centerz] καθορίζει την κατεύθυνση (τι δείχνει δηλαδή) και το [upx, upy, upz] είναι το μοναδιαίο διάνυσμα που καθορίζει ποια είναι η προς τα πάνω κατεύθυνση της κάμερα (ποιος ο άξονας y).

59. Ποια είναι η λειτουργία της glClear() και ποια της glClearColor3f() (στην OpenGL);

H glClear() είναι μια συνάρτηση της OpenGl που καθαρίζει τα buffers(ενταµιευτές) και επαναφέρει τις τιμές που υπήρχαν πριν οποιαδήποτε αλλαγή. Ανάλογα με τα buffers που θέλουμε να καθαρίσουμε βάζουμε και τα ανάλογα ορίσματα. H glClear μπορεί να καθαρίσει ένα και περισσότερα buffersa ταυτόχρονα, με την χρήση με το σύμβολο του bitwise OR. π.χ. glClear(GL_COLOR_BUFFER_BIT GL_COLOR_BUFFER_BIT ); // καθαρίζεται ο buffer του χρώματος.

Η εντολή glClearColor3f() δεν υπάρχει από όσο γνωρίζω, θα απαντήσω για την εντολή glClearColor(). Η glClearColor() είναι εντολή καθαρισµού της οθόνης. Καθορίζει το χρώµα που χρησιµοποιείται κάθε φορά που εκτελείται. Στην OpenGL το χρώµα του φόντου είναι µία µεταβλητή κατάστασης, η οποία διατηρεί την τιµή που της ανατέθηκε την τελευταία φορά. Το χρώµα καθορίζεται από τα βάρη του στο χρωµατικό µοντέλο RGBA. Ως παραμέτρους καταχωρούμε τις τιμές σε εύρος [0,1] του κόκκινου, του πράσινου, του μπλε και της διαφάνειας. π.χ. glClearColor(1,1,1,1); // Για να χρησιμοποιήσουμε το λευκό χρώµα

60. Στην OpenGL όπως και στα περισσότερα API γραφικών χρησιμοποιούμε "normalized values", τι σημαίνει αυτό;

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

61. Αναφέρατε τις εντολές (μαζί με τις παραμέτρους τους) για προοπτική (perspective) και για ορθογραφική (orthographic) απεικόνιση (στην OpenGL).

glViewport(xmin, ymin, width, height height); //perspective

glOrtho (Left, Right, Bottom, Top, Near, Far); //orthographic

62. Με ποιους τρόπους μπορούμε να μετατοπίσουμε ένα αντικείμενο -σχήμα στην OpenGL;

Μετακίνηση (translation) ενός αντικειμένου με την glTranslatef(GLfloat X, GLfloat Y, GLfloat Z). H εντολή αυτή παίρνει ως παραμέτρους την μετακίνηση που επιθυμούμε κατά άξονα, κατασκευάζει ένα μετασχηματισμό μετακίνησης Τ και τον εφαρμόζει (πολλαπλασιάζει) με τον μετασχηματισμό Μοντέλου-Κάμερας. Ένας άλλος τρόπος είναι να μετατοπίσουμε την κάμερα.

63. Περιγράψτε με εντολές και παραμέτρους της OpenGL, τα βασικά γεωμετρικά σχήματα α) Γραμμές, β) Τρίγωνα, γ) Πολύγωνα. Παραθέστε σχήματα.

GL_POINTS Σχεδιάζει σημεία. Κάθε κορυφή είναι ένα σημείο.

glBegin(GL_POINTS); //starts drawing of points

glVertex3f(1.0f,1.0f,0.0f);//upper-right corner

glVertex3f(-1.0f,-1.0f,0.0f);//lower-left corner

glEnd();//end drawing of points

GL_LINES Σχεδιάζει γραμμές. Κάθε ζεύγος κορυφών σχεδιάζει μια γραμμή.

glBegin(GL_LINES);

glVertex2i(20,20);

glVertex2i(40,40);

glEnd();

GL_LINE_STRIP Σχεδιάζει ενωμένες γραμμές. Κάθε κορυφή μετά τις δύο πρώτες ενώνεται.

glBegin(GL_LINE_STRIP);

glVertex3f(0.2, 0.2,0.0);

glVertex3f(0.8, 0.2,0.0);

glVertex3f(0.2, 0.5,0.0);

glVertex3f(0.8, 0.5,0.0);

glVertex3f(0.2, 0.8,0.0);

glVertex3f(0.8, 0.8,0.0);

glEnd();

GL_LINE_LOOP Σχεδιάζει ενωμένες γραμμές. Η τελευταία κορυφή ενώνεται με την πρώτη.

glBegin(GL_LINE_LOOP);//start drawing a line loop

glVertex3f(-1.0f,0.0f,0.0f);//left of window

glVertex3f(0.0f,-1.0f,0.0f);//bottom of window

glVertex3f(1.0f,0.0f,0.0f);//right of window

glVertex3f(0.0f,1.0f,0.0f);//top of window

glEnd();//end drawing of line loop

GL_TRIANGLES Κάθε τρεις κορυφές σχεδιάζουν ένα τρίγωνο.

glBegin(GL_TRIANGLES);//start drawing triangles

glVertex3f(-1.0f,-0.25f,0.0f);//triangle one first vertex

glVertex3f(-0.5f,-0.25f,0.0f);//triangle one second vertex

glVertex3f(-0.75f,0.25f,0.0f);//triangle one third vertex

glEnd();//end drawing of triangles

GL_TRIANGLE_STRIP Σχεδιάζει συνδεδεμένα τρίγωνα. Κάθε κορυφή μετά τις τρεις πρώτες σχεδιάζει τρίγωνο.

glBegin(GL_TRIANGLE_STRIP);

glVertex3f(0.2, 0.2,0.0);

glVertex3f(0.8, 0.2,0.0);

glVertex3f(0.2, 0.5,0.0);

glVertex3f(0.8, 0.5,0.0);

glVertex3f(0.2, 0.8,0.0);

glVertex3f(0.8, 0.8,0.0);

glEnd();

GL_TRIANGLE_FAN Όπως και η GL_TRIANGLE_STRIP, σχεδιάζει σε σχήμα βεντάλιας.

glBegin(GL_TRIANGLE_FAN);

glVertex3f(0.1, 0.1,0.0);

glVertex3f(0.6, 0.1,0.0);

glVertex3f(0.8,0.3,0.0);

glVertex3f(0.6,0.6,0.0);

glVertex3f(0.1,0.6,0.0);

glVertex3f(0.0,0.3,0.0);

glEnd();

GL_QUADS Σχεδιάζει τετράπλευρα. Κάθε τέσσερις κορυφές σχεδιάζουν ένα τετράπλευρο.

glBegin(GL_QUADS);

glVertex3f(0.2, 0.2,0.0);

glVertex3f(0.8, 0.2,0.0);

glVertex3f(0.6,0.4,0.0);

glVertex3f(0.4,0.4,0.0);

glVertex3f(0.4,0.6,0.0);

glVertex3f(0.6,0.6,0.0);

glVertex3f(0.8,0.8,0.0);

glVertex3f(0.2,0.8,0.0);

glEnd();

GL_QUAD_STRIP Κάθε δύο κορυφές μετά τις 4 πρώτες σχεδιάζουν ένα συνδεδεμένο τετράπλευρο.

glBegin(GL_QUAD_STRIP);

glVertex3f(0.2, 0.2,0.0);

glVertex3f(0.8, 0.2,0.0);

glVertex3f(0.2,0.4,0.0);

glVertex3f(0.8,0.4,0.0);

glVertex3f(0.2,0.8,0.0);

glVertex3f(0.8,0.8,0.0);

glEnd();

GL_POLYGON Πολύγωνο. Το πολύγωνο μπορεί να έχει όσες πλευρές θέλετε.

glBegin(POLYGON);//begin drawing of polygon

glVertex3f(-0.5f,0.5f,0.0f);//first vertex

glVertex3f(0.5f,0.5f,0.0f);//second vertex

glVertex3f(1.0f,0.0f,0.0f);//third vertex

glVertex3f(0.5f,-0.5f,0.0f);//fourth vertex

glVertex3f(-0.5f,-0.5f,0.0f);//fifth vertex

glVertex3f(-1.0f,0.0f,0.0f);//sixth vertex

glEnd();//end drawing of polygon

64. Να γραφεί function (στην OpenGL) με όνομα keyboard που να λειτουργεί έτσι ώστε, όταν ο χρήστης πατήσει το 'Q' (ή 'q') να κλείνει την εφαρμογή και όταν πατήσει το 'C' (ή 'c') να καθαρίζει την οθόνη στο χρώμα του GL_COLOR_BUFFER_BIT. Επίσης να γράψετε την εντολή του mainloop που θα το καλέσετε.

void keyboard keyboard (unsigned char key, int x, int y) {

switch (key) {

case 'q':

case 'Q':

exit(0);

break;

case 'c':

case 'C':

glClear glClear(GL_COLOR_BUFFER_BIT GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT GL_DEPTH_BUFFER_BIT);

break;

}

}

int main(int argc, char** argv) {

...

glutKeyboardFunc glutKeyboardFunc(keyboard keyboard);

....

glutMainLoop glutMainLoop();

return 0;

}

65. Περιγράψτε τα βήματα για τη δημιουργία animation στην OpenGL.

H OpenGL χρησιμοποιεί μια μηχανή καταστάσεων (state machine) για να επικοινωνεί με την εφαρμογή. Σε αυτή την μηχανή καταστάσεων η OpenGL παραμένει διαρκώς σε μια κατάσταση μέχρι να αλλάξει αλλάξει η εφαρμογή την κατάσταση. Παράδειγμα αν θέσουμε το χρώμα που θα χρησιμοποιεί η OpenGL για να ζωγραφίσει ένα μοντέλο, το χρώμα θα παραμείνει στη μνήμη και θα χρησιμοποιείται μέχρι να το αλλάξουμε ή να κλείσουμε την εφαρμογή. Εφόσον λοιπόν η εφαρμογή καθορίσει το περιβάλλον που θα χρησιμοποιήσει η OpenGL για να απεικονίσει το μοντέλο μας (χρώματα, υφές, πηγές φωτός, κάμερα κλπ), περνάει στο πρώτο στάδιο κατά το οποίο θα μετασχηματίσει και θα φωτίσει (transform and lighting) τα σημεία(vertices) του μοντέλου. Στην συνέχεια η OpenGL περνά στο στάδιο της ψηφιοποίησης το οποίο λαμβάνει όλες τις πληροφορίες και την γεωμετρία από το προηγούμενο στάδιο (του μετασχηματισμού) και παράγει την τελική, ψηφιακή, εικόνα. Η εικόνα αντιγράφεται στην μνήμη του frame buffer και φτάνει έτσι στην οθόνη του υπολογιστή. Η OpenGL είναι ένας γρήγορος και ευέλικτος τρόπος να επικοινωνούμε με το hardware γραφικών του υπολογιστή χωρίς να ενδιαφερόμαστε για τις λεπτομέρειες υλοποίησης του. Όμως δεν προσφέρει καθόλου λειτουργίες GUI (Graphical User Interface), δηλαδή δεν έχει την δυνατότητα να ανοίξει και να κλείσει παράθυρα στο λειτουργικό σύστημα, να ζωγραφίσει σε αυτά, ούτε να καταλάβει το πάτημα ενός πλήκτρου ή την κίνηση του ποντικιού, ούτε μπορεί να διαβάσει ένα αρχείο από το δίσκο. Αυτό έγινε επί σκοπού, μιας και η OpenGL σχεδιάστηκε να τρέχει σε πολλά λειτουργικά συστήματα τα οποία έχουν το δικό τους τρόπους επικοινωνίας με την οθόνη, το ποντίκι, το δίσκο, το πληκτρολόγιο. Για να γίνει αυτό θα πρέπει να χρησιμοποιήσουμε απευθείας τις εντολές του λειτουργικού μας συστήματος (Win32 εντολές στην περίπτωση των Windows). Εναλλακτικά μπορούμε να χρησιμοποιήσουμε μια από τις έτοιμες βιβλιοθήκες εντολών που υπάρχουν και που θα κάνουν αυτές τις λειτουργίες για εμάς εύκολα. Μια από τις πιο διαδεδομένες βιβλιοθήκες για αυτό το σκοπό είναι το GLUT (OpenGL Utility Toolkit) το οποίο είναι και αυτό σχεδιασμένο να τρέχει σε πολλά λειτουργικά συστήματα. Το GLUT προσφέρει ένα σύνολο εντολών που αναλαμβάνουν να ανοίξουν και να κλείσουν εύκολα παράθυρα, να καταγράψουν το πάτημα ενός πλήκτρου ή την κίνηση του ποντικιού. Δεν είναι κατάλληλο να γράψουμε μια κανονική εφαρμογή με αυτό (πχ ένα παιχνίδι) όμως είναι πολύ κατάλληλο για εκπαιδευτικές και πρότυπες εφαρμογές

66. Ποιες είναι οι ιδιότητές που έχουν οι επιφάνειες στην OpenGL;

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

Συνοψίζοντας μπορούμε να πούμε ότι οι βασικές ιδιότητες, οι οποίες καθορίζουν τα χαρακτηριστικά των επιφανειών είναι:

• Το χρώμα

• Προσανατολισμός επιφανείας (NORMALIZATION). Προκειμένου να περιγράψουμε τον προσανατολισμό μιας επιφάνειας σε κάθε σημείο της, χρησιμοποιούμε την έννοια του κανονικού διανύσματος.

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

• Υφή. Στις περιπτώσεις απόδοσης φυσικών σκηνών με περίπλοκη μορφολογία, καταφεύγουμε στη σχεδιάση ρεαλιστικών επιφανειών βασιζόμενοι σε προκαθορισμένα πρότυπα επιφανειών.

Τα πρότυπα αυτά αποδίδουν με πιστότητα τη μο-ρφολογία των επιφανειών και μπορούν να ληφθούν με τη μορφή ψηφιοποιημένων εικόνων. Στον κόσμο των γραφικών σε Η/Υ ένα τέτοιο πρότυπο απόδοσης αποκαλείται υφή (texture) και η διαδικασία της απόδοσης υφής σε μία επιφάνεια ονομάζεται απόδοση υφής (texture mapping).

67. Περιγράψτε αναλυτικά τι είναι το double buffering. Με ποια εντολή ενεργοποιούμε το double buffering σε RGB mode στην OpenGL; Με ποια εντολή κάνουμε swap τον front και τον back buffer έτσι ώστε να έχουμε animation;

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

Η χρήση διπλού buffer (double buffering) κατά την απεικόνιση μιας σκηνής είναι μια βασική μέθοδος αποφυγής «τρεμοπαίγματος»(flickering). Ο τρόπος με τον οποίο δουλεύει είναι ορίζοντας 2 ενδιάμεσες περιοχές στην μνήμη (buffers) στις οποίες αποθηκεύουμε τις εικόνες που δημιουργούμε. Όσο η οθόνη παίρνει(απεικονίζει) την εικόνα από τον έναν buffer εμείς ζωγραφίζουμε την σκηνή στον άλλον. Έπειτα ανταλλάσουμε τους ρόλους των buffer και συνεχίζουμε. Έτσι η οθόνη δείχνει πάντα μια ολοκληρωμένη εικόνα της σκηνής.

Η εντολή glutSwapBuffers(); θα αντικαταστήσει τον buffer που χρησιμοποιεί η οθόνη με αυτόν που περιέχει το αντικείμενο που μόλις ζωγραφίσαμε. Ανάλογα με αυτόν που χρησιμοποιούμε καθορίζουμε στη συνάρτηση αν θα είναι ο front ή ο back buffer.

Η εντολή glutInitDisplayMode(GLUT_DOUBLE); θα ενεργοποιήσει τη λειτουργία του double buffer. Το RGB mode είναι από το πρόγραμμα αρχικοποιημένο.

68. Για ποιό σκοπό χρειάζονται οι συναρτήσεις κλήσης στην OpenGl και πώς ορίζονται;

Μια συνάρτηση κλήσης είναι μια λειτουργία την οποία καλεί η βιβλιοθήκη (GLUT) όταν χρειάζεται να ξέρει πώς να επεξεργαστεί κάτι. Για παράδειγμα όταν η GLUT λαμβάνει λαμβάνει μια εισαγωγή κλειδιού από το πληκτρολόγιο ή το ποντίκι χρησιμοποιεί τη συνάρτηση κλήσης glutKeybourdFunc για να μάθει τι να κάνει με το εν λόγω πάτημα πλήκτρων. Αυτή η τεχνική χρησιμοποιείται επίσης για ζωντανή ανατροφοδότηση/ μετάδοση, όπου καλεί το TrackControl (ή κάτι παρόμοιο) και καθορίζει μια ρουτίνα που θα καλέσει επανειλημμένα για να μετακινηθεί ο χρήστης στη σελίδα. Συνεπώς χρησιμοποιούνται για τις παρακάτω διαδικασίες: • Αναπροσαρμογή μεγέθους ή ανασύνταξη παραθύρου • Εισαγωγή κλειδιού από χρήστη (ποντίκι, πληκτρολόγιο) • Animation (καθιστούν πολλά πλαίσια) Η βασικη τους δομή είναι όνομα_συνάρτησης(όνομα_συνάρτησης_γεγονότος που θα διαχειρηστεί), π.χ. glutKeyboardFunc( my_key_events_func ); - glutMouseFunc ( my_mouse_events_func );

69. Με ποιές συναρτήσεις γίνεται μοντελοποίηση επιφανειών που ανακλούν στην OpenGl;

Οι συναρτήσεις με τις οποίες γίνεται μοντελοποίηση συναρτήσεις με τις οποίες γίνεται μοντελοποίηση επιφανειών που ανακλούν στην OpenGl είναι οι φανειών που ανακλούν στην OpenGl είναι οι παρακάτω:

genType reflect(genType I , genType N);

genDType reflect(genDType I , genDType N);

70. Σε πόσες και ποιες συνιστώσες διαχωρίζετε το φως πηγής κατά την μοντελοποίηση πηγών φωτισμού;

Tο φως πηγής κατά την μοντελοποίηση πηγών φωτισμού χωρίζεται σε 3 συνιστώσες, οι οποίες είναι οι εξής: • Ένταση και χρώµα πηγής • Θέση πηγής • Κατεύθυνση εκποµπής - Γωνία αποκοπής

71. Με ποια σειρά γίνονται οι διεργασίες για τον υπολογισμό της τελικής εικόνας (rendering) στην OpenGL;

H OpenGL χρησιμοποιεί μια μηχανή καταστάσεων (state machine) για να επικοινωνεί με την εφαρμογή. Σε αυτή την μηχανή καταστάσεων η OpenGL παραμένει διαρκώς σε μια κατάσταση μέχρι να αλλάξει η εφαρμογή την κατάσταση. Παράδειγμα αν θέσουμε το χρώμα που θα χρησιμοποιεί η OpenGL για να ζωγραφίσει ένα μοντέλο, το χρώμα θα παραμείνει στη μνήμη και θα χρησιμοποιείται μέχρι να το αλλάξουμε ή να κλείσουμε την εφαρμογή. Εφόσον λοιπόν η εφαρμογή καθορίσει το περιβάλλον που θα χρησιμοποιήσει η OpenGL για να απεικονίσει το μοντέλο μας (χρώματα, υφές, πηγές φωτός, κάμερα κλπ), περνάει στο πρώτο στάδιο κατά το οποίο θα μετασχηματίσει και θα φωτίσει (transform and lighting) τα σημεία(vertices) του μοντέλου. Στην συνέχεια η OpenGL περνά στο στάδιο της ψηφιοποίησης το οποίο λαμβάνει όλες τις πληροφορίες και την γεωμετρία από το προηγούμενο στάδιο (του μετασχηματισμού) και παράγει την τελική, ψηφιακή, εικόνα. Η εικόνα αντιγράφεται στην μνήμη του frame buffer και φτάνει έτσι στην οθόνη του υπολογιστή. Αυτή η ακολουθία βημάτων που ακολουθεί η OpenGL για να απεικονίσει το μοντέλο λέγεται graphics pipeline (διασωλήνωση).

72. Με ποια εντολή και ποιες συναρτήσεις θα πραγματοποιήσετε απόδοση υφής σε γραμμές και επιφάνειες στην OpenGl;

Η ανάθεση συντεταγμένων υφής γίνεται µε τη χρήση της εντολής glTexCoord{1,2}{i,s,f,d}. Για ορίσματα κινητής υποδιαστολής (GLfloat) οι συναρτήσεις είναι: void glTexCoord1f ( GLfloat s ); για μονοδιάστατες υφές ή void glTexCoord2f ( GLfloat s, GLfloat t ); για δισδιάστατες υφές.

73. Για ποιο λόγο χρησιμοποιούνται οι λίστες απεικόνισης(display lists) στην γλώσσα OpenGl και πώς συντάσονται; Δώστε και από ένα παράδειγμα για κάθε περίπτωση.

Συχνά, είναι βολικό η περιγραφή ενός σύνθετου γεωµετρικού σήµατος να περικλείεται σε µια αυτόνοµη ενότητα κώδικα, η οποία θα εκτελείται κάθε φορά που θέλουµε να σχεδιάσουµε αυτό το σχήµα. Στην OpenGL τη δυνατότητα αυτή δίνουν οι λίστες απεικόνισης (display lists). Οι λίστες απεικόνισης διευκολύνουν την επαναχρησιµοποίηση κώδικα και απαλλάσσουν τον προγραµµατιστή από περιττές επαναλαµβανόµενες δηλώσεις του ίδιου σύνθετου σχήµατος. Μια λίστα απεικόνισης περικλείεται µεταξυ δύο εντολών: των glNewList και glEndList. Όταν σε ένα πρόγραµµα ορίζονται πολλαπλές λίστες, µια αυτόνοµη λίστα απεικόνισης διακρίνεται από τις υπόλοιπες βάσει ενός ακεραίου αριθµού που παίζει το ρόλο του "αναγνωριστικού αριθµού" της (list identifier). Προεκιµένου να αποδώσουµε αναγνωριστικούς αριθµούς σε λίστες απεικόνισης, πρέπει να δεσµεύσουµε το απαιτούµενο εύρος τιµών. Η δέσµευση αυτή γίνεται µε την εντολή glGenLists(). GLuint glGenLists(GLint range); Όπου range το πλήθος των αναγνωριστικών αναγνωριστικών που θέλουµε θέλουµε να χρησιµοποιήσουµε. Η συνάρτηση επιστρέφει µια ακέραιη τιµή που αντιστοιχεί στον πρώτο αναγνωριστικό αριθµό. Π.χ. µε τη σύνταξη: listID=glGenLists(2); παράγουµε 2 identifiers. Ο πρώτος έχει ακέραιη τιµή listID, ο δεύτερος listID+1 και ούτω καθ' εξής. Η ανάθεση αναγνωριστικής τιµής σε µια λίστα απεικόνισης γίνεται κατά την έναρξη της δήλωσής της στην εντολή glNewList: void glNewList(GLuint listID, GLenum listMode); Π.χ. σύνταξη λίστας απεικόνισης: glNewList(); // Εντολές δήλωσης σχήµατος glEndList(); Μεταξύ των εντολών glNewList και glEndList ορίζουµε το σύνθετο γεωµετρικό σχήµα της λίστας απεικόνισης, χρησιµοποιώντας τις εντολές σχεδιάσης σχηµάτων που αναφέραµε παραπάνω.

74. Έστω κώδικας: <?php $a = "6"; $b = 8; echo $b - $a; ?> Ποιο θα είναι το αποτέλεσμα; Δικαιολογήστε την απαντησή σας.

Το αποτέλεσμα θα είναι 2. Η php δεν κάνει διάκριση μεταξύ των τύπων των μεταβλητών, οπότε η παραπάνω πράξη εκτελείται κανονικά

75. Ποιες είναι οι διαφορές μεταξύ των πινάκων της PHP και των πινάκων της C++;

Στην PHP μπορούμε να δημιουργήσουμε έναν πίνακα με δύο τρόπους, είτε με τη συνάρτηση array ή με τους ειδικούς τελεστές [ ].Επίσης στην PHP: α) Ένας πίνακας (array) είναι μια κανονική μεταβλητή της PHP η οποία έχει την ιδιότητα ότι περιέχει άλλες μεταβλητές μέσα της. β) Η κάθε μεταβλητή που περιέχεται μέσα σ' έναν πίνακα είναι γνωστή ως στοιχείο (element) και το κάθε στοιχείο ενός πίνακα περιέχει ένα κλειδί(key) και μια τιμή (value), που μπορεί να είναι μια άλλη μεταβλητή.

76. Περιγράψτε τα στάδια επεξεργασίας μιας PHP σελίδας από τη στιγμή της αίτησής της μέχρι την εμφάνιση στον browser του χρήστη.

Μια σελίδα PHP περνά από επεξεργασία από συμβατό web server (π.χ. Apache ), ώστε να παραχθεί σε πραγματικό χρόνο το τελικό περιεχόμενο, που θα σταλεί στο πρόγραμμα περιήγησης των επισκεπτών σε μορφή κώδικα επισκεπτών σε μορφή κώδικα HTML . Ένα αρχείο με κώδικα PHP θα πρέπει να έχει την κατάλληλη επέκταση (π.χ. *.php, *.php4, *.php4, *.phtml *.phtml κ.ά.). Η ενσωμάτωση κώδικα σε ένα αρχείο επέκτασης .html δεν θα λειτουργήσει και θα εμφανίσει στον browser τον κώδικα χωρίς καμία επεξεργασία, εκτός αν έχει γίνει η κατάλληλη ρύθμιση στα MIME types του server. Επίσης ακόμη κι όταν ένα αρχείο έχει την επέκταση .php, θα πρέπει ο server να είναι ρυθμισμένος για να επεξεργάζεται κώδικα PHP.

77. Αναφέρετε τους κανόνες που αφορούν στην ονομασία των μεταβλητών της PHP;

Μεταβλητές στην PHP:

• Ξεκινούν με $

• Ακολουθεί γράμμα ή underscore (_)

• Μπορεί να περιέχει γράμματα, αριθμούς, underscores (_) ή dashes ( \ , / )

• Δεν μπορεί να περιέχει κενά

• Είναι case sensitive

78. Η εντολή $c = 1; echo '$c' . $c; τι θα δώσει ως τύπωση;

Ο κώδικας κώδικας θα εμφανίσει εμφανίσει : $c1

79. Έστω κώδικας:<?php $a = "Hello, "; $b = "world!"; echo $a; echo $b; ?> Ποιό θα είναι το αποτέλεσμα;Δικαιολογήστε την απαντησής σας.

Ο κώδικας θα εμφανίσει: Hello, world!

80. Έστω κώδικας php:$a = 2; echo $a; ++$a; echo $a; --$a; echo $a; Ποιό θα είναι το αποτέλεσμα; Δικαιολογήστε την απαντησή σας.

Ο κώδικας θα εμφανίσει: 2 3 2

81. Να γραφεί ένα πρόγραμμα PHP το οποίο θα εμφανίζει με αλλαγή γραμμής το μήνυμα "Καλωσήρθατε στην PHP" 5 φορές.

<?php

for($i=1;$i<=5;$i++)

{

echo "Καλωσηρθατε στην PHP </br>";

}

?>

82. Ποιοί είναι οι βασικοί τύποι σχέσεων μεταξύ πινάκων στην PHP(MySql);

Υπάρχουν τρεις (3) τύποι σχέσεων μεταξύ πινάκων :

• Σχέση ένα προς ένα (one to one): μια εγγραφή (γραμμή) ενός πίνακα σχετίζεται με μία μόνο εγγραφή ενός άλλου πίνακα και το αντίστροφο.

• Σχέση ένα προς πολλά (one to many): μία εγγραφή (γραμμή) ενός πίνακα σχετίζεται με πολλές εγγραφές ενός άλλου πίνακα, αλλά όχι το αντίστροφο.

• Σχέση πολλά προς πολλά (many to many): μία εγγραφή (γραμμή) ενός πίνακα σχετίζεται με πολλές εγγραφές ενός άλλου πίνακα και με πολλές εγγραφές ενός άλλου πίνακα και το αντίστροφο.

83. Να γραφεί μία φόρμα σε HTML με δύο πλαίσια κειμένου με τα συμβολικά ονόματα text1 και text2 και ένα πλήκτρο πιέσεως submit το οποίο θα ενεργοποιεί μία σελίδα σε PHP η οποία θα εμφανίζει τις τιμές των πλαισίων κειμένου με πλάγια γράμματα.

Form.html

<html>

<body>

<form acti method="post">

Text1: <input type="text" />

Text2: <input type="text" />

Submit:<input type="submit" value ="Submit" />

</form>

</body>

</html>

text.php

<html>

<body> <?php

$mytext1= $_POST["mytext1"];

$mytext2= $_POST["mytext2"];

?>

<i> <?php echo $mytext1 . $mytext2; ?></i>

</body>

</html>

84. Να γραφεί μία φόρμα η οποία θα δέχεται από τον χρήστη ένα όνομα, ένα επίθετο και έναν αριθμητικό κωδικό. Αν κάποιο από τα πεδία δεν συμπληρωθεί από τον χρήστη τότε θα πρέπει να επανεμφανίζεται η φόρμα με ένα κόκκινο μήνυμα που να γράφει ποια πεδία πρέπει να συμπληρωθούν. Η φόρμα ενεργοποιεί μία σελίδα PHP που εκτυπώνει τα πεδία της φόρμας.

<!DOCTYPE HTML>

<html>

<head>

<style>

.error {color: #FF0000 #FF0000;}

</style>

</head>

<body>

<?php

// define variables and set to empty values

$firstnameErr = $lastnameErr = $pswdErr = $firstnameErr = $lastnameErr = $pswdErr = ""; $firstname = $lastname = $pswd = $firstname = $lastname = $pswd = "";

if ($_SERVER $_SERVER["REQUEST_METHOD" "REQUEST_METHOD"] == "POST") {

if (empty($_POST["firstname" "firstname"])) {

$firstnameErr = $firstnameErr = "FirstName is required" "FirstName is required";

} else {

$firstname = test_input( $firstname = test_input($_POST["firstname" "firstname"]);

}

if (empty($_POST["lastname" "lastname"])) {

$lastnameErr = $lastnameErr = "LastName is required" "LastName is required";

} else {

$lastname = test_input( $lastname = test_input($_POST["lastname" "lastname"]);

}

if (empty($_POST["pswd"])) {

$pswdErr = $pswdErr = "Password is required" "Password is required";

} else {

$pswd = test_input( $pswd = test_input($_POST["pswd"]);

}}

function test_input($data) {

$data = trim($data);

$data = stripslashes($data);

$data = htmlspecialchars($data);

return $data;

}

?>

<h2>PHP Form Validation Example PHP Form Validation Example</h2>

<p><span>* required field. * required field.</span></p>

<form method="post" actiPHP_SELF" "PHP_SELF"]);?>">

FirstName: FirstName: <input type="text">

<span>* <?php echo $firstnameErr; $firstnameErr;?></span>

<br><br>

LastName: LastName: <input type="text">

<span>* <?php echo $lastnameErr; $lastnameErr;?></span>

<br><br>

Password: Password: <input type=" password ">

<span><?php echo $pswdErr; $pswdErr;?></span>

<br><br>

<input type="submit" value="Submit">

</form>

<?php

echo "<h2>Your Input:</h2>" "<h2>Your Input:</h2>";

echo $firstname;

echo "<br>";

echo $lastname;

echo "<br>";

echo $pswd;

?>

</body>

</html>

85. Σε ένα αρχείο PHP υπάρχουν οι μεταβλητές var1,var2, Ex1 και Ex2 με διάφορες τιμές. Να γραφεί μία φόρμα που θα έχει ένα πλαίσιο κειμένου και θα ενεργοποιεί το παραπάνω αρχείο και το οποίο θα εμφανίζει την τιμή της μεταβλητής που έχει όνομα ίδιο με αυτό που είναι η τιμή του πλαισίου κειμένου.

Form.html

<html>

<body>

<form acti method="post">

Text1: <input type="text" />

Submit:<input type="submit" value ="Submit" />

</form>

</body>

</html>

text.php

<html>

<body>

<?php

$var1 = value1;

$var2 = value2;

$Ex1 = value3;

$Ex2 = value4;

$x= $_POST["mytext1"];

if ($x=$var1){

echo $x;

}

else if ($x=$var2){

echo $x;

}

else if ($x=$Ex1){

echo $x;

}

else if ($x=$Ex2){

echo $x;

}

?>

</body>

</html>

86. Ποιες είναι οι βασικές διαφορές μεταξύ PHP και JAVASCRIPT;

Η javascript είναι μια Client-side γλώσσα προγραμματισμού ενώ η PHP μία Server -side γλώσσα προγραμματισμού. Έτσι οι διαφορές τους μπορούμε να πούμε ότι συνοψίζονται στον παρακάτων πίνακα

87. Πώς μπορούμε να έχουμε καθολικές μεταβλητές μεταξύ πολλώνσυναρτήσεων; Δώστε από ένα παράδειγμα σε κάθε περίπτωση.

Στην PHP οι καθολικές μεταβλητές πρέπει να δηλωθούν σαν global μέσα σε μια συνάρτηση αν πρόκειται να τις χρησιμοποιήσουμε μέσα σ' αυτή τη συνάρτηση. Ακολουθεί ένα παράδειγμα:

$a = 1;

$b = 2;

Function Sum () {

global $a, $b;

$b = $a + $b;

}

Sum ();

echo $b;

Το παραπάνω script θα εμφανίσει το 3. Δηλώνοντας τις $a και $b σαν global μέσα στη συνάρτηση, όλες οι αναφορές και στις δύο μεταβλητές θα αφορούν τις καθολικές τιμές. Δεν υπάρχει κάποιος περιορισμός στον αριθμό των καθολικών μεταβλητών που μπορεί να χειριστεί μια συνάρτηση. Ένας δεύτερος τρόπος για να έχουμε πρόσβαση σε μεταβλητές μεταβλητές σε καθολική καθολική εμβέλεια είναι να χρησιμοποιήσουμε τον ειδικό πίνακα που ορίζεται στην PHP με όνομα $GLOBALS . Έτσι, το προηγούμενο παράδειγμα θα μπορεί να ξαναγραφεί ως εξής :

$a = 1;

$b = 2;

Function Sum () {

$GLOBALS["b" $GLOBALS["b"] = $GLOBALS[" $GLOBALS["a"] + $GLOBALS[" $GLOBALS["b"];

}

Sum ();

echo $b;

Ο πίνακας $GLOBALS είναι ένας associative πίνακας με το όνομα της καθολικής μεταβλητής να αποτελεί το key και τα περιεχόμενα αυτής της μεταβλητής να αποτελούν την τιμή του στοιχείου του πίνακα.

88. Γιατί δεν μπορούμε να εκτελέσουμε ένα αρχείο PHP απλά ανοίγοντάς το με έναν διαχειριστή αρχείων όπως γίνεται με τις HTML σελίδες; Δικαιολογήστε την απάντησης σας.

Η γλώσσα προγραμματισμού PHP είναι γλώσσα Server - side (εκτελείται στον server) οπότε δε μπορεί να εκτελεστεί με έναν διαχειριστή αρχείων όπως η HTML η οποία είναι Clied - side γλώσσα προγραμματισμού.

89. Πώς θα έπρεπε να δημιουργήσετε έναν βρόχο με την εντολή while για την εκτύπωση όλων των περιττών αριθμών απο το 1 μέχρι το 49;

<?php

$i=1;

while($i<=49)

{

echo $i . "<br /<";

$i+=2;

}

?>

90. Πώς θα έπρεπε να χρησιμοποιήσετε μία εντολή ίf για να εκτυπώσετε το αλφαριθμητικό ''Yοuth message" στο παράθυρο μιας εφαρμογής browser εάν η τιμή μιας ακέραιης μεταβλητής ( της $age) είναι μεταξύ 18 και 35; Εάν η $age περιέχει οποιαδήποτε άλλη τιμή θα πρέπει να εκτυπώνεται το αλφαριθμητικό "Generic message" στο παράθυρο της εφαρμογής browser.

if ($age>18 && $age<35) {

echo "Youth message";

}

else {

echo "Generic message";

}

91. Να υλοποιήσετε μια ιστοσελίδα η οποία να περιέχει κώδικα HTML και PHP script, βάσει των οποίων θα εμφανίζει φόρμα στην οποία ο χρήστης θα δίνει δυο αριθμούς, θα επιλέγει την πράξη (πρόσθεση ή αφαίρεση) και πατώντας στο Execute θα εμφανίζεται το κατάλληλο αποτέλεσμα.

<head>

<meta charset="utf-8">

<title>Calculator</title> </head>

<body>

<form method="post" attribute="post" acti>

<p>First Value:<br/>

<input type="text" <input type="text"></></p>

<p>Second Value:<br/>

<input type="text"></p>

<input type="radio" value="add"

checked="true"><p>+</p><br/>

<input type="radio" type="radio"subtract" value="subt value="subtract"><p>-</p> ract"><p>-</p><br/>

<input type="radio" <input type="radio"group1" value="times"><p> value="times"><p>x</p><br/> x</p><br/>

<input type="radio type="radio"group1" value="divide"><p> value="divide"><p>/</p><br/> /</p><br/>

<p></p>

<button type="submit" value="answer">Execute</button>

</form>

</body>

</html>

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Answer</title>

</head>

<body>

<p>The answer is:

<?php

$first = $first = $_POST['fir $_POST['first'];

$second= $second= $_POST['sec $_POST['second'];

if($_POST['group1'] == 'add') {

echo "$first + $second";

}

else if($_POST['group1'] == 'subtract') {

echo "$first - $second";

}

else if($_POST['group1'] == 'times') {

echo "$first * $second";

}

else($_POST['group1'] == 'divide') {

echo "$first / $second";

?>

</p>

</body>

</html>

92. Να υλοποιηθεί ένας απλός υπολογισμός για το εμβαδόν ενός κύκλου χρησιμοποιώντας τον τύπο Εμβαδόν = π*(r*r). Η ακτίνα θα δίνεται μέσω φόρμας από τον χρήστη και το PHP script θα κάνει τον υπολογισμό του εμβαδού. Ο υπολογισμός του εμβαδού θα γίνεται υποχρεωτικά από κατάλληλη συνάρτηση (function) την οποία θα ορίσετε στο PHP script. (Το π ισούται με 3,14).

<html>

<body>

<form acti method="post">

Text1: <input type="text" />

Submit:<input type="submit" value ="Submit" />

</form>

</body>

</html>

emvado.php

<html>

<body>

<?php

function emvado($r)

{

$E=3.14*$r^2;

return $E;

}

$r= $_POST["aktina"];

echo emvado(r);

?>

</body>

</html>

93. Διατυπώστε τον κώδικα που χρειάζεται η PHP για να συνδεθεί στον (My)SQL DataBase Server με πρόβλεψη εκτύπωσης τυχόν σφάλματος ή επιτυχούς σύνδεσης. Χρησιμοποιήστε το username "admin" και password "fail".

<?php

$conn = mysql_connect("localhost","admin","fail");

if (!$conn)

{

die('Η σύνδεση απέτυχε: ' die('Η σύνδεση απέτυχε: ' . mysql_error()); . mysql_error());

}

// Κώδικας εδώ

?>

94. Πού χρησιμοποιούμε τις μεταβλητές συνόδου στην PHP (PHP session variables); Δώστε δύο παραδείγματα.

Τα sessions είναι ένας μηχανισμός με τον οποίο μπορείτε να ελέγξετε την ταυτότητα του επισκέπτη όταν αυτός περιηγείται στις σελίδες ενός ιστότοπου. Με την php μπορείτε να δημιουργείτε sessions για τους επισκέπτες και έτσι να ελέγχετε την ταυτότητά τους και κατά συνέπεια την πρόσβαση αυτών σε ευαίσθητες σελίδες. Τα session χρησιμοποιούν την τεχνολογία των cookies. Δηλαδή κάθε επισκέπτης δέχεται ένα cookie στο μηχάνημά του το οποίο περιέχει έναν αριθμό (id) το οποίο είναι και το αναγνωριστικό του. Ελέγχοντας εσείς το αναγνωριστικό του επισκέπτη μπορείτε να δείτε αν ο επισκέπτης είναι σε session ή όχι.

Παράδειγμα Έστω η σελίδα first.php η οποία θα πρέπει να αρχίζει με τις δύο παρακάτω γραμμές.

<?php

session_start();

$_SESSION['visitor']=session_id();

?>

Για να μπορείτε να ελέγχετε τον επισκέπτη στη σελίδα second.php θα πρέπει

να υπάρχει ο παρακάτω κώδικας.

<?php

session_start();

if(isset($_SESSION['visitor']) && $_SESSION['visitor']===session_id())

{

echo "welcome";

}

else

{

echo "sorry not in session";

}

?>

95. Δημιουργήστε στην PHP τη συνάρτηση addNums() η οποία δέχεται ως ορίσματα 2 ακέραιους και επιστρέφει το αποτέλεσμα της πρόσθεσης αυτών στην οθόνη.

<?php

function addNums($x,$y)

{

$sum=$x + $y;

return $sum;

}

?>

96. Φτιάξτε ένα script στην PHP που θα διαβάζει την τιμή τής μεταβλητής συνόδου (session) "logged" και εάν αυτή δεν είναι αληθής να κάνει ανακατεύθυνση (redirect) στην σελίδα login.html.

<?php

session_start();

$_SESSION['logged']=session_id();

?>

<?php

session_start();

if(isset($_SESSION['logged']) && $_SESSION['logged']===session_id())

{

echo "welcome";

}

else

{

echo "<a href=login.html>Αρχική Σελίδα!</a>";

}

?>

97. Δημιουργήστε στην PHP τη συνάρτηση sum() η οποία δέχεται ως ορίσματα 2 ακέραιους και επιστρέφει το αποτέλεσμα της πρόσθεσης αυτών στην οθόνη. Εκτελέστε το σε παράδειγμα χρησιμοποιώντας τους παρακάτω ακέραιους αριθμούς:α) 5 + 10 = 15β) 7 + 13 = 20γ) 2 + 4 = 6

<?php

function sum($x,$y)

{

$s=$x + $y;

return $s;

}

?>

98. Στείλτε ένα e-mail σε όλες τις εγγραφές του πίνακα subscribers χρησιμοποιώντας τη συνάρτηση mail (to, subject, body). Το email θα έχει θέμα "Login info" και περιεχόμενο "Your username is <το username χρήστη> and your password is <το password χρήστη> ". Δεν απαιτείται ο κώδικας σύνδεσης με τον (My)Sql server. Ο πίνακας subscribers έχει τα πεδία id, username, password, email.

<?php

$result = mysql_query("SELECT * FROM subscribers");

while($row = mysql_fetch_array($result))

{

$to = $row['email']; $row['email'];

$subject $subject = "Login info";

$body = "Your user

name is $row['username'] and your password is

$row['password']";

$sent = mail($to, $subject, $body);

}

?>

99. Τι εννοούμε με τον όρο static mesh στην αρχιτεκτονική των Game Engines (Unreal Engine , Source και Unity);

Με τον όρο Static Mesh εννοούμε τα πολυγωνικά πλέγματα που συνιστούν ένα σημαντικό μέρος της αρχιτεκτονικής των χαρτών σε πολλές μηχανές παιχνιδιών, συμπεριλαμβανομένων της Unreal Engine και της Unity. Ο όρος "static", αναφέρεται στο γεγονός ότι τα δεν μπορούν να κινηθούν ανά κορυφή του πλέγματος, δεδομένου ότι μπορούν να κινηθούν κλιμακωθούν και να ξαναγίνουν skin σε πραγματικό χρόνο.

100. Τι είναι τα collision boxes στα Game Engines; Τι εξυπηρετούν και με ποιο σκεπτικό τα κατασκευάζουμε;

Ίσως από τα πιο σημαντικά σημαντικά στοιχεία στοιχεία ενός video game είναι τα events που συμβαίνουν συμβαίνουν με διάδραση διάδραση στα αντικείμενα, όπως με τη σύγκρουση μαζί τους ή με την είσοδο σε μια συγκεκριμένη περιοχή. Τέτοια events μπορούν να χρησιμοποιηθούν σε πληθώρα εφαρμογών, όπως, για παράδειγμα, ένα σύστημα μάχης, ή ένα σύστημα που πυροδοτεί διαφορετικά event με την είσοδο του παίκτη σε έναν χώρο. Για ενεργοποίηση των παραπάνω events χρησιμοποιούμε collision boxes. Τόσο οι colliders όσο και τα triggers αποτελούν περιοχές στο χώρο (2D ή 3D) οι οποίες μπορεί να εξυπηρετούν διάφορους σκοπούς. Η κύρια διαφορά τους είναι πως οι colliders εμποδίζουν στοιχεία με άλλους colliders να προσπελάσουν τη περιοχή και πρακτικά αποτελούν «αόρατους τοίχους», ενώ τα triggers είναι αόρατες περιοχές στις οποίες οποιοδήποτε αντικείμενο έχει πρόσβαση. Συνεπώς, οι colliders υπάρχουν για να προσομοιώνουν τη σύγκρουση δυο φυσικών αντικειμένων (και να μεταφέρουν οποιαδήποτε πληροφορία αφορά τη σύγκρουση αυτή), ενώ τα triggers αφορούν στη μετάδοση πληροφοριών για τα αντικείμενα που εισέρχονται, μένουν ή εξέρχονται από αυτά. Σημειώνεται πως προκειμένου τα triggers να αναγνωρίσουν ένα αντικείμενο, αυτό το αντικείμενο θα πρέπει να έχει collider.

101. Αναφέρετε ποιες τεχνικές φωτισμού χρησιμοποιούνται στα video games και ποια τα χαρακτηριστικά τους.

Ο φωτισμός είναι ο σημαντικότερος παράγοντας στην τεχνολογία των γραφικών καθώς από αυτό καθορίζεται το πόσο ρεαλιστικά θα απεικονίζεται η γεωμετρία ενός αντικειμένου. Στην σημερινή εποχή το επίπεδο ρεαλισμού έχει φτάσει στο σημείο να μην μπορούμε να διακρίνουμε τη διαφορά μεταξύ των γραφικών και της πραγματικότητας. Κάποιοι από τους αλγόριθμους που χρησιμοποιούνται το μεγαλύτερο μειονέκτημα των οποίων είναι ο χρόνος υπολογισμού (rendering). Οι κάρτες γραφικών δεν μπορούν να εκτελέσουν αυτούς τους αλγόριθμους σε πραγματικό χρόνο λόγω των απαιτήσεων τους σε υπολογιστική ισχύ, με αποτέλεσμα στα παιχνίδια να εφαρμόζεται η τεχνική του χάρτη φωτισμού (Lightmap). Ο χάρτης φωτισμού είναι μία δομή δεδομένων που περιέχει πληροφορίες για σκιές και φωτεινότητα επιφανειών και είναι στατικός, δηλαδή οι σκιές δε μεταβάλλονται κατά τη διάρκεια διάρκεια του παιχνιδιού. παιχνιδιού. Για τον φωτισμό φωτισμό στα video games video games χρησιμοποιούνται χρησιμοποιούνται τρία στοιχεία ανάλογα στοιχεία ανάλογα με το είδος του φωτισμού που χρειαζόμαστε. Directional light: Χρησιμοποιείται για φωτισμό μεγάλων περιοχών π.χ.ολόκληρης πίστας. Point Light και lightmaps: Χρησιμοποιούνται για φωτισμό μικρότερων χώρων π.χ. σε καταφύγια. Υπάρχει η δυνατότητα δημιουργίας lightmaps, δηλαδή περισσότερα από ένα στοιχεία Point Light να μπορούν να ομαδοποιηθούν και κοινά χαρακτηριστικά π.χ. ένταση φωτισμού, για να πετύχουμε καλύτερα και πιο ομοιόμορφα φωτισμένες περιοχές. Spot light: Μοιάζουν πολύ με τα Point Light με την διαφορά όμως ότι η εστίασή τους περιορίζεται σε μια συγκεκριμένη περιοχή π.χ. σαν φωτισμός που αν μια συγκεκριμένη περιοχή π.χ. σαν φωτισμός που αναπαράγεται από μία λάμπα αράγεται από μία λάμπα.

102. Τι είναι το bill boarding και ποια τα πλεονεκτήματά του στην κατασκευή 3D games;

Το Bill boarding που είναι μία τεχνική απόδοσης αντικειμένων που βασίζονται σε εικόνες, ώστε να φαίνονται πιο ρεαλιστικές και ζωντανές. Εφαρμόζεται συνήθως στην οπτικοποίηση μοντέλων τοπίων, λόγω της πολυπλοκότητας αυτών των τόπων αντικειμένων, όπως για παράδειγμα των δέντρων. Η τεχνική Bill boarding αντικαθιστά τα αντικείμενα αυτά με μία εικόνα που τοποθετείται σε ένα διαφανές τετράπλευρο σχήμα. Καθώς ο θεατής κινείται στη σκηνή το τετράπλευρο περιστρέφεται, έτσι ώστε να φαίνεται πάντα η μπροστινή του μεριά.

103. Πολλές φορές στους κατασκευαστές παιχνιδιών (πχ Unity) εφαρμόζεται το Level of Detail (LOD), περιγράψτε τι είναι και ποια είναι η χρησιμοτητά του.

Επίπεδο λεπτομέρειας (LOD-Level of Detail) συνεχόμενο ή προκαθορισμένο. Το χαρακτηριστικό αυτό αφορά την τρισδιάστατη απεικόνιση του θέματος σε πραγματικό χρόνο και σχετίζεται με την ποσότητα των πολύγονων που περιγράφουν το θέμα (λεπτομέρεια), κάθε φορά που αυτό αποδίδεται γραφικά στην οθόνη του Η/Υ, ανάλογα με την απόσταση του αντικειμένου από τη θέση της ιδεατής κάμερας και κατά συνέπεια της επιφάνειας που αυτό καταλαμβάνει στην οθόνη του Η/Υ. Έτσι, όσο πιο μικρή είναι η επιφάνεια που καταλαμβάνει το θέμα στην οθόνη του υπολογιστή, τόσο λιγότερη είναι η οπτική πληροφορία που μπορεί να αποδοθεί σε αυτή και συνεπώς τόσο πιο απαρατήρητη είναι η χρήση λιγότερων πολύγωνων για την οπτική απόδοσή του θέματος. Η τεχνική αυτή έχει σαν αποτέλεσμα την ταχύτερη οπτική απόδοση της τρισδιάστατης σκηνής και εφαρμόζεται σε περιπτώσεις ιδεατών περιπάτων.

104. Να αναφερθούν συνοπτικά οι βασικές κλάσεις του Unreal Editor και ποια η λογική της χρησιμοποίησής τους.

Οι βασικότερες κλάσεις από τις οποίες όλες οι υπόλοιπες παράγονται είναι οι εξής:

Object - Είναι η γονική κλάση όλων των κλάσεων στην Unreal. Όλες οι συναρτήσεις στην κλάση Object είναι προσπελάσιμες από παντού γιατί όλες οι κλάσεις παράγονται από αυτή. Η Object είναι μια αφηρημένη κλάση, υπό την έννοια ότι δεν κάνει τίποτα χρήσιμο. Όλη η λειτουργικότητα προέρχεται από τις υπό-κλάσεις, όμως σε αυτή βρίσκονται δεκάδες μεταβλητές, δομές και συναρτήσεις που είναι χρήσιμες σε όλες τις υπόλοιπες κλάσεις.

Actor - Προέρχεται από την κλάση Object και είναι η γονική κλάση όλων των αυτόνομων αντικειμένων στην Unreal. Η κλάση Actor περιέχει όλη την λειτουργικότητα που χρειάζεται ένα αντικείμενο (actor) για να κινηθεί, να αλληλεπιδράσει με άλλα αντικείμενα, να επηρεάσει το περιβάλλον και να κάνει όλα τα χρήσιμα σχετικά με το παιχνίδι πράγματα.

Pawn - Προέρχεται από την κλάση Actor και είναι η γονική κλάση όλων των παιχτών και πλασμάτων, τα οποία είναι ικανά για υψηλού επιπέδου τεχνητή νοημοσύνη ή έλεγχο από τον παίχτη.

Class - Προέρχεται από την κλάση Object και είναι ένα ειδικού είδους αντικείμενο, το οποίο περιγράφει την κλάση ενός αντικειμένου. Αν και φαίνεται αρχικά κάπως μπερδεμένο, μια κλάση είναι ένα αντικείμενο και η κλάση περιγράφει ορισμένα αντικείμενα. Για παράδειγμα, όταν δημιουργούμε ένα νέο αντικείμενο (actor), μπορούμε να ορίσουμε την κλάση του αντικειμένου χρησιμοποιώντας τον τύπο Class.

105. Περιγράψτε τη κλάση actor (στην UnrealScript), αναφέρατε τη χρησιμότητά της.

Προέρχεται από την κλάση Object και είναι η γονική κλάση όλων των αυτόνομων αντικειμένων στην Unreal. Η κλάση Actor περιέχει όλη την λειτουργικότητα που χρειάζεται ένα αντικείμενο (actor) για να κινηθεί, να αλληλεπιδράσει με άλλα αντικείμενα, να επηρεάσει το περιβάλλον και να κάνει όλα τα χρήσιμα σχετικά με το παιχνίδι πράγματα.

106. Περιγράψτε τη κλάση pawn (στην UnrealScript), αναφέρατε τη χρησιμότητά της.

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

107. Να αναφερθούν οι τύποι μεταβλητών που υποστηρίζονται από την Unrealscript καθώς και οι περιγραφές τους.

Οι τύποι μεταβλητών που υποστηρίζονται από την Unrealscript είναι οι εξής:

  • byte: Μια τιμή ενός byte που κυμαίνεται από 0 ως 255
  • int: Ένας 32- bit ακέραιος αριθμός
  • bool: Μια λογική τιμή. True/false
  • float: Ένας 32- bit αριθμός κινητής υποδιαστολής
  • string: Μια σειρά χαρακτήρων
  • constant: Μια μεταβλητή που δεν μπορεί να τροποποιηθεί
  • array<Type>: Ένας πίνακας του τύπου "Type"
  • enumeration: Μια μεταβλητή που μπορεί να πάρει μια σειρά από ακέραιες τιμές προκαθορισμένου ονόματος.
  • struct: Όμοια με τις δομές στην γλώσσα C, οι δομές στην Unrealscript επιτρέπουν την δημιουργία νέων τύπων μεταβλητών, που περιέχουν άλλες μεταβλητές. Για παράδειγμα, δυο πολύ χρησιμοποιούμενες δομές στην Unreal είναι οι δομές vector (περιέχει τις μεταβλητές X,Y,Z) και rotator.
  • name: Χρησιμοποιείται για την αποθήκευση του ονόματος ενός αντικειμένου στην Unreal, όπως το όνομα μιας συνάρτησης, κατάστασης (state), κλάσης, κτλ. Αποθηκεύονται σε έναν καθολικό πίνακα ως δείκτες για ταχύτερη προσπέλαση.
  • object and Actor references: Μεταβλητή που αναφέρεται σε ένα άλλο αντικείμενο στον τρισδιάστατο χώρο. Μέσω αυτών των μεταβλητών μπορούμε να προσπελάσουμε τις μεταβλητές ενός άλλου αντικειμένου. Μπορούν να πάρουν την ειδική τιμή "none", που είναι αντίστοιχη με τιμή "null" στην C.
  • delegate: Τα delegates είναι αναφορές σε κάποια συνάρτηση μέσα σε ένα στιγμιότυπο ενός αντικειμένου. Πρόκειται για τον συνδυασμό δυο προγραμματιστικών ιδεών, των συναρτήσεων και των μεταβλητών. Οι μεταβλητές διατηρούν κάποιες τιμές που μπορούν κατά τη διάρκεια της εκτέλεσης του προγράμματος να αλλάξουν. Υπό κάποια έννοια τα delegates είναι μεταβλητές που κρατούν κάποιες τιμές, μόνο που αυτές οι τιμές είναι άλλες συναρτήσεις μέσα στην κλάση. Επίσης, εκτελούνται σαν συναρτήσεις και για αυτό είναι ένα τόσο ισχυρό εργαλείο στον προγραμματισμό παιχνιδιών

108. Η UnrealScript δίνει αρκετή λειτουργικότητα για τα όπλα, να αναφερθούν αναλυτικά οι βασικές καταστάσεις στις οποίες μπορεί να περιέλθει ένα όπλο με τη χρήση της.

OnStartedFiring () - που ονομάζεται όταν το όπλο εισέρχεται στην κατάσταση πυροδότησης. OnStoppedFiring () - που ονομάζεται όταν το όπλο βγαίνει από την κατάσταση πυροδότησης. Το OnContinuedFiring () - που ονομάζεται όταν πυροδοτείται το όπλο, ολοκληρώνει την καθυστέρηση ανανέωσης(refire delay) και η σκανδάλη για τη λειτουργία πυρκαγιάς(fire mode) είναι ακόμα κάτω, ώστε το όπλο να πυροδοτήσει και πάλι.

109. Τι σημαίνουν οι όροι Modeling, Rendering και Animation;

Η μοντελοποίηση (Modeling) είναι η δημιουργία της γεωμετρίας ενός αντικειμένου. Ως γεωμετρία ενός 3Δ αντικειμένου ορίζεται μια συλλογή σημείων (vertices), στον 3Δ χώρο, συνδεδεμένα με διάφορες γεωμετρικές οντότητες όπως καμπύλες, τρίγωνα, ευθύγραμμα τμήματα, κλπ. Η σχεδιοκίνηση (Animation) είναι η μετατόπιση της γεωμετρίας σε σημαντικά χρονικά σημεία, σε συγκεκριμένες θέσεις του κόσμου, με στόχο την απόδοση κίνησης και την οπτικοποίηση της χρονικής μεταβολής. Η φωτοαπόδοση (Rendering) συµπληρώνει τη γεωµετρία που έχουµε δηµιουργήσει µε χρώµατα , σκιές , φωτισµό και πολλά άλλα οπτικά εφέ όπως τα ατµοσφαιρικά εφέ. Στην ουσία το Rendering είναι η µέθοδος µε την οποία παίρνουµε τις σκηνές που έχουµε δηµιουργήσει στον υπολογιστή και τις παρουσιάζουµε στον κόσµο.

110. Τι είναι φωτοαπόδοση και ποιοι παράγοντες την επηρεάζουν;

Το τελευταίο στάδιο της ψηφιακής αναπαράστασης µίας σκηνής του πραγµατικού κόσµου είναι η φωτοαπόδοση της ή αλλιώς Rendering. Tο rendering συµπληρώνει τη γεωµετρία που έχουµε δηµιουργήσει µε χρώµατα , σκιές , φωτισµό και πολλά άλλα οπτικά εφέ όπως τα ατµοσφαιρικά εφέ. Στην ουσία το Rendering είναι η µέθοδος µε την οποία παίρνουµε τις σκηνές που έχουµε δηµιουργήσει στον υπολογιστή και τις παρουσιάζουµε στον κόσµο. Μέσα από τις ρυθµίσεις του µηχανισµού φωτοαπόδοσης που θα χρησιµοποιήσουµε, ορίζουµε το είδος και το µέγεθός του αρχείου στο οποίο θα φωτοαποδοθεί η σκηνή αλλά και το είδος των εφέ (ατµοσφαιρικά ,εικόνες φόντου) που θα προσθέσουµε στο τελικό αποτέλεσµα. Η φωτοαπόδοση µπορεί να δηµιουργήσει είτε µία δισδιάστατη στατική εικόνα είτε κινούµενη εικόνα (animation) βασιζόµενη στο 3D µοντέλο µας χρησιµοποιώντας τον φωτισµό και τα υλικά που έχουµε προσθέσει στην σκηνή µας κατά τα δύο προηγούµενα στάδια. Οι πα προηγούµενα στάδια. Οι παράγοντες την επηρρεάζουν είναι υπολογιστική ισχύ, τα χρώματα, οι υφές (textures), τα υλικά (materials), ο φωτισμός και οι σκιάσεις

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

Η δημιουργία κινούμενης φωτορεαλιστικής απεικόνισης σε χωρίζεται σε τρία βασικά στάδια: στάδια: Τη μοντελοποίηση (modeling), την απόδοση σχεδιοκίνησης (Animation) και τη φωτορεαλιστική απεικόνιση (rendering). Η μοντελοποίηση είναι η δημιουργία της γεωμετρίας ενός αντικειμένου. Ως γεωμετρία ενός 3Δ αντικειμένου ορίζεται μια συλλογή σημείων (vertices), στον 3Δ χώρο, συνδεδεμένα με διάφορες γεωμετρικές οντότητες όπως καμπύλες, τρίγωνα, ευθύγραμμα τμήματα, κλπ. Η απόδοση σχεδιοκίνησης είναι η μετατόπιση της γεωμετρίας σε σημαντικά χρονικά σημεία, σε συγκεκριμένες θέσεις του κόσμου, με στόχο την απόδοση κίνησης και την οπτικοποίηση της χρονικής μεταβολής. Η φωτορεαλιστική απεικόνιση είναι η διαδικασία ρεαλιστικής απόδοσης των χαρακτηριστικών ενός μοντέλου. Αυτό γίνεται με τη χρήση κατάλληλων χρωμάτων, υφών (textures), υλικών (materials), φωτισμού και σκιάσεων.

112. Τι είναι οι τεχνικές φωτισμού (lighting) και σκίασης (shading); Αναφέρετε τις βασικές τεχνικές φωτισμού και σκίασης που χρησιμοποιούνται σε μια εφαρμογή τρισδιάστατης σχεδίασης και κίνησης.

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

Point/Omni Light: Εκπομπή φωτός από ένα συγκεκριμένομικρό σημείο στον τρισδιάστατο χώρο προς όλες τις κατευθύνσεις. Κατευθυντικό φως (Directional Light ): Ένα κατευθυντικό φως αντιπροσωπεύει μια μακρινή α μακρινή πηγή φωτός (όπως ο ήλιος ή το φεγγάρι) και οι ακτίνες του τρέχουν παράλληλα προς μία κατεύθυνση από κάθε σημείο του ουρανού και χρησιμοποιούνται συνήθως για την προσομοίωση του άμεσου ηλιακού φωτός.

Φώς σημείων (Spot Light): Ένα σημειακό φως εκπέμπει ένα φωτεινό πεδίο με σχήμα κώνου από ένα μόνο σημείο στο διάστημα.

Φως χώρου (Area Light): Είναι ένα φως περιοχής που εκπέμπει κατευθυντικές ακτίνες μέσα από ένα καθορισμένο σχήμα (είτε ορθογώνιο είτε κυκλικό)

Φως όγκου (Volume Light): Είναι ένα σημείο φωτός (Spot Light) που εκπέμπει ακτίνες από ένα κεντρικό σημείο και έχει ένα συγκεκριμένο σχήμα και μέγεθος (κύβος, σφαίρα, κύλινδρος κ.λπ.).

Φωτισμός περιβάλλοντος(Ambient Light): Ένα φως περιβάλλοντος εκπέμπει ακτίνες φωτός προς κάθε κατεύθυνση ανεβάζοντας το συνολικό επιπέδου διάχυτου φωτισμού σε μια σκηνή.

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

113. Ποιες τεχνικές γνωρίζετε για την απόδοση υλικών (materials & textures) πάνω στα τρισδιάστατα μοντέλα;

Είναι μια μέθοδος για τον καθορισμό, υφής επιφάνειας ή πληροφοριών χρώματος σε ένα τρισδιάστατο μοντέλο. Έτσι μία επίπεδη εικόνα τυλίγεται γύρω από το τρισδιάστατο αντικείμενο και δημιουργεί μια υφή σε υφή σε μια 3D επιφάνεια. Η μέθοδος αυτή είναι μια σύνθετη διαδικασία καθώς εμπεριέχει πολλαπλές ανεξάρτητες ιδιότητες (όπως ύψος, τραχύτητα, μετατόπιση, ανάκλασης, κατοπτρική αντανάκλαση πολλές άλλες παραλλαγές) Η δημιουργία αυτών των ανεξάρτητων υλικών(εικόνων) μπορούν να σχεδιαστούν από το εκάστοτε σχεδιαστικό πρόγραμμα εξαρχής, είτε από μια σειρά φωτογραφιών επιφάνειας από το αντικείμενο ή παρόμοιο στον πραγματικό κόσμο, είτε σχεδιάζοντας εξαρχής δισδιάστατες εικόνες (photoshop). Σκοπός η φωτορεαλιστική απόδοση του τρισδιάστατου μοντέλου.

114. Τι είναι το Normal Mapping και ποια η χρησιμότητα του; Περιγράψτε αναλυτικά τον τρόπο λειτουργίας του.

Normal Map είναι η εικόνα που χρησιμοποιείται για να δημιουργηθεί η ψευδαίσθηση του ανάγλυφου. Το φως διαχέεται διαφορετικά στην επιφάνεια απεικόνισης σύμφωνα με το normal map το οποίο αποτελείται από χρώματα rgb που δηλώνουν την διεύθυνση της γεωμετρίας της επιφάνειας. Στο Normal Normal Mapping, έχουμε ολική αντικατάσταση του διανύσματος διανύσματος με προϋπολογισμένα κανονικά διανύσματα. Οι χάρτες κανονικών διανυσμάτων, περιέχουν αναπαραστάσεις των κανονικών διανυσμάτων. Όπως τα κανονικά διανύσματα χρησιμοποιούνται για τον υπολογισμό του φωτισμού και των ανακλάσεων πάνω στην γεωμετρία του αντικειμένου, τα Normal Maps μπορούν να χρησιμοποιηθούν για τον προσδιορισμό της γωνίας με την οποία πέφτει το φως στις διάφορες επιφάνειες της γωνίας που χρησιμοποιείται για τους υπολογισμούς της ανάκλασης. Για την αναπαράσταση των κανονικών διανυσμάτων, γίνεται χρήση εικόνων 24- bit, όπου τα διαφορετικά διαφορετικά χρώματα αντιπροσωπεύουν διαφορετικές κατευθύνσεις. Συγκεκριμένα, αναλογία του RGB μοντέλου με τα κανονικά διανύσματα είναι εξής: το κόκκινο χρώμα αναπαριστά τον άξονα x, το πράσινο αναπαριστά τον άξονα y και τ ξονα y και το μπλε αναπαριστά τον άξονα z.

115. Τι είναι οι τεχνικές σχεδίασης και φωτισμού; Περιγράψτε περιληπτικά τρεις τεχνικές δημιουργίας της τελικής εικόνας (rendering).

Rendering είναι η τελική υπολογιστική διαδικασία προσθήκης φωτισμού, σκίασης, χρώματος και υφής σε 2D ή 3D σχέδια, π σε 2D ή 3D σχέδια, προκειμένου να πραγματοποιηθεί σύνθεση εικόνων που μοιάζουν πραγματικές.

Global illumination rendering (GI): Στην περίπτωση αυτή προσδίδεται προσδίδεται πιο ρεαλιστικός φωτισμός σε τρισδιάστατες σκηνές λαμβάνοντας υπόψη όχι μόνο το φως που προέρχεται απευθείας από μια πηγή φωτός αλλά και αυτές οι οποίες αντανακλώνται από άλλες επιφάνειες της σκηνής, είτε αντανακλαστικές είτε όχι.

Αmbient occlusion rendering (ΑΟ): Στην περίπτωση αυτή προσομοιώνονται απαλές σκιές που εμφανίζονται στις ρωγμές και τα επιμέρους στοιχεία των 3D αντικειμένων καθορίζοντας τον όγκο του και διαχωρίζοντας αυτό και τα μεταξύ τους αντικείμενα στη τρισδιάστατη σκηνή προσδίδοντας ένα άλλο επίπεδο ρεαλισμού. Δεν λαμβάνονται υπόψιν πηγές φωτός και αντανακλάσεις παρά μόνον ο φωτισμός περιβάλλοντος (Ambient Light).

Raytraced rendering: Με την τεχνική αυτή γίνεται ανίχνευσητης διαδρομής των ακτινών ακτινών του για τη δημιουργία εικόνων ως εικονοστοιχεία (pixels) σε διαφορετικά επίπεδα. Με το σύνολο αυτών, δημιουργούνται εικονικά αντικείμενα. Η τεχνική αυτή αποδίδει υψηλότερο οπτικό ρεαλισμό από τις άλλες μεθόδους rendering, αλλά με μεγαλύτερο υπολογιστικό κόστος.

116. Γιατί είναι απαραίτητος ο φωτισμός της σκηνής; Περιγράψτε τρεις τρόπους με τους οποίους μπορεί να επιτευχθεί το παραπάνω.

Ο ακριβής φωτισμός μιας σκηνής είναι αυτός που θα αποδώσει το ποσοστό του τελικού φωτορεαλισμού μιας εικόνας (render) ή και το επιθυμητό οπτικό αποτέλεσμα. Συνήθης φωτισμός είναι αυτός των τριών σημείων που χρησιμοποιεί τρία φώτα που ονομάζονται βασικό φως (key light), φως γεμίσματος (fill light) και το οπίσθιο φως (back light).

Η χρησιμοποίηση μιας πηγής φωτός (Directional Light ) προσομοιώνοντας το φως του ήλου. HDRI lighting είναι η τεχνική κατά την οποία δημιουργούμε ένα θόλο (dome) γύρω από τη τρισδιάστατη σκηνή ή αντικείμενο προσδίδοντας υλικό μια εικόνα περιβάλλοντος εικόνα περιβάλλοντος (π.χ .ουρανός) με αποτέλεσμα η σκηνή να φωτιστεί, χρωματιστεί και να αντανακλά ανάλογα με την εικόνα αυτή.

117. Τι είναι τα function curves (στα προγράμματα τρισδιάτατης απεικόνισης) και που χρησιμεύουν;

Οι καμπύλες λειτουργιών (function curves) είναι επεξεργάσιμες καμπύλες (σφήνες) που αντιπροσωπεύουν τις τιμές κινούμενων εικόνων σε μορφή γραφήματος γραμμής. Παρέχουν έναν πολύτιμο τρόπο τόσο για την οπτικοποίηση όσο και για την επεξεργασία των κομματιών κινούμενων εικόνων. Με την εμφάνιση της καμπύλης λειτουργίας, μπορoύμε πραγματικά να δούμε τα χαρακτηριστικά της κινούμενης εικόνας καθώς αλλάζουν με την πάροδο του χρόνου. Η απότομη καμπύλη υποδεικνύει την ταχύτητα ενός αντικειμένου στη σκηνή. Αν η καμπύλη είναι βαθιά, το αντικείμενο επιταχύνει. Εάν η καμπύλη ισιώνει, το αντικείμενο επιβραδύνει.

118. Τι είναι το UV Mapping;

Αφού έχουµε δηµιουργήσει το βασικό πλέγµα του µοντέλου µας πρέπει ύστερα να δηµιουργήσουµε µια δισδιάστατη αναπαράσταση του. Αυτό γίνεται µε µια διαδικασία που λέγεται UV-χαρτογράφηση (UV-mapping). Τα αρχικά της "U" και "V" στην ουσία καθορίζουν τις μεταβλητές των δύο αξόνων που προβάλλεται η εικόνα μιας και οι μεταβλητές "X", "Y" και "Ζ" είναι ήδη δεσμευμένα για τις αναπαραστάσεις των σημείων που αποτελούν το τρισδιάστατο μοντέλο. Αυτή η δισδιάστατη αναπαράσταση θα χρησιµοποιηθεί στην συνέχεια για να δωθεί υφή(texture) στο µοντέλο µας αλλά και για άλλες οπτικές του βελτιώσεις.

119. Τι είναι το Diffuse Map και ποια η διαφορά του από το Texture Map;

Το diffuse δίνει την αντανάκλαση ή διάχυση του φωτός και του χρώµατος σε πολλές γωνίες. Συνήθως µία τιµή για όλο το αντικείµενο είναι αρκετή, αλλά µπορεί να χρησιµοποιηθεί map για να σκουρύνουν κάποια σηµεία του αντικειµένου. Η ανάκλαση αυτή δεν είναι γυαλιστερή

120. Τι είναι το Bump Map;

Είναι υφές που αποθηκεύουν μια "ένταση", το σχετικό ύψος των pixel από το σημείο θέασης της κάμερας. Τα pixel φαίνεται ότι κινούνται από την απαιτούμενη απόσταση στην κατεύθυνση της επιφάνειας. Μπορείτε να χρησιμοποιήσετε είτε εικόνες στη κλίμακα του γκρι είτε την ένταση των τιμών από την Υφή-RGB (συμπεριλαμβανομένου και εικόνων).

121. Τι είναι το Opacity Map;

Ο Opacity map/χάρτης υφής αδιαφάνειας καθορίζει την αδιαφάνεια του υλικού µε βάση την ένταση του χρώµατος της απεικόνισης. Επιλέγοντας µία εικόνα ως χάρτη αδιαφάνειας µπορούµε να καταστήσουµε ένα αντικείµενο µερικώς ή πλήρως διαφανές. Οι τιµές της κλίµακας του γκρι σε αυτόν τον χάρτη υφής καθορίζουν την αδιαφάνεια του υλικού, Οι τιµές του λευκού δηµιουργούν απόλυτη αδιαφάνεια ενώ οι τιµές του µαύρου προσφέρουν απόλυτη διαφάνεια και διατηρούν τη µορφή του texture.

122. Tι είναι η τεχνική extrude και πώς μπορεί να αξιοποιηθεί;

Η τεχνική Extrude µπορεί να ανυψώσει ένα πολυγωνικό αντικείµενο κάθετα προς την επιφάνειά του, όπως, για παράδειγµα, η δηµιουργία ενός κυλίνδρου ο οποίος προκύπτει από την ανύψωση ενός κύκλου. Το εργαλείο Extrude Modifier δίνει ύψος σε αντικείµενα δύο διαστάσεων και τα κάνει τρισδιάστατα. Το πρόγραµµα υψώνει το αντικείµενο κάθετα ως προς την βάση του, δηµιουργεί ένα αντίγραφο του spline στην καθορισµένη απόσταση και µετά συνενώνει τα δύο splines.

123. Στην τεχνική του Box Modeling, πoια η διαφορά μεταξύ του Convert to editable poly και πότε του convert to editable mesh; Πότε χρησιμοποιείται το δεύτερο;

Τα αντικείµενα editable mesh αποτελούνται από συνδεδεμένα τριγωνικά faces, ενώ τα editable poly αντικείμενα αποτελούνται από πολύγωνα με περισσότερες πλευρές. Χρησιμοποιούμε Convert to editable poly όταν θέλουμε να επεξεργαστούμε κάποιο μοντέλο σε επίπεδο sub-object. Όταν έχουμε τελειώσει με το μοντέλο και θέλουμε να ελευθερώσουμε μνήμη χρησιμοποιούμε convert to editable mesh.

124. Τι είναι το Specular Map;

Ένας χάρτης Specular καθορίζει τη φωτεινότητα των αντανακλάσεων το αντικείµενο. Μπορούµε να εισάγουµε ασπρόµαυρη bitmap εικόνα (alpha channel). Στα λευκά σηµεία κατά την απόδοση θα φαίνονται οι αντανακλάσεις, θα υπάρχει δηλαδή πλήρη όψη γυαλάδας, ενώ στα µαύρα δεν θα συµβεί τίποτα, ενώ οι ενδιάµεσες τιµές µειώνουν το µέγεθος ενός φωτεινού τόνου.

125. Tι είναι το modifier Lathe; Τι μπορεί να σχεδιαστεί χρησιμοποιώντας το;

Ο τροποποιητής τόρνου - Lathe δημιουργεί ένα αντικείμενο πλέγματος περιστρέφοντας μία καμπύλη spline γύρω από έναν άξονά της. Με τον τροποποιητή αυτό θα μπορούσε να δημιουργηθεί ένα μπουκάλι ή ένα βάζο.

126. Τι είναι το Displacement Mapping;

Οι Displacement maps/χάρτες µετατόπισης µετατοπίζουν τη γεωµετρία των επιφανειών. Το αποτέλεσµα τους είναι παρόµοιο µε το αποτέλεσµα του modifier Displace . Σε αντίθεση µε το Bump map ένας χάρτης µετατόπισης αλλάζει τη γεωµετρία της επιφάνειας. Κάνοντας εφαρµογή της κλίµακας του γκρι (grayscale) του χάρτη που χρησιµοποιείται παράγουν µετατόπιση. Σε µια δυσδιάστατη εικόνα τα φωτεινότερα χρώµατα εξωθούν τη γεωµετρία της επιφάνειας πιο έντονα σε σχέση µε τα σκοτεινότερα και ως αποτέλεσµα έχουν την τρισδιάστατη µετατόπιση της. Η ποσότητα µετατόπισης είναι το ποσοστό της διαγώνιου του κύβου που οριοθετεί το αντικείµενο και περιέχει τον χάρτη. Έτσι, επηρεάζει άµεσα όλες τις επιφάνειες του αντικειµένου. Για παράδειγµα, Εάν κάνουµε scale στο αντικείµενο, τότε αλλάζει µαζί και ο χάρτης µετατόπισης. Ένας χάρτης µετατόπισης µπορεί να εφαρµοστεί εφαρµοστεί άµεσα σε: Bezier patches patches (επιφάνειες (επιφάνειες που έχουν υποστεί υποστεί Bezier), Bezier), Editable Editable meshes (επεξεργάσιµα πλέγµατα), Editable polymeshes (επεξεργάσιµα πολυγωνικά πλέγµατα), NURBS surfaces (επιφάνειες NURBS). Για άλλου είδους γεωµετρικές µορφές, όπως τα primitives, τα extended primitives, τα c primitives, τα compound objects ompound objects κ.τ.λ., για να χρησι κ.τ.λ., για να χρησιµοποιηθεί ο χάρτης µοποιηθεί ο χάρτης µετατόπισης θα πρέπει πρώτα να εφαρµοστεί ο modifier Disp Approx (Displacement Approximation). Μόνο µε αυτόν τον αυτόν τον τρόπο θα υπάρξει µετατόπιση της επιφάνειας του αντικειµένου. Ο modifier Disp Approx εφαρµόζεται σε editable mesh αντικείµενα. Τέλος, οι χάρτες µετατόπισης δεν είναι ορατοί στα viewports εκτός εάν εφαρµοστεί κάποιος Modifier που θα τα εµφανίσει.

127. Δημιουργείστε ένα παράθυρο 300Χ400 (window 300Χ400) σε JAVA, το οποίο θα μπορεί να περιλαμβάνει ένα υπό δημιουργία παιχνίδι.

JFrame jframe = new JFrame("JFrame Size Example");

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jframe.setPreferredSize(new Dimension Dimension(300, 400));

jframe.pack();

jframe.setLocationRelativeTo(null);

jframe.setVisible(true);

128. Περιγράψτε τη χρησιμότητα των μεταβλητών κατά τη δημιουργία παιχνιδιών σε κώδικα JAVA (JAVA Game Variables).

Κατα τη δημιουργία ενος παιχνιού σε κώδικα JAVA, χρησιμοποιούμε τις JAVA Game Variables για να «ξέρουμε» ποια είναι η τρέχουσα κατάσταση του παιχνιδιού.Αυτό μπορεί να περιλαμβάνει το σκορ του παίκτη, τον αριθμό των εχθρικών διαστημικών πλοίων που υπάρχουν ή το που βρίσκονται και τι κάνουν όλα τα αντικείμενα του παιχνιδιού στην οθόνη.

129. Να γραφεί απλό πρόγραμμα με κώδικα σε Java, που να τυπώνει ως αποτέλεσμα στον χρήστη τις λέξεις "I love JAVA Game Programming"

JFrame frame = new JFrame("I love JAVA Game Programming");

JPanel panel = new JPanel();

JLabel label = new JLabel("I love JAVA Game Programming");

panel.add(label);

frame.add(panel);

frame.setVisible (true);

130. Να αναφέρετε τη χρησιμότητα των μεθόδων (methods) στο JAVA Game Programming.

Οι χρησιμοποίηση Java μεθόδων στην ανάπτυξη JAVA Game λογισμικού κρίνεται σκόπιμη για τους εξής λόγους:

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

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

Top-Down programming Ένα πολύ χρήσιμο στυλ προγραμματισμού ονομάζεται "top-down" προγραμματισμός. Αντιμετωπίζουμε ένα μεγάλο πρόβλημα (το "κορυφαίο"), διασπώντας το σε μικρά προβλήματα. Για να το κάνετε αυτό σε ένα πρόγραμμα, γράφετε μια μέθοδο για την επίλυση του μεγάλου προβλήματός σας καλώντας άλλες μεθόδους για να λύσετε τα μικρότερα τμήματα του προβλήματος (Διαίρει και Βασίλευε). Οι μέθοδοι για την επίλυση των απλούστερων προβλημάτων παρομοίως απαιτούν άλλες μεθόδους μέχρι να καταλήξετε σε απλές μεθόδους που λύουν απλά προβλήματα.

Δημιουργία Εννοιολογικών Μονάδων Δημιουργούμε μεθόδους για να κάνουμε κάτι που είναι μια ενέργεια/διεργασία η οποία ενοιολογικά επιλύει ένα τμήμα του προβλήματος, συνθέτοντας τμήμα της λύσης του.

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

131. Ένα παιχνίδι που έχει δημιουργηθεί σε JAVA, συνήθως περιέχει:1) Frame2) Canvas3) GameLoop4) Rendering method5) Update method6) Mouse and Key input Εξηγείστε συνοπτικά τις έννοιες που αναφέρθηκαν, καθώς και τη χρησιμότητά τους.

a) Frame Ένα frame είναι ένα παράθυρο ανώτατου επιπέδου με τίτλο και περίγραμμα. Το μέγεθος του frame περιλαμβάνει οποιαδήποτε περιοχή που έχει οριστεί για τα σύνορα. Οι διαστάσεις της περιοχής των συνόρων μπορούν να ληφθούν χρησιμοποιώντας τη μέθοδο getInsets, ωστόσο, εφόσον αυτές οι διαστάσεις εξαρτώνται από την πλατφόρμα, δεν είναι δυνατή η επίτευξη μιας έγκυρης τιμής εισόδου έως ότου γίνει η εμφάνιση του frame είτε από το πακέτο κλήσης είτε από την εμφάνιση.

b) Canvas Μια κλάση Canvas είναι παράγωγο ή υποκατηγορία της κλάσης Component και όταν τοποθετείται πάνω σε ένα Frame, εμφανίζεται ως κενή περιοχή. Ωστόσο, για το σχεδιασμό γραφικών, μπορεί να χρησιμοποιηθεί οποιαδήποτε άλλη κλάση που προέρχεται από την κλάση Component, για παράδειγμα JPanel ή ακόμα και JTextField ή JButton.

c) GameLoop Ένα GameLoop τρέχει συνεχώς κατά τη διάρκεια του παιχνιδιού. Κάθε στροφή του βρόχου, επεξεργάζεται την είσοδο του χρήστη χωρίς να εμποδίζει, ενημερώνει την κατάσταση του παιχνιδιού και καθιστά το παιχνίδι. Τα GameLoop είναι το βασικό παράδειγμα ενός "παιχνιδιού προγραμματισμού". Κάθε επανάλληψη μέσω του GameLoop προχωράει την κατάσταση του παιχνιδιού κατά κάποιο ποσό. Συγκεκριμένα, εάν μετρήσουμε πόσο γρήγορα ο κύκλος παιχνιδιών κυκλώνει σε πραγματικό χρόνο, παίρνουμε τα "frames ανά δευτερόλεπτο" του παιχνιδιού. Αν το GameLoop κυλάει γρήγορα, το FPS είναι υψηλό και το παιχνίδι κινείται ομαλά και γρήγορα.

d) Rendering Υπάρχουν δύο διαφορετικά είδη rendering: το ενεργό (Active) και το παθητικό (Passive). Ο κώδικας σχεδίασης τοποθετείται σε μια μέθοδο χρώματος και ο κώδικας καλείται σε απάντηση στις αιτήσεις επανακαθορισμού. Αυτά μπορεί να προέρχονται από τον ίδιο τον κώδικα, αλλά μπορεί επίσης να προέρχονται από το λειτουργικό σύστημα ως απόκριση σε γεγονότα όπως αλλαγή μεγέθους ενός παραθύρου ή κλικ σε ένα στοιχείο. To Active Rendering αντί να αφήσει κάποιον άλλο να αποφασίσει πότε να ζωγραφίσει, το πρόγραμμα επαναλαμβάνει συνεχώς την οθόνη σε πολύ σφιχτό while loop. Ενώ αυτό το είδος rendering δεν συνιστάται για εφαρμογές γενικού σκοπού, είναι απαραίτητο για την ανάπτυξη video games.

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

f) Mouse and Key input Στα παιχνίδια υπολογιστή, το πληκτρολόγιο και το ποντίκι είναι οι κύριες μέθοδοι αλληλεπίδρασης με τον υπολογιστή. Το πρόβλημα είναι ότι, ενώ η Java έχει μεγάλη υποστήριξη για αυτές τις συσκευές εισόδου για εφαρμογές GUI, τα παιχνίδια υπολογιστών πρέπει να χειρίζονται την είσοδο λίγο διαφορετικά. Παρόλο που δεν υπάρχουν ενσωματωμένες κλάσεις που να μας δίνουν αυτό που χρειαζόμαστε, μπορούμε εύκολα να δημιουργήσουμε τις δικές μας. Ακόμη, call- back functions μπορούμε να λάβουμε τη διάδραση του χρήστη μέσω του ποντικιού ή του πληκτρολογίου (Mouse and Key input ) και να τα διαχειριζόμαστε τη στιγμή που προκύπτουν.

132. Δημιουργείστε σε JAVA απλό κινούμενο αντικείμενο για το παιχνίδι σας (πχ μπαλάκι του τένις), ορίζοντας πρώτα την αρχική του θέση με x και y και κατόπιν τις επόμενες ανάλογα με την κίνηση που θέλετε να πάρει.

package ball_move;

import javax.swing.WindowConstants;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.util.Scanner;

import javax.swing.JFrame;

import javax.swing.JPanel;

@SuppressWarnings("serial")

public class Ball_Move extends JPanel{

int x = 0;

int y = 0;

private void moveBall(int X, int Y) {

x = X;

y = Y;

}

@Override

public void paint(Graphics g) {

super.paint(g);

Graphics2D g2d = (Graphics2D) g;

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g2d.fillOval(x, y, 30, 30);

}

public static void main(String[] args) throws InterruptedException { int X,Y;

Scanner reader = new Scanner(System.in);

JFrame frame = new JFrame("Sample Frame");

Ball_Move game = new Ball_Move();

frame.add(game);

frame.setSize(300, 400);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

while(true) {

System.out.print("X:");

X= reader.nextInt();

System.out.println();

System.out.print("Y:");

Y= reader.nextInt();

System.out.println();

game.moveBall(X,Y);

game.repaint();

Thread.sleep(10);

}

}

}

133. Αναφέρατε τουλάχιστον τέσσερις τύπους πολυμέσων που μπορούν να εισαχθούν (import) σε μια ιστοσελίδα και εξηγήστε γιατί είναι απαραίτητη η εγκατάσταση ενός πρόσθετου προγράμματος αναπαραγωγής (add-ons) για ορισμένους τύπους πολυμέσων.

Τα πολυμέσα στο διαδίκτυο είναι ήχος, μουσική, βίντεο, ταινίες και κινούμενα σχέδια. Τα πολυμέσα έρχονται σε πολλές διαφορετικές μορφές: a) Εικόνες, b) Μουσική, c) Ήχος, d) Βίντεο, e) Αρχεία, f) Ταινίες, g) Κινούμενα σχέδια και πολλά άλλα. Οι ιστοσελίδες περιέχουν συχνά στοιχεία πολυμέσων διαφορετικών τύπων και μορφών. Στοιχεία πολυμέσων (όπως ήχου ή βίντεο) αποθηκεύονται σε αρχεία πολυμέσων. Ο πιο συνηθισμένος τρόπος για να ανακαλύψουμε τον τύπο ενός αρχείου είναι να εξετάσετε την επέκταση αρχείου. Έτσι, τα αρχεία πολυμέσων έχουν μορφές και διαφορετικές επεκτάσεις όπως: .swf, .wav, .mp3, .mp4, .mpg, .wmv και .a όπως: .swf, .wav, .mp3, .mp4, .mpg, .wmv και .avi.

Τα add-ons είναι απλά μικρά προγράμματα που επεκτείνουν τη λειτουργικότητα ενός προγράμματος περιήγησης. Χρησιμοποιώντας τα add-ons, μπορούμε να κάνουμε το πρόγραμμα περιήγησής πρόγραμμα περιήγησής να χειριστεί μια ποικιλία να χειριστεί μια ποικιλία εργασιών που χωρίς αυτά εργασιών που χωρίς αυτά τα εργαλεία δεν θ τα εργαλεία δεν θα μπορούσε να εκτελέσει. Ένα add-on είναι στην ουσία ένα στοιχείο λογισμικού που προσθέτει μια συγκεκριμένη λειτουργία σε ένα υπάρχον πρόγραμμα υπολογιστή. Τα συνηθισμένα παραδείγματα είναι τα πρόσθετα που χρησιμοποιούνται στα προγράμματα περιήγησης ιστού για την προσθήκη νέων λειτουργιών, όπως μηχανές αναζήτησης, σαρωτές ιών ή η δυνατότητα χρήσης ενός νέου τύπου αρχείου, όπως μια νέα μορφή βίντεο.

Οι δημοφιλέστερες προσθήκες για ένα πρόγραμμα περιήγησης είναι το Adobe Flash Player, το QuickTime Player και το plug - in Java, τα οποία μπορούν να εκκινήσουν μια εφαρμογή Java που έχει ενεργοποιηθεί από τον χρήστη σε μια ιστοσελίδα για την εκτέλεση σε μια χρήστη σε μια ιστοσελίδα για την εκτέλεση σε μια τοπική εικονική μηχανή Java. πική εικονική μηχανή Java.

Οι περιηγητές υποστηρίζουν add-ons για πολλούς λόγους. Μερικοί από τους κύριους λόγους περιλαμβάνουν: - για να επιτρέψει σε third- party developers να δημιουργήσουν δυνατότητες που επεκτείνουν μια εφαρμογή - για να υποστηριχθεί εύκολα η προσθήκη νέων δυνατοτήτων - για να μειωθεί το μέγεθος μιας εφαρμογής - να διαχωριστεί ο πηγαίος κώδικας από μια εφαρμογή λόγω μη συμβατών αδειών λογισμικού.

134. Τι είναι τα keywords, γιατί είναι απαραίτητη η χρησιμοποίηση τους στην δημιουργία μιας ιστοσελίδας και με ποιον τρόπο γίνεται η σωστή επιλογής τους;

Τα keywords είναι οι λέξεις κλειδιά που θα εισάγει κάποιος στις μηχανές αναζήτησης για να βρει αυτό που χρειάζεται. Είναι απαραίτητη η χρησιμοποίηση τους για καλύτερα αποτελέσματα στις μηχανές αναζήτησης ώστε η ιστοσελίδα μας να έχει στοχευμένη αναζήτηση βάση των keywords και να καλύπτει καλύπτει όλους τους κανόνες κανόνες του σωστού SEO (Search (Search Engine Optimization). Η σωστή επιλογή των keywords γίνεται με μια σειρά από εργαλεία που υπάρχουν δωρεάν στο διαδίκτυο αλλά και με μεγάλη έρευνα στις μηχανές αναζήτησης.

135. Τι εννοούμε με τον όρο Search Engine Optimization (SEO); Για ποιον λόγο μια ιστοσελίδα θα πρέπει να εφαρμόζει όλους τους κανόνες που εισάγει η επιστήμη του SEO;

SEO (search engine optimization) είναι, η διαδικασία βελτιστοποίησης μιας ιστοσελίδας με σκοπό την κατάταξη της σε υψηλότερες θέσεις, κατά την παρουσίαση αποτελεσμάτων έρευνας μέσω μηχανών αναζήτησης. Ο κυριότερος λόγος που πρέπει μια ιστοσελίδα να εφαρμόζει όλους τους κανόνες είναι για να εμφανίζεται η ιστοσελίδα μας όσο γίνεται υψηλότερα, στα αποτελέσματα που φέρνουν οι μηχανές αναζήτησης. Όσο υψηλότερη θέση κατέχουμε στις μηχανές αναζήτησης, τόσο περισσότερη επισκεψιμότητα θα έχουμε στην ιστοσελίδα μας.

136. Τί είναι οι εφαρμογές CMS (Content Management systems); Αναφέρατε δύο τουλάχιστον εργαλεία CMS.

Τα Συστήματα Διαχείρισης Περιεχομένου (Content Management Systems, CMS) είναι διαδικτυακές εφαρμογές που επιτρέπουν την online τροποποίηση του περιεχομένου ενός δικτυακού τόπου. Οι διαχειριστές μέσω του διαδικτύου ενημερώνουν το περιεχόμενο στο Σύστημα Διαχείρισης Περιεχομένου, το οποίο είναι εγκατεστημένο σ' ένα διακομιστή. Οι αλλαγές αυτές γίνονται αυτόματα διαθέσιμες πάλι μέσω του διαδικτύου, σε όλους τους επισκέπτες και χρήστες του δικτυακού τόπου. Μερικά εργαλεία CMS είναι: Wordpress, Joomla, Drupal.

137. Ποια η χρησιμότητα του RSS και πώς επιτυγχάνεται η ενσωμάτωση του σε μια ιστοσελίδα τύπου CMS;

Πρόκειται για μια τεχνολογία του Διαδικτύου, η οποία επιτρέπει σε εκατομμύρια χρήστες παγκοσμίως, που επιθυμούν να παρακολουθούν τα αγαπημένα τους websites και blogs να λαμβάνουν ενημερώσεις και φρέσκο περιεχόμενο την στιγμή που δημοσιεύεται κάνοντας απλώς μια εγγραφή στο συγκεκριμένο ιστότοπο από τον οποίο θέλουν να λαμβάνουν ειδοποιήσεις. Η ενσωμάτωση του RSS σε μια ιστοσελίδα τύπου CMS γίνεται απλά με την εγκατάσταση ενός μικρού μέρους λογισμικού(plugin) που έχει δημιουργηθεί για την συγκεκριμένη λειτουργία.

138. Πώς ελέγχουμε την επισκεψιμότητα μιας ιστοσελίδας που δημιουργήθηκε με CMS;

Την επισκεψιμότητα μιας ιστοσελίδας μπορούμε να την ελέγξουμε απλά κατεβάζοντας και εγκαθιστώντας ένα plugin που έχει δημιουργηθεί για αυτόν ακριβώς το σκοπό. Θα πρέπει πρώτα να έχουμε κά έχουμε κάνει έναν λογαριασμό στο Google Analytics έτσι ώστε μόλις κάνουμε εγκατάσταση το plugin δώσουμε τα απαραίτητα και η google να μας στείλει ένα κομμάτι κώδικα που θα πρέπει να τον τοποθετήσουμε στο αντίστοιχο πεδίο στο plugin

139. Ανφέρετε τις διαφορές μεταξύ component, module και plugin.

Plugin: δίνουν τη δυνατότητα να εκτελέσετε τον κώδικα ως απόκριση σε ορισμένα γεγονότα που ενεργοποιούνται/ προκαλούνται από το δικό σας κώδικα.

Components: είναι οι βασικές λειτουργικές μονάδες που παρουσιάζονται σε μια ιστοσελίδα π.χ άρθρα, φόρμες επικοινωνίας, web links κλπ. Παρουσιάζονται συνήθως στο κέντρο του βασικού περιεχομένου ενός δείγματος / πρότυπου (ανάλογα με το πρότυπο).

Module: είναι μια πιο ελαφριά και ευέλικτη επέκταση που χρησιμοποιείται για την απόδοση των σελίδων. Τα module χρησιμοποιούνται για μικρά κομμάτια της σελίδας που είναι γενικά λιγότερο περίπλοκα και μπορούν να φανούν σε διαφορετικά κομμάτια / μέρη.

140. Τι κάνουν τα εργαλεία τύπου filezilla?

FTP (FileTransferProtocol - Πρωτόκολλο μεταφοράς αρχείων) είναι το πρωτόκολλο που χρησιμοποιείται για την απομακρυσμένη μεταφορά αρχείων από έναν υπολογιστή σε έναν server και αντίστροφα μέσω ενός client όπως είναι το FileZilla.

141. Ποιοι τύποι χρηστών υπάρχουν σε μια ιστοσελίδα και ποια τυπικά δικαιώματα έχει ο καθένας;

Οι τύποι χρηστών που υπάρχουν σε μια ιστοσελίδα είναι:

  • Ο διαχειριστής διαχειριστής (administrator (administrator): έχει τον πλήρη έλεγχο όλου του website και φυσικά όλα τα δικαιώματα όπως: την επεξεργασία του περιεχομένου της σελίδας, το ανέβασμα αρχείων, τη δημιουργία νέων σελίδων, να προσθέτει και να αφαιρεί δικαιώματα από τους άλλους χρήστες, αντιγραφή - μετονομασία - διαγραφή μιας σελίδας κλπ.
  • Ο συντάκτης (editor): τα δικαιώματα που του ανήκουν είναι η δημιουργία - επεξεργασία - δημοσιοποίηση - διαγραφή οποιουδήποτε άρθρου ή σελίδας, όπως επίσης και την διαχείριση των κατηγοριών, των links και των tags.
  • Ο συγγραφέας (author): τα δικαιώματα που του ανήκουν είναι η δημιουργία - επεξεργασία - δημοσιοποίηση - διαγραφή των άρθρων τα οποία έχει συντάξει και επίσης μπορεί να ανεβάζει αρχεία και εικόνες. Τέλος μπορεί να επεργαστεί σχόλια που έχουν γίνει στα δικά του άρθρα (posts).
  • Ο συνεργάτης (contributor): τα δικαιώματα που του ανήκουν είναι η δημιουργία και η επεξεργασία των άρθρων που έχει συντάξει ο ίδιος αλλά δεν έχει το δικαίωμα να τα δημοσιοποιήσει. Για να γίνει η δημοσιοποίηση πρέπει να δώσει έγκριση και να το κάνει publish ο ίδιος ο administrator. Μόλις γίνει αυτό, ο contributor χάνει το δικαίωμα της επεξεργασίας του συγκεκριμένου post.
  • Ο συνδρομητής (subscriber): μπορεί μόνο να διαβάσει τα άρθρα στο site, να πλοηγηθεί, να κάνει σχόλια αλλά δεν έχει κανένα δικαίωμα στην επεξεργασία του περιεχομένου του site ή στις ρυθμίσεις του.

142. Τι είναι το ψηφιακό Video; Αναφέρετε ονομαστικά τις γνωστότερες μεθόδους συμπίεσης και αντίστοιχους τύπους ψηφιακών αρχείων video.

Το ψηφιακό video μπορεί να εκληφθεί ως ένα σύνολο στατικών εικόνων που εναλλάσσονται γρήγορα πολλές φορές το δευτερόλεπτο. Συνεπώς το video «κληρονομεί» τα στοιχεία των εικόνων που το αποτελούν (χρωματική και χωρική ανάλυση - color special resolution) και επιπλέον χαρακτηρίζεται από τη συχνότητα εναλλαγής τους (συχνότητα καρέ-frame rate).

Το πρότυπο για την προβολή οποιοδήποτε είδους μη-κινηματογραφικού video είναι 30 καρέ το δευτερόλεπτο, ενώ για film είναι 24- 30 καρέ το δευτερόλεπτο. Συνεπώς η πληροφορία video αποτελείται από 30 ή 24 εικόνες (ή καρέ) κάθε δευτερόλεπτο. Η χρησιμοποίηση της μεθόδου συμπίεσης RLE σε εικόνες που είναι σκίτσα ή σχεδιαγράμματα, κυρίως με αποχρώσεις του γκρι, οδηγεί σε σημαντική μείωση του όγκου τους.

Η RLE μέθοδος είναι πολύ αποτελεσματική για εικόνες με συνεχόμενες περιοχές εικονοστοιχείων που έχουν το ίδιο χρώμα, καθώς τα αντικαθιστά με ένα κωδικό και το πλήθος τους. Tα αρχεία αυτά είναι τα PCX αλλά και πολλές μορφές TIFF.

Η συμπίεση LZW εφαρμόζεται σε περισσότερο σύνθετες εικόνες, όπως π.χ. έγχρωμες φωτογραφίες. Εκεί, υπάρχει μεγάλη ποικιλία χρωμάτων, που όμως επαναλαμβάνονται πολλές φορές τα ίδια, άρα, όπως είδαμε στο κεφάλαιο 2.3, η κωδικοποίηση τους με λιγότερα bit φέρνει μεγάλα ποσοστά συμπίεσης. Τέτοια συμπίεση υπάρχει στα αρχεία GIF

Η κωδικοποίηση κωδικοποίηση JPEG (Joint Photographic Expert Group) βασίζεται στην εφαρμογή μιας σειράς πολύπλοκων μαθηματικών μετασχηματισμών στην εικόνα.

Για τη συμπίεση ή την αποσυμπίεση από JPEG χρειάζεται αρκετή υπολογιστική ισχύς, κάτι που παλαιότερα ήταν ιδιαίτερα χρονοβόρα. Σήμερα, που υπάρχουν ισχυροί επεξεργαστές, η κωδικοποίηση JPEG δεν είναι πια πρόβλημα, και έχει το πλεονέκτημα της δυνατότητας επιλογής του ποσοστού συμπίεσης που θέλουμε να επιτύχουμε, με αντίστοιχη επιβάρυνση στην ποιότητα της εικόνας.

143. Τι είναι Component video σήμα;

Η σύνδεση Component χρησιμοποιεί κατά κανόνα τρία καλώδια (τρία βύσματα μορφής RCA - το ένα μεταφέρει την πληροφορία για την φωτεινότητα και τα άλλα δύο για την χρωμ άλλα δύο για την χρωματικότητα) για τη μεταφορά του σήματος της εικόνας και τη συναντούμε σε δύο βασικές παραλλαγές: την RGB και τη YUV.

Στους υπολογιστές οι αναλογικές συνδέσεις εικόνας γίνονται με το πρότυπο RGBHV, το οποίο χρησιμοποιεί 5 καλώδια, από τα οποία τρία χρησιμοποιούνται για τη χρωματική πληροφορία (Red, Green, Blue) και δύο για σήματα συγχρονισμού.

Η σύνδεση Component Video είναι η μόνη αναλογικού τύπου που σας επιτρέπει να έχετε σήμα progressive (εφόσον τον υποστηρίζουν dvd και τηλεόραση). Η σύνδεση Component με καλής ποιότητας καλώδια και σωστή εγκατάσταση φτάνει άνετα τα 70 μέτρα χωρίς ανάγκη ενίσχυσης. Η εμπειρία πάντως δείχνει ότι μια καλή σύνδεση Component με πολύ καλά καλώδια στην πράξη δεν υπολείπεται σε τίποτα από τα DVI, HDMI

144. Τι είναι Composite σήμα video;

Composite video (στα ελληνικά σύνθετο βίντεο) είναι μια μορφή σήματος αναλογικής εικόνας (και μόνο εικόνας) πριν αυτό το σήμα συνδυαστεί με ηχητικό σήμα και διαμορφωθεί σε σήμα μεταφοράς RF. Το Composite video συχνά συναντάται με τα αρχικά CVBS από το «Composite Video Blanking and Sync».

Το Composite video μεταφέρει τα τυπικά συστήματα εικόνας, όπως NTSC, PAL και SECAM. Είναι η σύνθεση (εξού και ονομάζεται σύνθετο video) τριών πηγών σημάτων εικόνας που ονομάζονται Y, U και V (μαζί αναφέρονται ως YUV) με παλμούς συγχρονισμού (sync). Το σήμα Y αντιπροσωπεύει την φωτεινότητα (luminance) της εικόνας με παλμούς συγχρονισμού (sync). Το σήμα Y από μόνο του θα μπορούσε να εμφανίσει μια μονόχρωμη εικόνα. Τα σήματα U και V αντιπροσωπεύουν την χροιά και τον κορεσμό (συνολικά chrominance) και μεταφέρουν τις πληροφορίες χρώματος. Το σήμα Y συνδυάζεται με τα σήματα UV και έχουμε το σύνθετο βίντεο που μεταφέρει την έγχρωμη έγχρωμη εικόνα.

Οι περισσότερες καταναλωτικές αναλογικές συσκευές εικόνας ενσωματώνουν έξοδο composite video. Σε πολλές συσκευές υπάρχει και η δυνατότητα διαμόρφωσης του composite και σε RF (με εσωτερικό διαμορφωτή - modulator) ώστε να μπορούν να απεικονίσουν εικόνα και ήχο στις συχνότητες VHF ή UHF των τηλεοπτικών συσκευών.

Η μεταφορά του composite video γίνεται συνήθως με ένα βύσμα RCA που για ευκολία αναγνώρισης από τα άλλα σήματα που μεταφέρουν τα RCA είναι κίτρινου χρώματος. (το κόκκινο βύσμα RCA μεταφέρει το δεξί και το άσπρο το αριστερό κανάλι ήχου).

Σε επαγγελματικές συσκευές το composite video μεταφέρεται με ομοαξονικά καλώδια, βύσματα και υποδοχές BNC. Στην Ευρώπη, ή σύνδεση SCART χρησιμοποιείται συχνότερα από τις συνδέσεις RCA (και σε μικρότερο βαθμό η σύνδεση S-Video), και έτσι το σήμα RGB που μεταφέρεται με το SCART χρησιμοποιείται για συνδέσεις υπολογιστών, κονσόλες βιντεοπαιχνιδιών, και DVD players αντί για το com players αντί για το composite video.

145. Περιγράψτε τις διαφορές μεταξύ των σημάτων VGA και Βίντεο.

VGA(Video Graphis Array). Είναι σύνδεση αναλογικού τύπου, 15 ακροδεκτών, η οποία υπάρχει από την εποχή των οθονών CRT. Διαθέτει 3 ζεύγη αγωγών, ένα για κάθε βασικό χρώμα (κόκκινο, πράσινο, μπλέ), καθώς και επιπλέον αγωγούς για τα σήματα κατακόρυφου και οριζόντιου συγχρονιμού των πλαισίων της εικόνας. Σε κάθε ένα από τα ζευγάρια αγωγών που μεταφέρουν αυτά τα σήματα, υπάρχει ηλεκτρικό σήμα με τάση που αυξομειώνεται ανάλογα με την ένταση του αντίστοιχου χρώματος. Επειδή όμως οι οθόνες LCD λειτουργούν με ψηφιακό τρόπο, χρησιμοποιούν μετατροπέα αναλογικού σε ψηφιακό σήμα, προκειμένου να μπορέσουν να αξιοποιήσουν τα αναλογικά σήματα της υποδοχής VGA. Αντίστοιχα, το κύκλωμα γραφικών του υπολογιστή έχει ήδη μετατρέψει την ψηφιακή πληροφορία εικόνας σε αναλογική, όπως απαιτεί το πρότυπο VGA.

Υποδοχή DVI-D (Digital Video Interface). Είναι ψηφιακή σειριακή σύνδεση, 19 ακροδεκτών, η οποία κερδίζει συνεχώς έδαφος σε βάρος της VGA. Κι εδώ η οπτική πληροφορία μεταφέρεται από 3 ζεύγη αγωγών που μεταφέρουν τα βασικά χρώματα, όμως το ηλεκτρικό σήμα έχει δύο μόνο δυνατές στάθμες, φέροντας έτσι η πληροφορία είναι κωδικοποιημένη στο δυαδικό σύστημα. Σε κάθε ένα από τα τρία αυτά ζεύγη αγωγών χρώματος αντιστοιχεί ένας ζεύγος αγωγών με σήμα χρονισμού (clock). Το πλεονέκτημά της DVI-D είναι ότι δεν υπάρχουν απώλειες ποιότητας σε μετατροπές από αναλογικό σε ψηφιακό σήμα και αντίστροφα, καθώς η ροή πληροφορίας από το κύκλωμα γραφικών του υπολογιστή μέχρι το κύκλωμα οδήγησης των υγρών κρυστάλλων είναι καθαρά ψηφιακή.

146. Ποια είναι τα βασικά μέρη του ψηφιακού βίντεο;

VIDEO FRAME RATES. Είναι ο αριθμός των καρέ που απαρτίζουν ένα βίντεο ώστε το ανθρώπινο μάτι να είναι ικανό να αντιληφθεί την κίνηση.

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

RGB ΧΡΩΜΑ ΚΑΙ ΒΑΘΟΣ BIT. Μια έγχρωμη εικόνα είναι συνδυασμένη από τρία βασικά χρώματα το κόκκινο, το πράσινο και το μπλε αυτά τα τρία χρώματα μας παρέχουν με εκατομμύρια διαφορετικούς συνδυασμούς.

ΣΥΜΠΙΕΣΗ. Όσο μεγάλο είναι το μέγεθος των καρέ τόσο μεγαλύτερο είναι το βάθος των bit τόσο αυξάνονται τα καρέ ανά δευτερόλεπτο το οποίο σημαίνει ότι είναι καλύτερη η ποιότητα του βίντεο

147. Σε τι διαφέρει το Video από το Animation και ποιο κοινό χαρακτηριστικό έχουν;

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

Οι ουσιαστικές διαφορές τους είναι:

  • Ένα βίντεο δημιουργείται δημιουργείται χρησιμοποιώντας χρησιμοποιώντας βιντεοκάμερα, βιντεοκάμερα, κινητό ή κινηματογραφική κινηματογραφική κάμερα και δεν απαιτείται προετοιμασία και μπορεί κανείς να χρησιμοποιήσει μόνο τη φωτογραφική μηχανή και να αρχίσει να φωτογραφίζει οποιοδήποτε αντικείμενο, ακίνητο ή κινούμενο με τη φωτογραφική μηχανή.
  • Το animation animation δημιουργείται δημιουργείται από έναν γελοιογράφο γελοιογράφο ή έναν καλλιτέχνη καλλιτέχνη που σχεδιάζει σχεδιάζει μια σειρά απεικονίσεων σε διαφορετικές γωνίες που τροφοδοτούνται σε έναν υπολογιστή για να τις μετατρέψουν σε λειτουργία βίντεο που προσθέτει μουσική ή φωνές. Η δημιουργία κινούμενων εικόνων είναι πιο δύσκολη από τη δημιουργία ενός βίντεο, αλλά μόλις μετατραπεί σε βίντεο, δεν υπάρχει ουσιαστικά καμία διαφορά μεταξύ των δύο.

148. Εξηγήστε τις διαφορές μεταξύ γραμμικής (linear) και μη γραμμικής (non linear) επεξεργασίας video.

Παλαιότερα υπήρχε διάκριση σε γραμμική (linear) και μη γραμμική (non-linear) επεξεργασία βίντεο. Η πρώτη μορφή χρησιμοποιούνταν στο μη αναλογικό βίντεο, όπου η επεξεργασία γινόταν με χρήση μηχανημάτων, που επεξεργάζονταν όλη τη μαγνητική ταινία, που περιείχε το βίντεο, από την αρχή έως το τέλος του.

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

149. Πότε χρησιμοποιούνται οι λειτουργίες προεπισκόπηση (preview video) και σύλληψη (capture video), κατά την επεξεργασία ψηφιακού video;

Με τον όρο «σύλληψη» (capture) αναφερόμαστε στον τρόπο με τον οποίο καταφέρνουμε να εγγράψουμε το ψηφιακό βίντεο σε κάποιο μέσο. Ένας τρόπος είναι η μετατροπή του αναλογικού βίντεο σε ψηφιακό, σύμφωνα με τους τρόπους τρόπους που μελετήσαμε στο τέλος της προηγούμενης προηγούμενης ενότητας. Ο άλλος τρόπος είναι με χρήση προφανώς κάποιας κάμερας, που μπορεί να συλλάβει και να εγγράψει σε κάποιο μέσο το ψηφιακό βίντεο. Η προεπισκόπηση χρησιμοποιείται για μια προτεινόμενη επιλογή χαρακτηριστικών πλάνων και καρέ, η οποία επιτρέπει την εύκολη και ταχεία πλοήγηση σε μεγάλες βάσεις δεδομένων οπτικοακουστικού υλικού και αποτελεί ισχυρό εργαλείο εξαγωγής περίληψης. Για παράδειγμα, έχει παρατηρηθεί έχει παρατηρηθεί ότι μία ακολουθία βίντεο διάρκειας 30 λεπτών αποτελείται συνήθως από 200 πλάνα. Επομένως, επιλέγοντας κατά μέσο όρο πέντε χαρακτηριστικά καρέ από κάθε πλάνο, απαιτούνται μόνο 1,000 από τα 45,000 συνολικά καρέ για την αναπαράσταση του οπτικού περιεχομένου.

150. Τι είναι τα "Transition Effect" σε ένα πρόγραμμα επεξεργασίας video; Δώστε ένα παράδειγμα.

Εφέ μετάβασης (transition effects) ονομάζονται οι τρόποι αλλαγής μεταξύ των πλάνων μιας ταινίας. Από παλιά οι μοντέρ χρησιμοποιούσαν διάφορες μεθόδους για να αλλάξουν πλάνο, όπως το απλό κόψιμο (cut), το σβήσιμο ενός πλάνου μέσα στο επόμενο, η εναλλαγή με μαύρο φόντο, κ.λ.π. Τα σύγχρονα προγράμματα είναι εξοπλισμένα με πολλές θεαματικές μεταβάσεις, οι οποίες μπορούν να χρησιμοποιηθούν και να εντυπωσιάσουν. Οι μεταβάσεις πρέπει να ακολουθούν το πνεύμα της ταινίας και να μην μπερδεύουν το θεατή ή να του αποσπούν την προσοχή από την αφήγηση. Για παράδειγμα, μετά την έξοδο από μία αίθουσα κινηματογράφου αυτό που μένει στο θεατή είναι η πλοκή και σπανιότατα το εφέ κάποιας μετάβασης πλάνων. Η αλόγιστη χρήση εφέ μετάβασης έχει σαν αποτέλεσμα μια κουραστική και βαρετή για το θεατή ταινία και στη χειρότερη περίπτωση μπορεί να τον μπερδέψει. Απαιτείται αίσθηση μέτρου και λογικής. Στο παρελθόν έχει αποδειχτεί πολλές φορές ότι ένας κακός μοντέρ μπορεί να καταστρέψει έναν καλό σκηνοθέτη, ενώ ένας καλός συνάδελφός του μπορεί να σώσει μια αδιάφορη ταινία.

151. Εξηγήστε τη λειτουργία των εργαλείων trimming (ψαλίδισμα) και cropping (ξάκρισμα), κατά την επεξεργασία μοντάζ ψηφιακού video.

Κατά την επεξεργασία μοντάζ ψηφιακού video συχνά χρειάζεται να ψαλιδιστούν (trimming) οι ουρές των πλάνων στην αρχή και το τέλος ενός clip, γιατί συνήθως περιέχουν περιττό υλικό. Άλλες φορές ενδιαφέρει μόνο ένα συγκεκριμένο μέρος του κλιπ και όχι το σύνολό του, οπότε χρειάζεται να κοπεί το clip στα σημεία που ενδιαφέρουν και πεταχτεί το υπόλοιπο από τη γραμμή Timeline. Το ξάκρισμα (cropping) είναι η αφαίρεση ανεπιθύμητων περιοχών από ένα clip. Εκτελείται προκειμένου να αφαιρεθεί ένα ανεπιθύμητο θέμα ή άσχετες λεπτομέρειες από το clip, να αλλάξει ο λόγος διαστάσεων ή να βελτιωθεί η συνολική σύνθεση

152. Τι είναι ο υπέρτιτλος (Superimposed clip) στη διαδικασία μοντάζ ψηφιακού video;

Η υπέρθεση υπέρθεση (superimposing) (superimposing) περιγράφει τη διαδικασία της επικάλυψης και του συνδυασμού πολλαπλών εικόνων. Τα video clips είναι εντελώς αδιαφανή από προεπιλογή, αλλά η επικάλυψή τους απαιτεί διαφάνεια. Όταν κάνουμε διαφανή τα clips σε layers που βρίσκονται πιο πάνω στην ιεραρχία του timeline, αποκαλύπτονται clips από layers πιο χαμηλά στην ιεραρχία. Ο υπέρτιτλος είναι ένα clip το οποίο -συνήθως- περιέχει διαφάνεια και τοποθετείται σε υψηλότερο layer από κάποιο άλλο το οποίο παίζει το ρόλο του φόντου.

153. Να περιγράψετε τα κύρια χαρακτηριστικά ενός ασυμπίεστου ψηφιακού αρχείου video.

Τα κύρια χαρακτηριστικά ενός ασυμπίεστου ψηφιακού αρχείου video είναι τα εξής:

Ανάλυση: η οριζόντια και κάθετη διάσταση της εικόνας (pixels)

Αριθμός πλαισίων ανά δευτερόλεπτο ή αλλιώς συχνότητα πλαισίων: ο αριθμός των διαφορετικών καρέ (εικόνων-frames) που προβάλλονται ανά δευτερόλεπτο(fps)

Χρονική διάρκεια: ο χρόνος που ο χρόνος που διαρκεί η προβολή του βίντεο (δευτερόλεπτα).

Λόγος πλευρών: αναφέρεται στον λόγο της οριζόντιας διάστασης προς την κάθετη διάσταση.

Ρυθμός μεταφοράς bit: τα δεδομένα που περιέχονται σε ένα δευτερόλεπτο ενός αρχείου ή μιας ροής βίντεο (bit ανά δευτερόλεπτο).

154. Τι είναι κωδικοποιητής ψηφιακών αρχείων video πραγματικού χρόνου (real time video encoders);

Ένας κωδικοποιητής ψηφιακών αρχείων αρχείων video πραγματικού χρόνου επιτρέπει επιτρέπει μετατροπή ή την επεξεργασία video από μια μορφή σχηματισμού ή δομής δεδομένων σε άλλη δομή μορφής ή δεδομένων όπου η διαδικασία λαμβάνει χώρα αμέσως ή μέσα σε πολύ μικρό χρονικό διάστημα μετά τη διάθεση των video για μετατροπή.

155. Περιγράψτε την τεχνική συμπίεσης ψηφιακού video MPEG.

Η συμπίεση της εικόνας βασίζεται κυρίως στη χρονική συμπίεση, δηλαδή τις ομοιότητες των καρέ του βίντεο. Τα περισσότερα από τα 30 καρέ, που μπορεί να περιέχει το βίντεο ανά δευτερόλεπτο, είναι όμοια μεταξύ τους. Στη χρονική συμπίεση των δεδομένων, η τεχνική MPEG αρχικά ταξινομεί τα πλαίσια σε τρεις κατηγορίες: τα ενδοκωδικοποιημένα καρέ (Iframes), τα προβλεπόμενα καρέ (Pframes) και τα αμφίδρομα καρέ (B-frames).

Ένα I-frame (intra-coded) είναι στην ουσία μια πλήρης εικόνα, ενώ παίζει τον ρόλο του σημαντικού καρέ στη δημιουργία της ακολουθίας των εικόνων. Οι άλλοι τύποι καρέ βασίζονται στα προηγούμενα και στα επόμενα καρέ και έτσι διατηρούν μόνο τμήμα των πληροφοριών τους, επιτυγχάνοντας με αυτό τον τρόπο τη συμπίεση του βίντεο.

Ένα P-frame (predicted) αποθηκεύει πληροφορίες μόνο για τις αλλαγές στην εικόνα σε σχέση με το προηγούμενο καρέ. Δηλαδή το P-frame, μπορεί να βασιστεί στο προηγούμενο καρέ. Έτσι, αποθηκεύονται τελικά μόνο οι πληροφορίες για τα διαφορετικά pixels.

Ένα B-frame (Bi- predictive) μπορεί predictive) μπορεί να δημιουργηθεί από το προηγούμενο και το επόμενο καρέ.

156. Περιγράψτε τα τυπικά βήματα της διαδικασίας Μοντάζ για την παραγωγή ενός ψηφιακού αρχείου video με τη χρήση ενός εργαλείου επεξεργασίας video (πχ. Premiere).

1. Απόκτηση video

2. Αναγνώριση και εισαγωγή δεδομένων (capture)

3. Οργάνωση video clips

4. Κατασκευή και επεξεργασία timeline

5. Effects - Transitions

6. Τίτλοι - Γραφικά

7. Επεξεργασία ήχου

8. Εξαγωγή επεξεργασμένου video c 8. Εξαγωγή επεξεργασμένου video clip σε κατάλληλη μ lip σε κατάλληλη μορφή

157. Υπολογίστε το μέγεθος σε Kbytes από τον αποθηκευτικό χώρο ενός σκληρού δίσκου που δεσμεύεται κατά τη σύλληψη ασυμπίεστου ψηφιακού video χωρίς ήχο από βιντεοσυσκευή με σύνθετο βιντεοσήμα PAL, διάρκειας 2 λεπτών, με διαστάσεις 320 x 240 εικονοστοιχείων και βάθος χρώματος 16bit.

320*240=76800

76800*25=1920000

1920000*2 =3840000 bytes

3840000 * 120 = 460800000 bytes = 450000Kb

158. Αναφέρατε τους τύπους των symbols που υπάρχουν στο Flash και τα χαρακτηριστικά του κάθενος από αυτούς.

Υπάρχουν τρία είδη συμβόλων: Graphic, Button και Movie clip.

Graphic Είναι το πιο βασικό είδος συμβόλου. Τα σύμβολα γραφικών είναι τα λιγότερο ευέλικτα σύμβολα, επειδή δεν υποστηρίζουν ActionScript και δεν μπορείτε να εφαρμόσετε φίλτρα ή λειτουργίες ανάμειξης. Ωστόσο, είναι χρήσιμα όταν θέλετε να συγχρονιστεί μια κινούμενη εικόνα μέσα σε ένα γραφικό σύμβολο στην κύρια Timeline.

Button Τα κουμπιά χρησιμοποιούνται σε μια εφαρμογή για να προσθέσουν διαδραστικότητα (interactivity) με το χρήστη. Ένα κουμπί μπορεί να αποτελείται από ένα μέχρι τέσσερα καρέ (key-frames) τα οποία ονομάζονται Up, Over, Down και Hit. Τα τρία πρώτα καρέ αντιστοιχούν στις τρεις διαφορετικές καταστάσεις (states) που μπορεί να έχει το κουμπί. Οι καταστάσεις αυτές εξαρτώνται από τη θέση και την κατάσταση του δείκτη (pointer) Το τέταρτο καρέ ορίζει την ενεργή περιοχή του κουμπιού και ονομάζεται Hit state. Οι τρεις καταστάσεις (states) ενός κουμπιού είναι: Up state (Όταν ο δείκτης βρίσκεται εκτός της ενεργής περιοχής του κουμπιού) Over state (Όταν ο δείκτης βρίσκεται επάνω στην ενεργή περιοχή του κουμπιού) Down state (Όταν ο δείκτης είναι πατημένος επάνω στην ενεργή περιοχή του κουμπιού) 

Movie clip Το movie clip είναι ένα μικρό movie το οποίο μπορεί να ενσωματωθεί σε ένα άλλο πιο μεγάλο movie. Κάθε movie clip έχει το δικό του timeline και το δικό του FrameRate και μπορεί να επεξεργαστεί όπως ένα κανονικό movie. Για να κρατήσει το δικό του FrameRate ένα movie clip πρέπει να φορτωθεί με την εντολή loadMovie. Σε διαφορετική περίπτωση το movie clip θα τρέξει με το FrameRate του movie στο οποίο έχει φορτωθεί ή έχει φιλοξενηθεί. Όταν δημιουργήσετε ένα movie clip μπορείτε να το αποθηκεύσετε στη βιβλιοθήκη και με μεταφορά και απόθεση (drag and drop) να παίρνετε όσα αντίγραφα θέλετε. Σε κάθε αντίγραφο (instance) μπορείτε να δώσετε ένα ξεχωριστό όνομα, έτσι ώστε να μπορείτε να διακρίνετε το ένα από το άλλο όταν χρειαστεί να αναφερθείτε σε ένα από αυτά μέσα από κάποια εντολή της ActionScript. Κάθε movie clip μπορεί να θεωρηθεί σαν αντικείμενο και σαν αντικείμενο έχει χαρακτηριστικά (properties) και λειτουργίες (methods). Τα χαρακτηριστικά αυτά και τις λειτουργίες μπορείτε να τις διαχειριστείτε προγραμματιστικά μέσα από την ActionScript για τη δημιουργία πιο σύνθετων εργασιών.

159. Αναφέρατε τα πεδία του classic text που μπορούν να δημιουργηθούν από την εργαλειοθήκη του Flash και σε ποιες περιπτώσεις χρησιμοποιούνται.

Τα πεδία του classic text είναι τα static, dynamic και input

Static: Εμφανίζουν κείμενο που δεν αλλάζει δυναμικά.

Dynamic: Το κείμενο που εμφανίζεται ενημερώνεται δυναμικά. Θα μπορούσε να εμφανίζει την τρέχουσα ημερομηνία ή το score σε κάποιο παιχνίδι. Input: Επιτρέπει στους χρήστες να εισάγουν κείμενο. Χρήσιμο σε φόρμες ή έρευνες.

160. Ποιες οι διαφορές μεταξύ keyframe, blanc keyframe και frame στο flash;

Το frame είναι η μικρότερη μονάδα μεταβολής ενός αντικειμένου ή ενός συμβόλου στο timeline μιας ταινίας. Στις συμβατικές κινηματογραφικές ταινίες, το frame είναι μία από τις αναρίθμητες στατικές φωτογραφίες, οι οποίες, όταν προβάλλονται διαδοχικά και με τη σωστή ταχύτητα, δίνουν την αίσθηση της κίνησης. Τα keyframes είναι τα σημεία στα οποία μπορούμε να ορίσουμε εμείς οποιαδήποτε μεταβολή, όπως την αλλαγή του μεγέθους ή της πορείας ενός αντικειμένου και μετά να πούμε στο Flash να δημιουργήσει αυτόματα μόνο του τα ενδιάμεσα frames ανάμεσα στα keyframes. Η διαφορά μεταξύ της εισαγωγής ενός keyframe ή ενός blank keyframe είναι αν το Flash αντιγράφει ή όχι το περιεχόμενο του προηγούμενου keyframe στο νέο.

161. Σε λευκό stage στο flash διαστάσεων 800*600px υπάρχει ένα μπλε τετράγωνο διαστάσεων 400*400px, το οποίο βρίσκεται στο σημείο 400,300 του stage. Περιγράψτε σχηματικά τι θα δει ο χρήστης όταν το movie γίνει publish.............................................................

162. Τι είναι τα code snippets;

Τα code snippets είναι έτοιμα αποσπάσματα κώδικα που χρησιμοποιείται συχνά. Είναι ένας καλός τρόπος εκμάθησης τρόπος εκμάθησης κώδικα. Ο χρήστης μπορεί επίσης να δημιουργήσει το μπορεί επίσης να δημιουργήσει το δικό του κομμάτι κώδικα και να το αποθηκεύσει σαν snippet με σκοπό την επαναχρησιμοποίησή του.

163. Πότε χρησιμοποιείται η εντολή trace bitmap;

Η εντολή trace bitmap χρησιμοποιείται όταν θέλουμε να μετατρέψουμε ένα Bitmap γραφικό σε διανυσματικό.

164. Ποια η διαφορά μεταξύ symbol και instance;

Το symbol είναι ένα γραφικό,ένα κουμπί ή ένα movie clip που δημιουργείται μία φορά στο Flash και μπορεί να επαναχρησιμοποιηθεί σε όλο το έγγραφό σας ή σε άλλα έγγραφα. Όλα τα σύμβολα αποθηκεύονται στην Βιβλιοθήκη. Το instance είναι ένα αντίγραφο ενός symbol που βρίσκεται στο Stage.

165. Πού βρίσκεται και πώς λειτουργεί το εργαλείο onion skin στο flash;

Με την λειτουργία onion skin, έχουμε την δυνατότητα να βλέπουμε ταυτόχρονα τα περιεχόμενα σε περισσότερα από ένα καρέ την φορά. Βρίσκεται στο περισσότερα από ένα καρέ την φορά. Βρίσκεται στο κάτω μέρος του timeline. τω μέρος του timeline. Για να εμφανίσουμε πολλαπλά καρέ χρησιμοποιώντας την λειτουργία Onion Skin, στο διάγραμμα ροής χρόνου κάνουμε κλικ στο πλήκτρο Onion Skin. Θα εμφανισθεί ένα ζευγάρι από ενδείκτες δίπλα στην κεφαλή αναπαραγωγής στο διάγραμμα ροής χρόνου. Το περιεχόμενο όλων των καρέ ανάμεσα στους δύο ενδείκτες εμφανίζεται τώρα στο σκηνικό και ορισμένα απ' αυτά τα καρέ είναι πριν από το τρέχον, ενώ μερικά είναι μετά. Σ' αυτή την κατάσταση είναι επεξεργάσιμα μόνο τα περιεχόμενα του τρέχοντος καρέ και το περιεχόμενο των μη - επεξεργάσιμων καρέ εμφανίζεται αμυδρό. Μπορούμε να σύρουμε την κεφαλή αναπαραγωγής για να ξεφυλλίσουμε κι άλλα καρέ. Πρέπει να έχουμε υπόψη μας ότι δεν μπορούμε να βλέπουμε το περιεχόμενο των κλειδωμένων ή αόρατων επιπέδων όταν χρησιμοποιούμε την λειτουργία Onion Skin. Για να εμφανίσουμε τα καρέ σαν περιγράμματα με την λειτουργία Onion Skin, στο διάγραμμα ροής χρόνου κάνουμε κλικ στο πλήκτρο Onion Skin Outlines. Όλο το περιεχόμενο των καρέ εκτός από το τρέχον εμφανίζεται σαν περίγραμμα. Μπορούμε να αναθέσουμε διαφορετικό χρώμα περιγράμματος σε κάθε επίπεδο για να μπορούμε να προσδιορίσουμε σε ποιο επίπεδο θέλουμε να κάνουμε αλλαγές. Κανονικά, όταν χρησιμοποιούμε την λειτουργία Onion Skin μπορούμε να τροποποιήσουμε μόνο το περιεχόμενο του τρέχοντος καρέ. Για να κάνουμε επεξεργάσιμα πολλαπλά καρέ, στο διάγραμμα ροής χρόνου κάνουμε κλικ στο πλήκτρο Edit Multiple Frames, οπότε γίνεται επεξεργάσιμο το περιεχόμενο όλων των καρέ που βρίσκονται ανάμεσα στους δύο ενδείκτες της λειτουργίας Onion Skin. Πρέπει να έχουμε υπόψη μας ότι μπορούμε να τροποπ έχουμε υπόψη μας ότι μπορούμε να τροποποιούμε μόνο οιούμε μόνο τα καρέ τα καρέ-κλειδιά σ' αυτή την κατάσταση. Χρησιμοποιούμε του ενδείκτες της λειτουργίας Onion Skin για να καθορίζουμε την περιοχή των καρέ που μπορούμε να ξεφυλλίζουμε και μπορούμε να αλλάζουμε τις θέσεις τους σύμφωνα με τις ανάγκες μας. Μπορούμε να προσαρμόζουμε τις θέσεις των ενδεικτών χειρωνακτικά ή μέσω των μενού. Για να μετακινήσουμε τους ενδείκτες χειρωνακτικά, κάνουμε κλικ στη λαβή ενός ενδείκτη και τον σύρουμε στη νέα επιθυμητή θέση. Για να τροποποιήσουμε τους ενδείκτες με το μενού, κάνουμε κλικ στο πλήκτρο Modify Onion Markers στο διάγραμμα ροής χρόν Markers στο διάγραμμα ροής χρόνου και θα εμφανισθεί ου και θα εμφανισθεί ένα μενού συντόμευσης με τις ε ένα μενού συντόμευσης με τις εξής επιλ ξής επιλογές : ● Always Show Markers, οι ενδείκτες της λειτουργίας Onion Skin θα είναι πάντα ορατοί, ανεξάρτητα από το αν είναι ενεργή η λειτουργία αυτή. ● Anchor Onion, σταθεροποιεί ή κλειδώνει τους ενδείκτες της λειτουργίας Onion Skin στην τρέχουσα θέση τους, πράγμα που σημαίνει ότι θα παραμείνουν στατικοί αντί να διατηρούν τη σχετική τους θέση ως προς την κεφαλή αναπαραγωγής. ● Onion 2, ορίζει τους ενδείκτες σε θέσεις δύο καρέ πριν και δύο καρέ μετά από το τρέχον καρέ, δηλ. τη θέση της κεφαλής αναπαραγωγής. ● Onion 5, ορίζει τους ενδείκτες σε θέσεις πέντε καρέ πριν και πέντε καρέ μετά από το τρέχον καρέ. ● Onion All, ξεφυλλίζει όλα τα καρέ της τρέχουσας σκηνής. 166. Ποιος ο ρόλος του frame HIT στο timeline ενός b

166. Ποιος ο ρόλος του frame HIT στο timeline ενός button symbol; Τι πρόβλημα δημιουργείται με κουμπί που περιέχει μόνο κείμενο και πώς το αντιμετωπίζετε;

Το frame HIT στο timeline ενός button symbol ελέγχει την περιοχή στην οποία μπορούμε να κάνουμε κλικ σε ένα κουμπί. Το frame δεν είναι ορατό, οπότε δεν έχει καμία επίδραση στην πραγματική εμφάνιση ενός κουμπιού. Όταν ένα κουμπί που περιέχει μόνο κείμενο υπάρχει κίνδυνος να μην μπορεί ο χρήστης να αλληλεπιδράσει μαζί του επειδή είναι δύσκολο να πετύχει τα pixels του κειμένου με το ποντίκι. Για να λύσουμε αυτό το πρόβλημα δημιουργούμε ένα ορθογώνιο στο frame HIT με μέγεθος όσο το κείμενο.

167. Ποια είδη tweening υπάρχουν στο Flash και ποια είναι τα χαρακτηριστικά τους;

Το tween ορίζεται ως η παραγωγή ή η δημιουργία ενδιάμεσων αντικειμένων ανάμεσα σε δύο διαφορετικές μορφές ενός αντικειμένου: Την αρχική και την τελική. Το Flash μπορεί να κάνει tween στα σχήματα (shapes) και στα σύμβολα (symbols). Στην περίπτωση που η κίνηση γίνεται ανάμεσα σε σχήματα το tween λέγεται shape tween και στην περίπτωση που η κίνηση γίνεται ανάμεσα σε σύμβολα λέγεται motion tween. Άρα υπάρχουν 2 είδη για tween animation. Shape tween και Motion tween. Γενικά, για να δημιουργήσουμε ένα tween, απαιτούνται δύο keyframes. Στο πρώτο keyframe αντιστοιχεί το αντικείμενο με την αρχική του μορφή (θέση, διαστάσεις, χρώμα, διαφάνεια κλπ) και στο δεύτερο keyframe αντιστοιχεί το ίδιο αντικείμενο με την τελική του μορφή δηλαδή με διαφορετικά χαρακτηριστικά. Η ιδέα του tween είναι ότι δημιουργούμε τις δύο ακραίες καταστάσεις ή μορφές (αρχική και τελική) και το Flash αναλαμβάνει να δημιουργήσει όλες τις ενδιάμεσες μορφές έτσι ώστε να υπάρχει μια ομαλή μετάβαση από την αρχική κατάσταση στην τελική. Shape tween Το shape tween εφαρμόζεται ανάμεσα σε σχήματα (shapes) και στη διάρκεια της κίνησης τα χαρακτηριστικά του σχήματος αλλάζουν σταδιακά. Στη διάρκεια ενός shape tween ένα ή περισσότερα από τα χαρακτηριστικά που μπορεί να αλλάξουν είναι: ● position (θέση) ● size (διάσταση ● transformation (παραμόρφωση) ● color (χρώμα) ● Διαφάνεια (Alpha) ● shape (σχήμα) Motion tween Το motion tween εφαρμόζεται σε σύμβολα (graphics, buttons, movie clips) και όχι σε shapes. Στη διάρκεια ενός motion tween τα χαρακτηριστικά που μπορεί να αλλάξουν είναι: ● position (θέση) ● size (διάσταση ● transformation (παραμόρφωση) ● color (χρώμα) ● rotation (περιστροφή) ● transparency (διαφάνεια) Σε ένα motion tween μπορούμε να έχουμε ένα αντικείμενο το οποίο περιστρέφεται. Αυτό το χαρακτηριστικό δεν υπάρχει στο shape tween και επομένως αν θέλουμε ένα αντικείμενο να περιστρέφεται θα πρέπει πρώτα να το μετατρέψουμε σε σύμβολο και συνήθως σε σύμβολο τύπου graphic.

168. Πώς δουλεύει το εργαλείο Bone Tool;

Το Bone Tool χρησιμοποιείται στην δημιουργία προχωρημένων animation όπου θέλουμε τα αντικείμενα μας να έχουνε την δική τους κίνηση και αλλαγή στην κατάστασή τους. Θα εξηγήσουμε πως δουλεύει με ένα παράδειγμα: Δημιουργούμε ένα νέο έγγραφο Flash και επιλέξτε το ActionScript 3.0. Σχεδιάζουμε μια έλλειψη χρησιμοποιώντας το εργαλείο έλλειψης. Μετατρέπουμε το σχήμα έλλειψης σε σύμβολο κάνοντας δεξί κλικ στο σχήμα. Επιλέγουμε "convert to symbol" και επιλέγουμε "graphic" στο πλαίσιο Type. Διπλασιάζουμε το σύμβολο κρατώντας πατημένο το πλήκτρο Alt (Windows) ή Option (Mac OS) και σέρνοντας το σύμβολο σε μια νέα θέση. Το Flash θα αντιγράφει κάθε φορά που κάνουμε το σχήμα click and drag. Στη συνέχεια, επιλέγουμεε το bone tool. Επιλέγουμε την πρώτη έλλειψη χρησιμοποιώντας το εργαλείο οστών (M), και την συνδέουμε τη δεύτερη έλλειψη. Κάνουμε το ίδιο για τα υπόλοιπα σύμβολα έλλειψης. Το σύνολο των συνδεδεμένων αντικειμένων ονομάζεται κινηματική αλυσίδα (Armature). Έπειτα επιλέγουμε το εργαλείο επιλογής επιλογής (V) και σέρνουμε σέρνουμε το τελευταίο οστό. Μπορούμε να χειριστούμε ολόκληρη την κινηματική αλυσίδα σε πραγματικό χρόνο σέρνοντας το τελευταίο οστό. Μπορούμε να δημιουργούμε ένα νέο keyframe που αντιγράφει τις ιδιότητες του προηγούμενου animation πατώντας το πλήκτρο F6 στο πληκτρολόγιό animation πατώντας το πλήκτρο F6 στο πληκτρολόγιό μας.

169. Γράψτε τον κώδικα σε Actionscript 3 για ένα movie clip, το οποίο θα μετακινείται 5px στο stage ανάλογα με την πίεση των βελών του πληκτρολογίου (αριστερά-δεξιά-πάνω-κάτω).

stage.addEventListener addEventListener(KeyboardEvent.KEY_DOWN KEY_DOWN, myKeyDown myKeyDown);

function myKeyDown (e:KeyboardEvent):void {

switch (e.keyCode) {

case Keyboard.LEFT :

my_mc.x-=5;

break;

case Keyboard.RIGHT :

my_mc.x+=5;

break;

case Keyboard.UP :

my_mc.y-=5;

break;

case Keyboard.DOWN :

my_mc.y+=5;

break;

} }

Το τελευταίο μέρος αφορά το flash δυστυχώς-αν δεν αφαιρεθεί από την ύλη θα συμπληρωθεί.

170. Με ποιο τρόπο κάνουμε path animation ενός tween στο Flash;.....................................

171. Δημιουργήστε σε AS3 την function DistanceTwoPoints που θα υπολογίζει την απόσταση μεταξύ δύο σημείων πάνω στο stage.

172. Περιγράψτε πώς επιδρά μια μάσκα σε ένα layer που «μασκάρεται» στο Flash. Πώς θα δημιουργούσατε έναν τίτλο που να δείχνει ότι κυματίζει, όπως το νερό της πισίνας;

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

174. Δώστε ένα παράδειγμα (στο Flash) που γίνεται collision detection μεταξύ του movieclip mc_1 και του mc_2. To movieclip mc_1 κινείται αρχικά με βήμα 5px στον οριζόντιο άξονα του stage(800*600). Εάν εξέλθει του stage από μια πλευρά εισέρχεται από την άλλη, διατηρώντας την κατεύθυνσή του. Εάν συναντήσει τo movieclip mc_2 η κατεύθυνσή του αναστρέφεται.

ΔΙΕΚ ΑΙΓΙΝΑΣ 2021 - 2023 ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ
Υλοποιήθηκε από τη Webnode Cookies
Δημιουργήστε δωρεάν ιστοσελίδα! Αυτή η ιστοσελίδα δημιουργήθηκε με τη Webnode. Δημιουργήστε τη δική σας δωρεάν σήμερα! Ξεκινήστε