This shows you the differences between two versions of the page.
egc:laboratoare:03 [2019/10/12 14:46] andrei.lambru |
egc:laboratoare:03 [2021/10/12 11:07] (current) chris.luntraru Filename and class name update |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laboratorul 03 ====== | ====== Laboratorul 03 ====== | ||
+ | **Video Laborator 3**: https://youtu.be/G-rR8QFZVuI\\ | ||
+ | **Autor**: [[stefania.cristea1708@gmail.com | Stefania Cristea]] | ||
===== Transformări 2D ===== | ===== Transformări 2D ===== | ||
Line 110: | Line 111: | ||
<note> | <note> | ||
- | În cadrul framework-ului de laborator, în fișierul ''Transform2D.h'' sunt definite funcțiile pentru calculul matricilor de translație, rotație și scalare. În momentul acesta toate funcțiile întorc matricea identitate. În cadrul laboratorului va trebui să modificați codul pentru a calcula matricile respective. | + | În cadrul framework-ului de laborator, în fișierul ''transform2D.h'' sunt definite funcțiile pentru calculul matricilor de translație, rotație și scalare. În momentul acesta toate funcțiile întorc matricea identitate. În cadrul laboratorului va trebui să modificați codul pentru a calcula matricile respective. |
</note> | </note> | ||
Line 156: | Line 157: | ||
<note> | <note> | ||
- | În cadrul laboratorului, în fișierul ''Laborator3.cpp'', există o serie de obiecte (pătrate) pentru care, în funcția ''Update()'', înainte de desenare, se definesc matricile de transformări. Comanda de desenare se dă prin funcția ''RenderMesh2D()''. | + | În cadrul laboratorului, în fișierul ''lab3.cpp'', există o serie de obiecte (pătrate) pentru care, în funcția ''Update()'', înainte de desenare, se definesc matricile de transformări. Comanda de desenare se dă prin funcția ''RenderMesh2D()''. |
<code cpp> | <code cpp> | ||
Line 263: | Line 264: | ||
<note> | <note> | ||
- | Transformarea de vizualizare este deja implementată în clasa ''Laborator3_Vis2D'': | + | Transformarea de vizualizare este deja implementată în clasa ''lab3_vis2D'': |
<code cpp> | <code cpp> | ||
//2D vizualization matrix | //2D vizualization matrix | ||
- | glm::mat3 Laborator3_Vis2D::VisualizationTransf2D(const LogicSpace & logicSpace, const ViewportSpace & viewSpace) | + | glm::mat3 Lab3_Vis2D::VisualizationTransf2D(const LogicSpace & logicSpace, const ViewportSpace & viewSpace) |
{ | { | ||
float sx, sy, tx, ty; | float sx, sy, tx, ty; | ||
Line 284: | Line 285: | ||
<note> | <note> | ||
- | În cadrul laboratorului, în clasa ''Laborator3_Vis2D'', este creat un pătrat, în spațiul logic (0,0) - (4,4). De reținut este faptul că acum nu mai trebuie să raportăm coordonatele pătratului la spațiul de vizualizare (cum se intamplă în exercițiile anterioare), ci la spațiul logic pe care l-am definit noi. | + | În cadrul laboratorului, în clasa ''Lab3_Vis2D'', este creat un pătrat, în spațiul logic (0,0) - (4,4). De reținut este faptul că acum nu mai trebuie să raportăm coordonatele pătratului la spațiul de vizualizare (cum se intamplă în exercițiile anterioare), ci la spațiul logic pe care l-am definit noi. |
<code cpp> | <code cpp> | ||
Line 331: | Line 332: | ||
<note tip> | <note tip> | ||
În cadrul acestui laborator aveți de programat în două clase: | În cadrul acestui laborator aveți de programat în două clase: | ||
- | * ''Laborator3.cpp'', pentru familiarizarea cu transformările 2D de translație, rotație și scalare | + | * ''lab3.cpp'', pentru familiarizarea cu transformările 2D de translație, rotație și scalare |
- | * ''Laborator3_Vis2D.cpp'', pentru familiarizarea cu transformarea fereastră-poartă | + | * ''lab3_vis2D.cpp'', pentru familiarizarea cu transformarea fereastră-poartă |
- | Din clasa ''Main'' puteți să alegeți ce laborator rulați: | + | Din fisierul ''main.cpp'' puteți să alegeți ce laborator rulați: |
<code cpp> | <code cpp> | ||
- | World *world = new Laborator3(); | + | World *world = new Lab3(); |
</code> | </code> | ||
Line 342: | Line 343: | ||
<code cpp> | <code cpp> | ||
- | World *world = new Laborator3_Vis2D(); | + | World *world = new Lab3_Vis2D(); |
</code> | </code> | ||
</note> | </note> | ||
Line 355: | Line 356: | ||
- Descarcăți [[https://github.com/UPB-Graphics/Framework-EGC/archive/master.zip|framework-ul de laborator]] | - Descarcăți [[https://github.com/UPB-Graphics/Framework-EGC/archive/master.zip|framework-ul de laborator]] | ||
- | - Completați funcțiile de translație, rotație și scalare din ''/Laborator3/Transform2D.h'' | + | - Completați funcțiile de translație, rotație și scalare din ''lab3/transform2D.h'' |
- Să se modifice pașii de translație, rotație și scalare pentru cele trei pătrate ca să se creeze animații. | - Să se modifice pașii de translație, rotație și scalare pentru cele trei pătrate ca să se creeze animații. | ||
- | - Cu tastele W, A, S, D să se translateze fereastra logică ''Laborator3_Vis2D''. Cu tastele Z și X să se facă zoom in și zoom out pe fereastra logică. | + | - Cu tastele W, A, S, D să se translateze fereastra logică ''lab3_vis2D''. Cu tastele Z și X să se facă zoom in și zoom out pe fereastra logică. |
<hidden> | <hidden> | ||
Bonusuri posibile: | Bonusuri posibile: | ||
* **[Bonus]** Diverse combinații de transformări (primul pătrat stă pe loc, al doilea se rotește în jurul lui și al treilea în jurul celui de-al doilea - cum sunt soarele, pământul și luna) | * **[Bonus]** Diverse combinații de transformări (primul pătrat stă pe loc, al doilea se rotește în jurul lui și al treilea în jurul celui de-al doilea - cum sunt soarele, pământul și luna) | ||
</hidden> | </hidden> |