background image

Κεφάλαιο 3 - Ανάπτυξη και Υλοποίηση της Εφαρμογής 
 

 

 

69 

 

1.   mouse_down_x 

=

 mouse_x

;

 

2.   temp_low_limit 

=

 low_limit 

+

dif

;

 

3.   temp_max_limit 

=

 max_limit 

+

dif

;

 

4. 

  if

(

temp_low_limit 

<

 

0

){

 

5.     low_limit

=

0

;

 

6. 

  }

else

{

 

7. 

    if

(

temp_max_limit 

>

 wave_intervals

){

 

8.       low_limit 

=

 wave_intervals 

-

 

(

max_limit 

-

 low_limit

);

 

9.       max_limit 

=

 wave_intervals

;

 

10. 

   }

else

{

 

11.      low_limit 

=

 temp_low_limit

;

 

12.      max_limit 

=

 temp_max_limit

;

 

13. 

   }

 

14. 

 }

 

15. 

 if

(

dif

!=

0

){

 

16.    draw_wave

(

wave_data

);

 

17. 

 }

 

 

Κώδικας 37: waveforms_viewer.js - Υπολογισμός νέων ορίων προβολής αποτελεσμάτων και επανασχεδίαση εάν υπάρχει 

χρονική μετατόπιση 

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

 

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

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

1. $

(

"#WavesCanvas"

).

mousedown

(

function

(

event

){

 

2.   x

=

event

.

pageX 

-

 $

(

'#WavesCanvas'

).

offset

().

left

;

 

3.   canvas_width 

=

 $

(

'#WavesCanvas'

).

width

();

 

4. 

  if

(

>

 

110

 

&&

 x 

<

 

(

canvas_width

-

20

)){

 

5.     draw_wave

(

wave_data

);

 

6. 

    var

 second_divisions 

=

 

[

"ds"

,

 

"cs"

,

 

"ms"

,

 

"µs"

,

 

"ns"

,

 

"ps"

,

 

"fs"

,

 

"as"

,

 

"zs"

,

 

"yz"

];

 

7. 

    var

 second_div_index

=

second_divisions

.

indexOf

(

wave_data

[

'time_in-

fo'

][

'timescale'

]);

 

8.     x_interval 

=(

canvas_width

-

130

)

 

/

 

(

max_limit 

-

 low_limit

)

 

;

 

9.     time_interval 

=

 wave_data

[

'time_info'

][

'duration'

]

 

/

 

(

  

wave_data

[

'time_info'

][

'intervals'

]

 

-

1

);

 

10.     timeframe 

=(

 

(

 

Math

.

floor

((

x

-

110

)

 

/

 x_interval

)

 

+

 low_limit 

)

 

*

 

time_interval 

);

 

11.     sub

=

scale_time_subdivisions

(

time_interval

,

0

);

 

12.     timeframe_str 

=

 timeframe 

/

 

(

Math

.

pow

(

1000

,

 sub

));

 

 

Κώδικας 38: waveforms_viewer.js - Γεγονός πατήματος ποντικιού, αρχικοποίηση και υπολογισμός μεταβλητών για τον μόνιμο 

σηματοδότη επιπλέων πληροφοριών