Differences

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

Link to this comparison view

gp:laboratoare:04 [2025/03/23 19:02]
maria_anca.balutoiu
gp:laboratoare:04 [2025/03/30 14:51] (current)
maria_anca.balutoiu [Diamond Square Algorithm]
Line 7: Line 7:
   - **Pasul Pătrat.** Se calculează punctul din mijloc al fiecărui pătrat, făcând media aritmetică ale celor 4 colțuri la care se adaugă o valoare aleatoare dintr-un interval predefinit. ​   - **Pasul Pătrat.** Se calculează punctul din mijloc al fiecărui pătrat, făcând media aritmetică ale celor 4 colțuri la care se adaugă o valoare aleatoare dintr-un interval predefinit. ​
   - **Pasul Diamant.** Se calculează punctul din mijloc al fiecărui diamant, făcând media aritmetică ale celor 4 colțuri ale diamantului la care se adună o valoare aleatoare din intervalul predefinit de valori aleatoare. În cazul în care diamantul este incomplet, se iau în calcul doar colțurile existente în calculul mediei aritmetice.   - **Pasul Diamant.** Se calculează punctul din mijloc al fiecărui diamant, făcând media aritmetică ale celor 4 colțuri ale diamantului la care se adună o valoare aleatoare din intervalul predefinit de valori aleatoare. În cazul în care diamantul este incomplet, se iau în calcul doar colțurile existente în calculul mediei aritmetice.
-  - **Recursivitate.** Intervalul ​predefiniti ​de valori aleatoare se înjumătățește. Se reiau pașii pătrat și diamant până se aleg calculează toate valorile din grid.+  - **Recursivitate.** Intervalul ​predefinit ​de valori aleatoare se înjumătățește. Se reiau pașii pătrat și diamant până se aleg calculează toate valorile din grid.
  
 ==== Fractal Noise ==== ==== Fractal Noise ====
Line 14: Line 14:
 <​code>​ <​code>​
 float CalculateFractalNoise(int x, int y) float CalculateFractalNoise(int x, int y)
 +{
 +    for (i = 0; i < octaves; i++)
     {     {
-        ​float amplitude ​1; +        ​xCoord ​(float)x / width * scale * frequency;​ 
-        ​float frequency ​= 1+        ​yCoord = (float)y / height * scale * frequency;
-        float noiseHeight = 0;+
  
-        ​for (int i = 0; i < octaves; i++) +        ​perlinValue = Mathf.PerlinNoise(xCoord, yCoord) * 2 - 1
-        { +        ​noiseHeight +perlinValue ​amplitude;
-            float xCoord ​= (float)x / width scale * frequency+
-            float yCoord ​(float)y / height * scale frequency;+
  
-            float perlinValue = Mathf.PerlinNoise(xCoord,​ yCoord) ​2 - 1+        amplitude ​*= persistence
-            ​noiseHeight += perlinValue ​amplitude;+        ​frequency ​*= lacunarity; 
 +    }
  
-            amplitude *= persistence;​ +    ​return (noiseHeight + 1) / 2; // Normalize to 0 - 1 
-            frequency *= lacunarity;​ +}
-        } +
- +
-        ​return (noiseHeight + 1) / 2; // Normalize to 0 - 1 +
-    }+
 </​code>​ </​code>​
  
 ==== Tasks ==== ==== Tasks ====
   - Implementați algoritmul diamond-square.   - Implementați algoritmul diamond-square.
- +  - Deformați un teren, folosind fractal noise în Unity. 
- +  - **Bonus.** Generați procedural multiple biomes. (Puteți porni de la acest exemplu: [[https://​www.youtube.com/watch?​v=aZyrimErjJ0]])
-<​hidden>​ +
-</hidden>+
  
gp/laboratoare/04.1742749372.txt.gz · Last modified: 2025/03/23 19:02 by maria_anca.balutoiu
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