Tényleg nem létezik?
  • sublimiter
    #1306
    Sokan gondolhatnak, nem is tudna kiszamolni, azert hord itt ossze mindenfele hulyeseget a fenytoresrol.

    Nos, akkor lassuk.
    Talan kezdesnek a Fold feluleten szamoljunk tavolsagot. Mi kell ehhez?

    http://en.wikipedia.org/wiki/Metric_tensor




    Nem tunik bonyolultnak

    skalar u=0 *radian;
    skalar v=90*radian;
    skalar du=1*radian;
    skalar dv=1*radian;
    skalar R=6378e3;


    skalar E=R*R*sin(v)*sin(v);
    skalar F=0;
    skalar G=R*R;
    printf("%Le %Le %Le \n",E,F,G);

    skalar dr=sqrt(E*du*du + F*du*dv + G*dv*dv);
    printf("%Lf \n",dr);

    Egesz konnyu, ha az ember ismeri az E,F,G egyutthatokat. Az u es a v koordinatak a felulet belso koordinatai, radianban. A gombre ismert az E,F,G erteke, de mi van akkor, ha egy ismeretlen feluleten kell tavolsagot szamolni?

    Ha ismert a felulet fuggvenye, akkor meghatarozhato az E,F,G az alabbi egyszeru modszerrel.

    Vegyunk fel harom pontot a feluleten, ezek
    a(u,v,R) , a(u+0.001,v,R) , a(u,v+0.001,R)
    Mint kitunik, a masodik kicsit u koordinataban van elmozgatva, a harmadik v-ben.
    Az alabbi sor a(u+0.001,v,R)-a(u,v,R) a masodik pontbol egy vektort vesz fel, ami az elso pont fele mutat. Ezt normalva, vagyis egysegnyi hosszura skalazva megkapjuk au vektort. A masik ket pontbol pedig av-t.

    Ezek mar nem a belso, 2 dimenzios felulet koordinata-rendszereben vannak, hanem a kulso, 3d-ben, amibe a gomb be van agyazva.
    Innen mar csak egy lepes az E,F,G , csak skalarszorzarukat kell venni a vektoroknak. Ez volt fentebb a masodik kepen. Ha vektorokat skalarisan szorzunk, akkor az igy nez ki.
    skalar skalar_szorzat(vektor v1,vektor v2) { return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;}
    A szorzas eredmenye pedig a ket vektor kozti szog koszinusza, ha mindket vektor egysegvektor, a vektoriranyu tavolsag, ha csak az egyik egyseg hosszu, vagy a vektor hosszanak a negyzete, ha a vektort onmagaval szorozzuk.
    Az elso es az utolso eset most a fontos. Ha ket vektor meroleges egymasra, szorzatuk nullat ad. Az F egyutthato tehat nulla, ha az u es v kulso koordinata tengelyek merolegesek egymasra.


    vektor au=normalt(a(u+0.001,v,R)-a(u,v,R));
    vektor av=normalt(a(u,v+0.001,R)-a(u,v,R));
    au=au*R;
    av=av*R;

    E=skalar_szorzat(au,au);
    F=skalar_szorzat(au,av);
    G=skalar_szorzat(av,av);
    printf("%Le %Le %Le \n",E,F,G);
    dr=sqrt(E*du*du + F*du*dv + G*dv*dv);
    printf("%Lf \n",dr);


    vektor va_=a(u ,v ,R);
    vektor vb_=a(u+du,v+dv,R);
    va_=va_-vb_;
    dr=sqrt(skalar_szorzat(va_,va_));
    printf("%Lf \n",dr);

    Es az eredmeny:
    4.067888e+13 0.000000e+00 4.067888e+13
    157426.152109
    4.067888e+13 1.016972e+07 4.067888e+13
    157426.161948
    157418.159772

    Es ez mar a differencial geometria birodalma, ami az altalanos relativitas egyik legfontossabb matematikai eszkoze.
    Es ez meg csak a kezdet..