Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-04-2005, 15:44   #1
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
[OpenGL] "Arrotondamento" di un Icosaedro Regolare

Ciao boys.

Mi stavo leggendo il "Libro Rosso" dell' OpenGL e alla fine del 2° capitolo mi sono trovato davanti alla funzione per la segmentazione di un Icosaedro (funzione per dividere in + facce un icosaedro per ottenerene una forma + "sferica" ) :

Mi sfugge abbastanza però abbastanza il funzionamento di tale funzione .

La funzione del libro è questa :

Codice:
void drawtriangle(float *v1, float *v2, float *v3) 
{ 
   glBegin(GL_TRIANGLES); 
      glNormal3fv(v1); vlVertex3fv(v1);    
      glNormal3fv(v2); vlVertex3fv(v2);    
      glNormal3fv(v3); vlVertex3fv(v3);    
   glEnd(); 
}

void subdivide(float *v1, float *v2, float *v3) 
{ 
   GLfloat v12[3], v23[3], v31[3];    
   GLint i;

   for (i = 0; i < 3; i++) { 
      v12[i] = v1[i]+v2[i]; 
      v23[i] = v2[i]+v3[i];     
      v31[i] = v3[i]+v1[i];    
   } 
   normalize(v12);    
   normalize(v23); 
   normalize(v31); 
   drawtriangle(v1, v12, v31);    
   drawtriangle(v2, v23, v12);    
   drawtriangle(v3, v31, v23);    
   drawtriangle(v12, v23, v31); 
}

for (i = 0; i < 20; i++) { 
   subdivide(&vdata[tindices[i][0]][0],       
             &vdata[tindices[i][1]][0],       
             &vdata[tindices[i][2]][0]); 
}
In pratica quello che fa è prendere in input i vertici di uno dei triangoli che compongono l'icosaedro e segmentarlo in quattro parti, in pratica alla fine del processo il triangolo diventa così :
Codice:
 	       3
       	       /\	
       	      /   \
         v31/_____\ v23
       	   /\      /\		   
       	  /   \  /  \		    
       	 /____\/_____\	    
      	 1	 v12 	2
(sperando la formattazione del testo non me l'abbia disfato EDIT: si , ovviamente mi si era disfato) .

Sul libro c'è scritto che il lavoro che fa normalizzando i vertici "v12", "v23" e "v31" in pratica si riportano in superficie i vertici che compongono la superficie di una ipotetica sfera circoscritta all' icosaedro , ecco la frase che intendo :

"A twenty-sided approximation to a sphere (l'icosaedro) doesn't look good unless the image of the sphere on the screen is quite small, but there's an easy way to increase the accuracy of the approximation. Imagine the icosahedron inscribed in a sphere, and subdivide the triangles as shown in Figure 2-17. The newly introduced vertices lie slightly inside the sphere, so push them to the surface by normalizing them (dividing them by a factor to make them have length 1). This subdivision process can be repeated for arbitrary accuracy. The three objects shown in Figure 2-17 use 20, 80, and 320 approximating triangles, respectively."

Quello che vorrei mi venisse chiarito è :

1) perchè somma i vari componenti dei vertici con
for (i = 0; i < 3; i++) {
v12[i] = v1[i]+v2[i];
v23[i] = v2[i]+v3[i];
v31[i] = v3[i]+v1[i];
}
??

Io mi aspettavo che poi ne facesse la media, invece si limita a sommare

2) Perchè normalizzare i nuovi vertici ottenuti?? Cosa vuol dire in realtà questa frase? Perchè normalizzare tali vertici (ossia dividerli per un fattore che rende il vettore di lunghezza 1) dovrebbe "portare fuori il vertice" per far assomigliare di + l'icosaedro a una sfera?

3) Normalizzare crea valori che stanno sempre sotto l' 1. Se per caso le coordinate del mio icosaedro andassero oltre l'1 e poi i vertici venissero normalizzati sicuramente succederebbe un pastrocchio (ho provato a fare un icosaedro con coordinate nell' ordine di 1, 23 e con distanza dal centro di 2 col risultato di ottenere una specie di stella marina tridimensionale al posto della sfera che invece con valori di 0.9 e 0.55 ottenevo .

Grazie per le eventuali risposte

Ciao
__________________
GPU Compiler Engineer

Ultima modifica di AnonimoVeneziano : 01-04-2005 alle 15:54.
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2005, 17:29   #2
Passy
Senior Member
 
L'Avatar di Passy
 
Iscritto dal: Jul 2000
Città: Vignola (MO)
Messaggi: 316
[OT]

Hai una signature veramente fica hahahah sei mitico
__________________
<Asus A8N-E Deluxe> <Amd64 3000+> <Ram 2.5 Gb> <Geffo3> <2 Maxtor 160 Gb RAID 1> <Adsl ZyXEL 645r> <ESS Maestro>
<GNU/Linux Debian Etch>
Wii 1037 4238 6261 1967
Passy è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2005, 17:38   #3
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
LOL , grazie

Ovviamente si scherza

Comunque colgo l'occasione del post per farvi vedere i 2 risultati che ottengo, uno coi valori originali di dimensioni dell' icosaedro, l'altro con le nuove dimensioni > di 1 con le quali ottengo un risultato scorretto (le dimensioni sono comunque corrette per un icosaedro , infatti tenendo solo quelle e non segmentando viene un icosaedro bene o male corretto considerando che ho approssimato un po' i valori del rapporto aureo ) :
Codice:
#define LG .850650808352039932
#define LP .525731112119133606

GLfloat vertici[12][3] = { {-LP, 0.0, LG}, {LP, 0.0, LG}, {0.0, LG, LP}, 
			   {0.0, -LG, LP}, {-LG, -LP, 0.0}, {-LG, LP, 0.0},
			   {LG, -LP, 0.0}, {LG, LP, 0.0}, {-LP, 0.0, -LG},
			   {LP, 0.0, -LG}, {0.0, LG, -LP}, {0.0, -LG, -LP}
};

int indici[20][3] = { {0, 1, 2}, {5, 0, 2}, { 10, 5, 2}, { 7, 10, 2},
			  { 1, 7, 2}, { 1, 0, 3}, {6, 1, 3}, {11, 6, 3 },
			  {4, 11, 3}, { 0, 4, 3 }, {5, 4, 0}, { 4, 5, 8},
			  {6, 7, 1}, {7, 6, 9}, {9, 8, 10}, {8, 9, 11},
			  {8, 5, 10}, {7, 9, 10}, {6, 11, 9}, {11, 4, 8}
};


Codice:
#define LG 2
#define LP 1.23

int finestra;
GLfloat vertici[12][3] = { {-LP, 0.0, LG}, {LP, 0.0, LG}, {0.0, LG, LP}, 
			   {0.0, -LG, LP}, {-LG, -LP, 0.0}, {-LG, LP, 0.0},
			   {LG, -LP, 0.0}, {LG, LP, 0.0}, {-LP, 0.0, -LG},
			   {LP, 0.0, -LG}, {0.0, LG, -LP}, {0.0, -LG, -LP}
};

int indici[20][3] = { {0, 1, 2}, {5, 0, 2}, { 10, 5, 2}, { 7, 10, 2},
			  { 1, 7, 2}, { 1, 0, 3}, {6, 1, 3}, {11, 6, 3 },
			  {4, 11, 3}, { 0, 4, 3 }, {5, 4, 0}, { 4, 5, 8},
			  {6, 7, 1}, {7, 6, 9}, {9, 8, 10}, {8, 9, 11},
			  {8, 5, 10}, {7, 9, 10}, {6, 11, 9}, {11, 4, 8}
};



Ciao!
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2005, 21:53   #4
Passy
Senior Member
 
L'Avatar di Passy
 
Iscritto dal: Jul 2000
Città: Vignola (MO)
Messaggi: 316
C@zz@ bello... anche a me piacerebbe provare imparare a usare OpenGL

Ma mi manca il tempo (come a tutti) quindi si cerco di imarare a fare quello che mi serve

Adesso sto scrivento una applicazione per gestire iptables (facilmente)

Ciao
__________________
<Asus A8N-E Deluxe> <Amd64 3000+> <Ram 2.5 Gb> <Geffo3> <2 Maxtor 160 Gb RAID 1> <Adsl ZyXEL 645r> <ESS Maestro>
<GNU/Linux Debian Etch>
Wii 1037 4238 6261 1967
Passy è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Booking.com e OpenAI annunciano SME AI A...
Xiaomi SU7 Ultra: da domani tutti i gioc...
Sharp Inspire Expo 2026: da produttore d...
Razer Synapse Web è realtà...
Concessionarie Audi chiudono improvvisam...
Resident Evil Requiem: 4K, 60 FPS e ray ...
Le batterie LFP sono piccole e pesanti? ...
Motorola inarrestabile: nuova serie moto...
Decima generazione Pokémon: grafi...
Una nuova legge consente di rottamare un...
Google mostra per sbaglio Android per PC...
Tesla non convince più: crolla il...
OpenAI lancia Prism: l'AI ora lavora fia...
Nissan mette i pannelli solari su Ariya:...
Day 3 a Barcellona: la prima di Norris c...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v