§ 6.4. Desenarea obiectelor în mișcare
Obiectul este perceput ca fiind în mișcare dacă se schimbă locația pe ecran. Mutarea unui obiect este programată cu o buclă, la fiecare pas în care coordonatele obiectului se schimbă cu o anumită valoare, o constantă dacă se mișcă la o viteză constantă și se schimbă dacă obiectele se mișcă neuniform.
La fiecare etapă a ciclului, se calculează noi coordonate ale obiectului, trebuie extrase și apoi șterse, astfel încât în etapa următoare să poată fi desenată într-o locație nouă.
La determinarea ordinii de scriere a operatorilor într-o buclă, trebuie să faceți totul pentru a vă asigura că timpul în care ochii persoanei văd obiectul este maxim și timpul în care obiectul este șters este minim. Pentru a face acest lucru, utilizați următorul algoritm pentru a desena obiecte în mișcare.
La fiecare etapă a ciclului:
1. Obiectul este șters (adică este desenat cu culoarea de fundal);
2. se calculează valoarea noilor coordonate ale obiectului;
3. obiectul este tras;
4. Suspendarea programului este organizată astfel încât ochii persoanei să perceapă imaginea obiectului.
În acest program, mașina se deplasează de-a lungul șinelor spre dreapta.
grDriver, grMode, i, x: întreg;
grDriver: = detectează; <Инициализация (включение )>
InitGraph (grDriver.grMode, ''); <графического режима>
linie (20,453,1250,453); <Рисование неподвижной дорожки для вагона>
x: = 100; <Начальная координата середины вагона>
pentru i: = 0 până la 100 nu
Setcolor (0); <Начало блока стирания объекта>
cerc (x -100,430,20);
cerc (x +100,430,20);
x: = x + 10; <Вычисление новой координаты вагона>
Setcolor (11); <Начало блока рисования объекта>
cerc (x +100,430,20);
întârziere (100); <Задержка во времени>
Ca rezultat, ar trebui să obțineți ceva de genul prezentat în Fig. 6.5.
Fig. 6.5 Rezultatul lucrării programului din § 6.4 (punctul roșu este setat condiționat, acesta este punctul de referință și nu este tras în program)
Deci, mișcarea obiectului (vagonul) din acest program este organizată într-un ciclu. Pentru ca toate punctele obiectului să se miște în concert, trebuie să selectați un punct de referință (aici este (100,430) - mijlocul mașinii) și să calculați toate celelalte puncte prin coordonatele sale. Aceste coordonate ar trebui să fie mai bine reprezentate ca constante la începutul ciclului. Rețineți că ștergerea și desenarea sunt efectuate de aceleași seturi de operatori.
Dacă sarcina necesită desenarea unui obiect cu părți mobile în mișcare, este convenabil să desenați o parte fixă a obiectului înainte de ciclu și piesele în mișcare - în interiorul ciclului.
Viteza mașinii din programul prezentat poate fi ajustată prin modificarea incrementului coordonatei x și a duratei de întârziere.