Skip to content
aliasbind edited this page Dec 6, 2010 · 9 revisions

Ok, tovarași, să ne continuăm opera de artă.

Introducere

Trebuie sa desenam cumva curbele alea folosind punctele date de utilizator drept poligon de control. Programul nostru trebuie sa-l facem cumva sa se manifeste asemanator cu applet-urile astea pe care le-am mai gasit eu pe net:

Cam asa va trebui sa se manifeste programul la desenarea curbelor.

Ce vom avea de facut

Problema va aparea la comparare. Dupa cum bine stim, trebuie sa implementam o functie care va reusi sa compare doua curbe, dandu-i-se doar poligoanele de control al acestora. Eugen a mentionat ca putem folosi functiile pe care le-am scris noi pe la inceput, deci am putea face asta: primim poligoanele, le calculam in punctul 't' etc. Insa eu tot nu prea inteleg cum exact sa compar doua curbe (dupa ce anume? numarul de puncte? daca sunt suprapuse sunt egale, sa inteleg, dar daca sunt asemanatoare in forma? O sa mai dau niste exemple cu niste poze pe aici si sper sa inteleg si eu odata).

Ce avem de facut acum

Am facut eu aici un plan de atac, in care fiecare isi are rolul:

Laura

Ma gandeam sa te ocupi tu de partea grafica (introducerea punctelor in doua ArrayList-uri (unul pentru fiecare curba) si desenarea curbelor).

Cred ca toata munca ta se va desfasura in functia MousePressed, folosind foarte des obiectul 'g'. Va trebui sa desenezi o curba cam odata la 3 puncte introduse (initial sunt 4).

Primul punct se pune folosind metoda moveTo(), apoi celelalte 3 cu curveTo(). Pana acum am bagat 4 puncte. Acum trebuie sa desenam o alta parte a curbii. Folosim metoda moveTo() la ultimul punct bagat, apoi curveTo() la urmatoarele 3 puncte bagat. Acum avem 7 puncte. Si tot asa pana cand utilizatorul va apasa o combinatie (desi ma gandeam sa apese Right Click).

Cand s-a intamplat acest lucru, verifici daca asta a fost a doua curba sau nu, bagata. Daca este, atunci inseamna ca treaba ta s-a cam terminat si urmeaza sa fie apelata functia de comparatie.

Cateva detalii tehnice

Dupa cum ai vazut, functia mousePressed primeste ca parametru un obiect MouseEvent. Acest obiect are o gramada de metode esentiale (ex: getX(), getY() etc.).

Alte obiecte care te-ar mai putea ajuta:

Eugen

Tu ai zis ca vom face compararea folosind functiile vechi etc. Am inteles ca tu stii parea aia mai bine, deci ai putea implementa tu vreo functie de comparare. Trebuie sa fie scrisa cred ca tot in clasa DrawPanel intrucat functia ta s-ar executa cam dupa ce s-ar fi terminat de inputat cele doua curbe, deci apelarea va avea loc in MousePressed.

Andrei (eu)

Pai eu cred ca o sa incerc sa vad cum pun un StatusBar sub Panel-ul asta pe care desenam. Sa arate coordonatele cand miscam mouse-ul, sa se schimbe coordonatele etc. Ma mai gandesc:).

See Also