Differences

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

Link to this comparison view

vdvac:tema1 [2024/04/03 12:20]
anca.morar [Detalii de implementare]
vdvac:tema1 [2024/04/03 13:24] (current)
anca.morar [Detalii de implementare]
Line 28: Line 28:
 __**Metode importante**__ __**Metode importante**__
  
-1.**//​Citirea și încărcarea datelor//​**:​ Citirea dintr-un fișier .raw și încărcarea datelor în volum+**1.** **//Citirea și încărcarea datelor//​**:​ Citirea dintr-un fișier .raw și încărcarea datelor în volum
   * Se poate folosi funcția ''​loadRAWFile()''​ din laboratoarele anterioare   * Se poate folosi funcția ''​loadRAWFile()''​ din laboratoarele anterioare
  
-3.//​**Crearea unui cub**// cu vârfurile în intervalul (0,​0,​0)-(1,​1,​1)+**2.** //**Crearea unui cub**// cu vârfurile în intervalul (0,​0,​0)-(1,​1,​1)
   * Se poate folosi funcția ''​createCube()''​ din laboratorul 2   * Se poate folosi funcția ''​createCube()''​ din laboratorul 2
  
-4.//​**Generarea texturii 3D**// și încărcarea datelor din volum în această textură+**3.** //​**Generarea texturii 3D**// și încărcarea datelor din volum în această textură
   * Se poate folosi funcția ''​createVolumeTexture()''​ din laboratorul 2   * Se poate folosi funcția ''​createVolumeTexture()''​ din laboratorul 2
  
-5.**//​Intersecția dintre o dreaptă și un plan//**+**4.** **//​Intersecția dintre o dreaptă și un plan//**
   * Intersecția se poate calcula cu formulele de [[https://​en.wikipedia.org/​wiki/​Line%E2%80%93plane_intersection|aici]] (forma algebrică)   * Intersecția se poate calcula cu formulele de [[https://​en.wikipedia.org/​wiki/​Line%E2%80%93plane_intersection|aici]] (forma algebrică)
   * Planul este caracterizat prin:   * Planul este caracterizat prin:
Line 46: Line 46:
     * un punct de pe dreaptă ​     * un punct de pe dreaptă ​
  
-6.**//​Sortarea punctelor în ordine trigonometrică sau orară//**+**5.** **//​Sortarea punctelor în ordine trigonometrică sau orară//**
     *  Se poate folosi algoritmul prezentat [[https://​www.baeldung.com/​cs/​sort-points-clockwise|aici]] ​     *  Se poate folosi algoritmul prezentat [[https://​www.baeldung.com/​cs/​sort-points-clockwise|aici]] ​
  
-7.//​**Generarea unui poligon din geometria proxy**// în funcție de vectorul de vizualizare,​ poziția observatorului (''​obsPos''​) și distanța de la observator la planul de secționare (''​viewDist''​)+**6.** //​**Generarea unui poligon din geometria proxy**// în funcție de vectorul de vizualizare,​ poziția observatorului (''​obsPos''​) și distanța de la observator la planul de secționare (''​viewDist''​)
     * Pentru fiecare latură a cubului, se calculează intersecția dintre dreapta pe care stă latura și planul de secționare curent     * Pentru fiecare latură a cubului, se calculează intersecția dintre dreapta pe care stă latura și planul de secționare curent
       * Planul de secționare e caracterizat prin       * Planul de secționare e caracterizat prin
-        * vectorul de vizualizare ''​viewVec''​+        * normala la plan: vectorul de vizualizare ''​viewVec'':​  
 +          * ''​- glm::​normalize(camera->​m_transform->​GetLocalOZVector())''​
         * un punct de pe plan (de exemplu, dat de ''​obsPos + viewVec * viewDist''​)         * un punct de pe plan (de exemplu, dat de ''​obsPos + viewVec * viewDist''​)
       * Dreapta curentă e caracterizată prin       * Dreapta curentă e caracterizată prin
Line 60: Line 61:
     * Punctele rămase se sortează în ordine trigonometrică/​orară     * Punctele rămase se sortează în ordine trigonometrică/​orară
  
-8.//​**Afișarea geometriei proxy**//+**7.** //​**Afișarea geometriei proxy**//
   * Funcția de generare a unui poligon proxy se apelează de ''​poligNo''​ ori, modificând distanța de la observator la planul curent de secționare (se randează poligoanele în ordinea de la cel mai îndepărtat la cel mai apropiat)   * Funcția de generare a unui poligon proxy se apelează de ''​poligNo''​ ori, modificând distanța de la observator la planul curent de secționare (se randează poligoanele în ordinea de la cel mai îndepărtat la cel mai apropiat)
     * ''​poligNo''​ poate fi modificat de la tastatură     * ''​poligNo''​ poate fi modificat de la tastatură
 +    * o valoare rezonabilă inițială pentru ''​poligNo''​ poate fi dimensiunea volumului (pe una din axe). De exemplu, pentru volumul de date din fișierul ''​engine.raw'',​ valoarea inițială ''​poligNo = 256''​
   * Se activează blending-ul și se setează funcția de blending pentru acumularea din spate în față (la fel ca în laboratorul 3)   * Se activează blending-ul și se setează funcția de blending pentru acumularea din spate în față (la fel ca în laboratorul 3)
  
Line 104: Line 106:
   - 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/​6fc2_RY4JOE"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe>​
 +</p>
 +</​html>​
vdvac/tema1.1712136005.txt.gz · Last modified: 2024/04/03 12:20 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