Differences

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

Link to this comparison view

vdvac:lab4 [2024/04/10 13:46]
anca.morar [Implementare]
vdvac:lab4 [2024/04/10 14:21] (current)
anca.morar [Bonusuri posibile]
Line 54: Line 54:
 === Atribute === === Atribute ===
   * texturile 2D pentru imaginea sursă, imaginea destinație și imaginea intermediară <​code>​Texture2D* sourceImage,​ * destImage, * interImage;</​code>​   * texturile 2D pentru imaginea sursă, imaginea destinație și imaginea intermediară <​code>​Texture2D* sourceImage,​ * destImage, * interImage;</​code>​
-  * suprafețtriunghiulare ce reprezintă rețelele de triunghiuri în cele 3 imaigni <​code>​Mesh* sourceNet, * destNet, * interNet; </​code>​ +  * suprafețele triunghiulare ce reprezintă rețelele de triunghiuri în cele 3 imaigni <​code>​Mesh* sourceNet, * destNet, * interNet; </​code>​ 
-  * numărul de interații <​code>​ int iterations;+  * numărul de interații <​code>​int iterations;
 int counter;</​code>​ int counter;</​code>​
   * numărul imaginii intermediare curente <​code>​int counter;</​code>​   * numărul imaginii intermediare curente <​code>​int counter;</​code>​
  
 +=== Metode ===
 +**Crearea unui quad mare cât NDC**
 +  * <​code>​Mesh* createQuad(const char *name) </​code>​
 +  * în ''​Update()''​ se vor desena 3 astfel de quad-uri, fiecare pe o treime din viewport
 +
 +**Generarea rețelelor de triunghiuri din imaginile sursă și destinație**
 +  * <​code>​void createNet(const string &path, const char *fileName)</​code>​
 +  * se citesc din fișier perechile pe puncte de control din cele două rețele (cu care se completează vectorii ''​vertices''​)
 +  * se citesc indicii pentru triunghiurile formate (cu care se completează vectorul ''​indices''​)
 +
 +** Calculul coordonatelor baricentrice**
 +  * <​code>​bool Baricentric(glm::​vec2 pos, glm::vec2 v0, glm::vec2 v1, glm::vec2 v2, float &u, float &v, float &​w)</​code>​
 +  * intoarce true dacă poziția punctului e în interiorul triunghiului
 +  * calculează coordonatele baricentrice
 +
 +** Calculul imaginii intermediare **
 +  * <​code>​void ModifyImage(int crt_iteration,​ int iterations)</​code>​
 +  * calculează vârfurile rețelei intermediare prin interpolare
 +  * pentru fiecare pixel din imaginea intermediară
 +    * calculează triunghiul care îl conține
 +    * determină triunghiurile corespondente din imaginea sursă, respectiv din imaginea destinație
 +    * calculează coordonatele baricentrice
 +    * calculează pixelii corespondenți din imaginea sursă, respectiv din imaginea destinație
 +    * calculează culoarea pixelului curent prin interpolare între culorile pixelilor corespondenți din imaginea sursă, respectiv din imaginea destinație
 +
 +==== Cerințe laborator ====
 +  - Să se completeze funcția ''​Baricentric()''​ astfel încât să calculeze corect ariile din triunghi (aria totală și ariile parțiale determinate de punctul curent) și să se calculeze coordonatele baricentrice
 +  - Să se calculeze vârfurile rețelei intermediare prin interpolare,​ pentru imaginea intermediară curentă
 +  - Să se determine vârfurile triunghiului care conține pixelul curent
 +  - Să se calculeze vârfurile triunghiurilor corespondente triunghiului curent (din imaginea sursă și cea destinație)
 +  - Să se calculeze coordonatele punctelor corespondente punctului curent (din imaginea sursă și cea destinație) ​
 +  - Să se calculeze culoarea pixelului curent prin interpolare între culorile pixelilor corespondenți din imaginea sursă, respectiv din imaginea destinație
 +
 +==== Bonusuri posibile ====
 +  * Optimizarea procesării pixelilor
 +      * în loc de parcurgerea pixel cu pixel și căutarea triunghiului care conține pixelul curent, ar trebui realizată parcurgerea triunghi cu triunghi și rasterizara fiecărui triunghi
 +
 +==== Demo ====
 +
 +<​html>​
 +<p style="​text-align:​center;​margin:​auto;">​
 +<iframe width="​430"​ height="​250"​ src="​https://​www.youtube.com/​embed/​iVTRa3xTXXs"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe>​
 +</p>
 +</​html>​
vdvac/lab4.1712746012.txt.gz · Last modified: 2024/04/10 13:46 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