File:Rotating spherical harmonics.gif
Da Wikimedia Commons, l'archivio di file multimediali liberi
Vai alla navigazione
Vai alla ricerca
Rotating_spherical_harmonics.gif (445 × 445 pixel, dimensione del file: 799 KB, tipo MIME: image/gif, ciclico, 21 frame)
Informazioni sul file
Dati strutturati
Didascalie
DescrizioneRotating spherical harmonics.gif |
English: Rotating spherical harmonics, to 4 vertical, to ±4 horizontal
Deutsch: Veranschaulichung einiger Kugelflächenfunktionen (um die z-Achse rotierend). Dargestellt ist , wobei l der Zeile und m der Spalte entspricht. Zeilen und Spalten werden jeweils bei null beginnend durchnummeriert |
||||||||
Fonte | Opera propria | ||||||||
Autore | Cyp | ||||||||
Licenza (Riusare questo file) |
|
Source in C:
//GPL (as if anyone would want this anyway...)
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846264338327950288
//m>=0
double cfac(int l, int m, double z) {
int x;
int i;
double r, s, t;
r=log((2*l+1)*(.25/PI))*.5;
r-=log(2)*l;
i=(l+m+1)>>1;
for(x=2;x<=l-i;++x) r-= log(x);
if(l-m<i) {
/*for( ;x<=l-m;++x) r+= 0*log(x);*/ x=l-m+1;
for( ;x<=i ;++x) r-=.5*log(x);
} else {
/*for( ;x<=i ;++x) r-= 0*log(x);*/ x=i+1;
for( ;x<=l-m;++x) r+= log(x);
}
for( ;x<=l+m;++x) r+=.5*log(x);
for( ;x<=2*i;++x) r+= log(x);
if(m) r+=.5*log(2);
r=exp(r)*((l^i)&1?-1:1)*(2*i-l-m?z:1);
s=-z*z;
t=r;
for(i=((l+m+1)>>1)+1;i<=l;++i) t+=r*=s*(2*i-1)*(2*i)*(l-i+1)/((double)(2*i-l-m-1)*(2*i-l-m)*i);
return(t);
}
double cval(int m, double x, double y) {
int i;
_Complex double d=x+1i*y, r;
for(r=1;m;m>>=1,d*=d) if(m&1) r*=d;
return(__real__ r);
}
void rend(unsigned char *c, int sx, int sy, int pit, int l, int m, double ang) {
int a, b;
double x, y, z, sa, ca, f, t, r;
sa=sin(ang); ca=cos(ang);
for(b=0;b<sy;++b) {
for(a=0;a<sx;++a) {
z=1-b*2/(sy-1.);
x=a*2/(sx-1.)-1;
t=1-x*x-z*z;
if(t<0) t=1e99; else {
y=-sqrt(t);
t=cos(.2)*z-sin(.2)*y;
y=sin(.2)*z+cos(.2)*y;
z=t;
t=ca*x+sa*y;
y=-sa*x+ca*y;
x=t;
f=cfac(l, m, z);
t=cval(m, x, y)*f;//printf("a%lf, %lf, %lf, %lf\n", t, x, y, z);
}
r=128+t*512; if(r<0) r=0; else if(r>255) r=255; c[a*3+b*pit ]=(int)r|31;
r=128+t*256; if(r<0) r=0; else if(r>255) r=255; c[a*3+b*pit+1]=(int)r|15;
r=128+t*128; if(r<0) r=0; else if(r>255) r=255; c[a*3+b*pit+2]=(int)r|7;
}
}
}
unsigned char pic[256*256*3];
int main(void) {
FILE *f;
char fn[100];
int a, l, m;
for(a=0;a<256*256*3;++a) pic[a]=255;
for(a=0;a<100;++a) {
for(l=0;l<=4;++l) for(m=0;m<=l;++m) rend(pic+m*27*3+l*27*134*3, 26, 26, 134*3, l, m, PI*2/100*a);
// for(l=0;l<=4;++l) for(m=0;m<=l;++m) rend(pic+m*51*3+l*51*256*3, 50, 50, 256*3, l, m, PI*2/100*a);
// rend(pic+4*51*3+0*51*256*3, 50, 50, 256*3, 47, 1, PI*2/100*a);
// rend(pic+4*51*3+0*51*256*3, 50, 50, 256*3, 47, 11, PI*2/100*a);
// rend(pic, 256, 256, 256*3, 5, 2, PI*2/100*a);
sprintf(fn, "sph%04d.ppm", a);
f=fopen(fn, "wb");
fprintf(f, "P6\n%d %d\n255\n", 134, 134);
fwrite(pic, 134*134*3, 1, f);
fclose(f);
}
/* int l, m, i;
double r;
for(l=0;l<=7;++l) for(m=0;m<=l;++m) {
printf("%d,%d: %lf", l, m, r=cfac(l, m));
for(i=((l+m+1)>>1)+1;i<=l;++i) printf(", %lf", r*=(double)(2*i-1)*(2*i)*(l-i+1)/((double)(2*i-l-m-1)*(2*i-l-m)*i));
printf("\n");
}*/
return(0);
}
Source in Mathematica:
Export["Rotating spherical harmonics.gif",
Table[
GraphicsGrid[
Table[
SphericalPlot3D[
1,
{\[Theta], 0, \[Pi]},
{\[CapitalPhi], 0, 2 \[Pi]},
ColorFunction -> Function[
{x, y, z, \[Theta], \[Phi], r},
Blend[
{RGBColor["#1F2F57"], RGBColor["#FFCFA7"]},
2*(Re[
SphericalHarmonicY[l, m, \[Theta], \[Phi]]*
Exp[- Sign[m] I t]] + 0.25)]],
ColorFunctionScaling -> False,
Mesh -> False,
Boxed -> False,
Axes -> False,
PlotPoints -> 10,
MaxRecursion -> 2,
ViewPoint -> Front,
ImageSize -> {80, 80}
],
{l, 0, 5},
{m, 0, l}
]
],
{t, 0, 2 \[Pi], \[Pi]/10}
]
]
Cronologia del file
Fare clic su un gruppo data/ora per vedere il file come si presentava nel momento indicato.
Data/Ora | Miniatura | Dimensioni | Utente | Commento | |
---|---|---|---|---|---|
attuale | 12:06, 3 dic 2016 | 445 × 445 (799 KB) | Chemmix (discussione | contributi) | Changed range to ℓ = 0, …, 4 as in original file. | |
11:54, 3 dic 2016 | 533 × 533 (1,1 MB) | Chemmix (discussione | contributi) | Better quality version generated in Mathematica: <code> Export[][][][][][Theta], 0, \[Pi]}, {\[CapitalPhi], 0, 2 \[Pi]}, ColorFunction -> Function[][Theta], \[Phi], r}, Blend[]["#1F2F57"], RGBColor["#FFCFA7"]}, 2*(Re[][][Theta]... | ||
21:39, 12 ago 2005 | 134 × 134 (161 KB) | Cyp (discussione | contributi) | Rotating spherical harmonics, l=0 to 4 vertical, m=0 to ±4 horizontal, {{GFDL}} |
Impossibile sovrascrivere questo file.
Utilizzo del file
Nessuna pagina utilizza questo file.
Utilizzo globale del file
Anche i seguenti wiki usano questo file:
- Usato nelle seguenti pagine di ast.wikipedia.org:
- Usato nelle seguenti pagine di ca.wikipedia.org:
- Usato nelle seguenti pagine di cs.wikipedia.org:
- Usato nelle seguenti pagine di de.wikipedia.org:
- Usato nelle seguenti pagine di en.wikipedia.org:
- Usato nelle seguenti pagine di es.wikipedia.org:
- Usato nelle seguenti pagine di eu.wikipedia.org:
- Usato nelle seguenti pagine di fa.wikipedia.org:
- Usato nelle seguenti pagine di fr.wikibooks.org:
- Usato nelle seguenti pagine di he.wikipedia.org:
- Usato nelle seguenti pagine di hy.wikipedia.org:
- Usato nelle seguenti pagine di it.wikipedia.org:
- Usato nelle seguenti pagine di kk.wikipedia.org:
- Usato nelle seguenti pagine di ko.wikipedia.org:
- Usato nelle seguenti pagine di pl.wikipedia.org:
- Usato nelle seguenti pagine di pt.wikipedia.org:
- Usato nelle seguenti pagine di ru.wikipedia.org:
- Usato nelle seguenti pagine di sv.wikipedia.org:
- Usato nelle seguenti pagine di tr.wikipedia.org:
- Usato nelle seguenti pagine di zh.wikipedia.org:
Metadati
Questo file contiene informazioni aggiuntive, probabilmente aggiunte dalla fotocamera o dallo scanner usati per crearlo o digitalizzarlo. Se il file è stato modificato, alcuni dettagli potrebbero non corrispondere alla realtà.
Commento del file GIF | Created with the Wolfram Language : www.wolfram.com |
---|