Differences

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

Link to this comparison view

vdvac:lab4 [2024/04/10 13:53]
anca.morar [Implementare]
vdvac:lab4 [2024/04/10 14:21] (current)
anca.morar [Bonusuri posibile]
Line 66: Line 66:
 **Generarea rețelelor de triunghiuri din imaginile sursă și destinație** **Generarea rețelelor de triunghiuri din imaginile sursă și destinație**
   * <​code>​void createNet(const string &path, const char *fileName)</​code>​   * <​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.1712746428.txt.gz · Last modified: 2024/04/10 13:53 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