File:Galilean_transform_of_world_line.gif
De Wikipedia, a enciclopédia encyclopedia
Galilean_transform_of_world_line.gif (200 × 200 píxeis, tamanho: 134 kB, tipo MIME: image/gif, cíclico, 100 quadros)
Esta imagem provém do Wikimedia Commons, um acervo de conteúdo livre da Wikimedia Foundation que pode ser utilizado por outros projetos.
|
Descrição do ficheiro
DescriçãoGalilean transform of world line.gif |
English: Changing views of spacetime along the world line of a slowly accelerating observer
In this animation, the vertical direction indicates time and the horizontal direction indicates distance, the dashed line is the spacetime trajectory ("world line") of the observer. The lower half of the diagram shows the events that are "earlier" than the observer, and the upper half shows events that are "later" than the observer. The small dots are arbitrary events in spacetime. The slope of the world line (deviation from being vertical) gives the relative velocity to the observer. Note how the view of spacetime changes when the observer accelerates. Compare Image:Lorentz transform of world line.gif, which depicts the situation for rapid acceleration according to special relativity. |
Origem | Obra do próprio |
Autor | Cyp |
Outras versões | |
Source code InfoField | Source of program used to generate image:
//GPL
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.141592653589793238462
#define SX 200
#define SY 200
#define PL 100
#define DN 2000
unsigned char img[SX][SY];
double path[PL+1][2], dots[DN][2];
void dodot(int x, int y, double f) {
if(x<0||x>=SX||y<0||y>=SY) return;
img[y][x]*=f;
}
void dospot(int x, int y) {
dodot(x, y, .5);
dodot(x+1, y, .75);
dodot(x-1, y, .75);
dodot(x, y+1, .75);
dodot(x, y-1, .75);
}
void dobigspot(int x, int y) {
int a, b;
for(b=-3;b<=3;++b) for(a=-3;a<=3;++a) if(a*a+b*b<=9) dodot(x+a, y+b, (a*a+b*b)/10.);
}
void dospotd(double t, double x) {
dospot((x+1)*(SX/2.), (-t+1)*(SY/2.));
}
void dosmallspotd(double t, double x) {
dodot((x+1)*(SX/2.), (-t+1)*(SY/2.), .25);
}
void dobigspotd(double t, double x) {
dobigspot((x+1)*(SX/2.), (-t+1)*(SY/2.));
}
int main() {
char fn[100];
int n, x, y, t, i, w;
double a, b, da, db, ta, tb;
FILE *f;
path[0][0]=path[0][1]=0;
for(t=0;t<=PL;++t) path[t][1]=0;
for(n=1;n<10;++n) {
a=rand()%20000/10000.-1; a/=n*n*n*n/200.; b=rand()%20000*(PI/10000);
for(t=0;t<=PL;++t) {
path[t][1]+=a*sin((2*PI/PL)*n*t+b);
}
}
for(t=PL;t>=0;--t) path[t][1]-=path[0][1];
path[0][0]=0;
for(t=1;t<=PL;++t) {
a=path[t][1]-path[t-1][1];
path[t][0]=path[t-1][0]+ 1 /* sqrt(1+a*a) */ ;
}
for(t=0;t<DN;++t) {
a=rand()%20000/10000.-1; b=rand()%20000/10000.-1;
dots[t][0]=a*path[PL][0]/2; dots[t][1]=b*1000;
}
for(n=0;n<100;++n) {
i=PL*n/100;
a=path[i+1][0]-(da=path[i][0]); b=(db=path[i][1])-path[i+1][1]; /* a = 1, this is a galilean transform */
ta=path[PL][0]; tb=path[PL][1];
a/=50.; b/=50.;
for(y=0;y<SY;++y) for(x=0;x<SX;++x) img[y][x]=255;
/*for(y=0;y<SY;++y) img[y][y*SX/SY]*=.5;
for(y=0;y<SY;++y) img[y][(SY-y-1)*SX/SY]*=.5;*/
for(x=0;x<SX;++x) img[SY/2][x]*=.5;
for(w=-20;w<=20;++w)
for(t=0;t<PL;++t) dospotd(a*(path[t][0]-da-w*ta) /* +b*(path[t][1]-db-w*tb) */,
b*(path[t][0]-da-w*ta) +a*(path[t][1]-db-w*tb));
for(w=-20;w<=20;++w)
for(t=0;t<PL;t+=10) dobigspotd(a*(path[t][0]-da-w*ta) /* +b*(path[t][1]-db-w*tb) */,
b*(path[t][0]-da-w*ta) +a*(path[t][1]-db-w*tb));
for(w=-20;w<=20;++w)
for(t=0;t<DN;++t) dospotd(a*(dots[t][0]-da-w*ta) /* +b*(dots[t][1]-db-w*tb) */,
b*(dots[t][0]-da-w*ta) +a*(dots[t][1]-db-w*tb));
//if(n==0) printf("%lf; %lf, %lf, %lf; %lf, %lf, %lf, %lf, %lf\n", a*(path[PL][0]-da-1*ta)+b*(path[PL][1]-db-1*tb), path[PL][0], da, 1*ta, path[PL][1], db, 1*tb, path[0][0], path[0][1]);
sprintf(fn, "gal%04d.pgm", n);
f=fopen(fn, "wb");
fprintf(f, "P5\n%d %d\n255\n", SX, SY);
fwrite(img, 256*256, 1, f);
fclose(f);
}
return 0;
}
|
Licenciamento
É concedida permissão para copiar, distribuir e/ou modificar este documento nos termos da Licença de Documentação Livre GNU, versão 1.2 ou qualquer versão posterior publicada pela Free Software Foundation; sem Secções Invariantes, sem textos de Capa e sem textos de Contra-Capa. É incluída uma cópia da licença na secção intitulada GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
A utilização deste ficheiro é regulada nos termos da licença Creative Commons - Atribuição-CompartilhaIgual 3.0 Não Adaptada. | ||
| ||
Esta marca de licenciamento foi adicionada a este ficheiro durante a atualização da licença GFDL.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
Elementos retratados neste ficheiro
retrata
Um valor sem um elemento no repositório Wikidata
Histórico do ficheiro
Clique uma data e hora para ver o ficheiro tal como ele se encontrava nessa altura.
Data e hora | Miniatura | Dimensões | Utilizador | Comentário | |
---|---|---|---|---|---|
atual | 21h50min de 9 de novembro de 2006 | 200 × 200 (134 kB) | Cyp | Source of program used to generate image: <pre>//GPL #include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.141592653589793238462 #define SX 200 #define SY 200 #define PL 100 #define DN 2000 unsigned char img[SX][SY]; double path[PL+1][ |
Utilização local do ficheiro
As seguintes 2 páginas usam este ficheiro:
Utilização global do ficheiro
As seguintes wikis usam este ficheiro:
- en.wikipedia.org
- sh.wikipedia.org
- sr.wikipedia.org
- su.wikipedia.org
- tr.wikipedia.org
- zh.wikipedia.org