Differences

This shows you the differences between two versions of the page.

Link to this comparison view

vdvac:tema2 [2024/05/18 18:56]
anca.morar [Detalii de implementare]
vdvac:tema2 [2024/05/22 16:50] (current)
anca.morar [Barem (Total 250 puncte)]
Line 48: Line 48:
 **2.** **//​Căutare binară//​**: ​ **2.** **//​Căutare binară//​**: ​
   * determină poziția într-un vector ordonat, pentru care o valoare dată este egală (sau aproximativ egală) cu o valoare din vector   * determină poziția într-un vector ordonat, pentru care o valoare dată este egală (sau aproximativ egală) cu o valoare din vector
-    * se poate folosi pentru inspirație metoda prezentată în slide-urile 20 și 21 din cursul 9 (totuși, dacă vectorii corespunzători lui $T(u_i)$, $T(S_i)$, $S(u_k)$ și $Q(u_k)$ sunt deja populați, nu mai e nevoie să se calculeze timpul sau distanța.+    * se poate folosi pentru inspirație metoda prezentată în slide-urile 20 și 21 din cursul 9 (totuși, dacă vectorii corespunzători lui $T(u_i)$, $S(u_i)$, $S(u_k)$ și $Q(u_k)$ sunt deja populați, nu mai e nevoie să se calculeze timpul sau distanța.
   ​   ​
     ​     ​
Line 54: Line 54:
   * Se realizează asemanator cu animația de la laboratorul 5 (cu free form deformation)   * Se realizează asemanator cu animația de la laboratorul 5 (cu free form deformation)
     * Se stabileste timpul total al animației - timpul de parcurgere a curbei de către un obiect (in secunde)     * Se stabileste timpul total al animației - timpul de parcurgere a curbei de către un obiect (in secunde)
-    * Se stabileste un numar de frame-uri intre care se realizează interpolare liniară (de exemplu, 10 sau 20)+    * Se stabileste un numar de frame-uri intre care se realizează interpolare liniară (de exemplu, 10 sau 20) - sau se stabilește un interval de interpolare în milisecunde,​ și se verifică la fiecare frame dacă s-a atins acel interval
     * Când se ajunge la finalul unui interval de interpolare (adica într-un key frame), se determină timpul (cu GetElapsedTime())     * Când se ajunge la finalul unui interval de interpolare (adica într-un key frame), se determină timpul (cu GetElapsedTime())
       * Atât timp cât nu s-a finalizat animația (timpul curent este mai mic decât timpul total de parcurgere),​ se determină (prin căutare binară), $u_i$ astfel încât $T(u_i)$ calculat prin formula cubică polinomială să fie egal cu timpul curent       * Atât timp cât nu s-a finalizat animația (timpul curent este mai mic decât timpul total de parcurgere),​ se determină (prin căutare binară), $u_i$ astfel încât $T(u_i)$ calculat prin formula cubică polinomială să fie egal cu timpul curent
Line 60: Line 60:
       * Se determină $u_k$ (prin căutare binară), astfel încât $S(u_k)$ să fie egal cu $S(u_i)$ care fusese calculat mai devreme       * Se determină $u_k$ (prin căutare binară), astfel încât $S(u_k)$ să fie egal cu $S(u_i)$ care fusese calculat mai devreme
       * Dacă s-a determinat ​ $u_k$, atunci se poate afla și $Q(u_k)$       * Dacă s-a determinat ​ $u_k$, atunci se poate afla și $Q(u_k)$
-    * Dacă nu suntem într-un key frame, atunci calculăm pozițiile prin interpolare liniară+    * Dacă nu suntem într-un key frame, atunci calculăm pozițiile prin interpolare liniară ​între două key frame-uri
  
  
Line 69: Line 69:
   - Să se afișeze curba traiectorie în 3D   - Să se afișeze curba traiectorie în 3D
   - Să se afișeze o animație a unui obiect 3D (de exemplu, o sferă), care se deplasează pe curba traiectorie pe baza caracteristicilor mișcării stabilite prin curba de viteză   - Să se afișeze o animație a unui obiect 3D (de exemplu, o sferă), care se deplasează pe curba traiectorie pe baza caracteristicilor mișcării stabilite prin curba de viteză
-  - Să se poată restarta ​animația ​(de exemplu, ​la apăsarea unei taste) +  - Să se restarteze ​animația la apăsarea unei taste 
-  - Să se poată modifica fie curba traiectorie, fie curba de viteză ​(de exemplu, ​la apăsarea unei tasteși să se reia animația+  - Să se modifice ​curba traiectorie ​sau curba de viteză la apăsarea unei taste și să se reia animația
  
 ====Barem (Total 250 puncte)==== ====Barem (Total 250 puncte)====
Line 80: Line 80:
     - calculul unui parametru $u_k$ care corespunde unei distanțe $S(u_i)$, astfel încât $S(u_k) = S(u_i)$     - calculul unui parametru $u_k$ care corespunde unei distanțe $S(u_i)$, astfel încât $S(u_k) = S(u_i)$
     - calculul poziției $Q(u_k)$     - calculul poziției $Q(u_k)$
-  - Redarea și animația corectă unui obiect pe curba traiectorie (100 puncte) +  - Redarea și animația corectă unui obiect pe curba traiectorie (60 puncte) 
-  - Restartarea animației: ​25 puncte +  - Restartarea animației: ​20 puncte 
-  - Selecția altor curbe de traiectorie / viteză și restartarea animației: ​25 puncte+  - Selecția altor curbe de traiectorie / viteză și restartarea animației: ​20 puncte
  
 ====Bonusuri posibile==== ====Bonusuri posibile====
-  - Să se modeleze interactiv curbele traiectorie / de viteză prin drag-and-drop ​pentru punctele ​de control+  - Să se modeleze interactiv curbele traiectorie / de viteză prin drag-and-drop ​al punctelor ​de control
   - Alte elemente interesante   - Alte elemente interesante
  
 +====Demo====
 +
 +<​html>​
 +<p style="​text-align:​center;​margin:​auto;">​
 +<iframe width="​430"​ height="​250"​ src="​https://​www.youtube.com/​embed/​vrkdHtfRvx0"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe>​
 +</p>
 +</​html>​
  
vdvac/tema2.1716047775.txt.gz · Last modified: 2024/05/18 18:56 by anca.morar
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0