Ficheiro:Galilean transform of world line.gif

Origem: Wikimotorpedia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa

Galilean_transform_of_world_line.gif(200 × 200 píxeis, tamanho: 134 kB, tipo MIME: image/gif, cíclico, 100 quadros)

Este ficheiro vem da wiki na wiki Wikimedia Commons e pode ser usado por outros projetos. A descrição na página original de descrição do ficheiro é mostrada abaixo.

Descrição do ficheiro

Descrição
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

Eu, titular dos direitos de autor desta obra, publico-a com a seguinte licença:
GNU head É 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.
wikipedia:pt:Creative Commons
atribuição compartilhar sob os mesmos termos
Este ficheiro está licenciado sob a licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada.
Você é livre:
  • a compartilhar – copiar, distribuir e transmitir a obra
  • para remisturar – para adaptar a obra
Sob as seguintes condições:
  • atribuição – Você tem de fazer devida atribuição da autoria, fornecer um hiperligação para a licença e indicar se foram feitas alterações. Pode fazê-lo de qualquer forma razoável, mas não de forma a sugerir que o licenciador endossa você ou a sua utilização.
  • compartilhar sob os mesmos termos – Se remisturar, transformar ou ampliar o conteúdo, você tem que distribuir suas contribuições sob a mesma licença ou uma licença compatível com a original.
Esta marca de licenciamento foi adicionada a este ficheiro durante a atualização da licença GFDL.

Legendas

Adicione uma explicação de uma linha do que este ficheiro representa

Elementos retratados neste ficheiro

retrata

Histórico do ficheiro

Clique uma data e hora para ver o ficheiro tal como ele se encontrava nessa altura.

Data e horaMiniaturaDimensõesUtilizadorComentário
atual21h50min de 9 de novembro de 2006Miniatura da versão das 21h50min de 9 de novembro de 2006200 × 200 (134 kB)wikimediacommons>CypSource 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][

As seguintes 2 páginas usam este ficheiro: