Fil:Shell-diag-1.svg

Sideinnholdet støttes ikke på andre språk.
Fra Wikipedia, den frie encyklopedi

Opprinnelig fil(SVG-fil, standardstørrelse 303 × 147 piksler, filstørrelse: 21 KB)


Wikimedia Commons' logo

Beskrivelse

Beskrivelse
English: A diagram illustrating the derivation of Newton's shell theorem. Shown is a thin shell with a test mass outside the shell ().
Dato
Kilde Eget verk
Opphavsperson Xaonon

Lisensiering

Jeg, rettighetsinnehaver av dette arbeidet, publiserer det herved under følgende lisens:
w:no:Creative Commons
navngivelse del på samme vilkår
Denne filen er lisensiert under lisensen Creative Commons Navngivelse-DelPåSammeVilkår 4.0 Internasjonal.
Du står fritt:
  • til å dele – til å kopiere, distribuere og overføre verket
  • til å blande – til å endre verket
Under de følgende betingelsene:
  • navngivelse – Du må kreditere verket på passende vis, lenke til lisensen og indikere hvorvidt det har blitt gjort endringer. Du kan gjøre det på enhver rimelig måte, men ikke på en måte som antyder at lisensgiveren støtter deg eller din bruk av verket.
  • del på samme vilkår – Dersom du remikser, omarbeider eller på annen måte bygger på dette verket, må du kun distribuere resultatet under den samme eller en samsvarende lisens som denne.

Source

This image and the others in the same series (2, 3, 4) were generated from the MetaPost code presented below. The code is released under the same license as the images themselves.

% shell-diag.mp
% A diagram illustrating the derivation of Newton's shell theorem.  To be
% processed with MetaPost:
%   mpost --mem=metafun.mem -s 'outputformat="svg"' -s prologues=3 shell-diag.mp

color bandshade, fillshade;
bandshade = 0.7 [blue, white];
fillshade = 0.9 white;

numeric dotsize, deg;
dotsize = 5 bp;
deg = length( fullcircle )/360;

freelabeloffset := 3/4 freelabeloffset;
labeloffset := 2 labeloffset;

def dot( expr P ) =
  fill fullcircle scaled dotsize shifted P withcolor black;
enddef;

def draw_circle( expr R, stroke ) =
  save p;
  pen p;
  p = currentpen;
  pickup p scaled stroke;
  draw fullcircle scaled 2R;
  pickup p;
enddef;

vardef anglebetween( expr a, b, rad, str ) =
  save endofa, endofb, common, curve, where;
  pair endofa, endofb, common;
  path curve;
  numeric where;
  endofa = point length( a ) of a;
  endofb = point length( b ) of b;
  if round point 0 of a = round point 0 of b:
    common = point 0 of a;
  else:
    common = a intersectionpoint b;
  fi;
  where = turningnumber( common--endofa--endofb--cycle );
  curve = (unitvector( endofa - common ){(endofa - common) rotated (90 * where)} ..
           unitvector( endofb - common )) scaled rad shifted common;
  draw thefreelabel( str, point 1/2 of curve, common ) withcolor black;
  curve
enddef;

def draw_angle( expr a, b, rad, str ) =
  begingroup
    save p;
    pen p;
    p = currentpen;
    pickup p scaled 1/2;
    draw anglebetween( a, b, rad, str );
    pickup p;
  endgroup
enddef;

def label_line( expr a, b, disp, str ) =
  begingroup
  save mid, opp;
  pair mid, opp;
  mid = 1/2 [a, b];
  opp = -disp rotated (angle( b - a ) - 90) shifted mid;
  draw thefreelabel( str, mid, opp );
  draw a -- b;
  endgroup
enddef;

def draw_thinshell( expr R, r, theta, dtheta, thetarad, phirad ) =
  begingroup
    save M, m;
    pair M, m;
    M = (0, 0);
    m = (r, 0);

    save circ;
    path circ;
    circ = fullcircle scaled 2R;

    save thetapt, dthetapt;
    pair thetapt, dthetapt;
    thetapt   = point (theta * deg) of circ;
    dthetapt  = point ((theta + dtheta) * deg) of circ;

    save upper, lower, band;
    path upper, lower, band;
    upper = subpath (0, 4) of circ;
    lower = subpath (4, 8) of circ;
    band = buildcycle( upper, (xpart thetapt,  R) -- (xpart thetapt,  -R),
                       lower, (xpart dthetapt, R) -- (xpart dthetapt, -R) );

    % draw figures
    save p;
    pen p;
    p = currentpen;
    pickup p scaled 1/2;
    fill band withcolor bandshade;
    draw band;
    pickup p;

    save near, far;
    pair near, far;
    if theta < 90:
      near = 3/4[ulcorner band, llcorner band];
      far  = right shifted near;
    else:
      near = 3/4[urcorner band, lrcorner band];
      far  = left shifted near;
    fi;
    draw thefreelabel( btex $dM$ etex, near, far );

    dot( M );
    %label.llft( btex $M$ etex, M );

    dot( m );
    label.lrt( btex $m$ etex, m );

    draw M -- thetapt;
    label_line( M, m, right, btex $r$ etex );
    label_line( m, thetapt, right, btex $s$ etex );
    if R <> r:
      label_line( M, dthetapt, left, btex $R$ etex );
    else:
      draw M -- dthetapt;
    fi;

    draw_angle( m -- M, m -- thetapt, phirad, btex $\phi$ etex );
    draw_angle( M -- m, M -- thetapt, thetarad, btex $\theta$ etex );
    draw_angle( M -- thetapt, M -- dthetapt, R, btex $d\theta$ etex );
  endgroup
enddef;

def draw_thickshell( expr Ra, Rb, r ) =
  begingroup
    save m;
    pair m;
    m = (r, 0);

    fill fullcircle scaled 2Rb withcolor fillshade;
    fill fullcircle scaled 2r  withcolor bandshade;
    unfill fullcircle scaled 2Ra;

    dot( origin );
    dot( m );
    label.lrt( btex $m$ etex, m );
    label_line( origin, m, right, btex $r$ etex );

    draw_circle( Rb, 2 );
    if Ra > 0:
      draw_circle( Ra, 2 );
      label_line( origin, dir( 100 ) scaled Rb, left,  btex $R_b$ etex );
      label_line( origin, dir( 80 )  scaled Ra, right, btex $R_a$ etex );
    else:
      label_line( origin, dir( 90 )  scaled Rb, left,  btex $R_b$ etex );
    fi;
  endgroup
enddef;

% Thin shell, r > R
beginfig(1)
  numeric R;
  R = 1 in;
  draw_thinshell( R, 3R, 50, 15, 1/4 in, 3/4 in );
  draw_circle( R, 2 );
  setbounds currentpicture to boundingbox currentpicture enlarged 1pt;
endfig;

% Thin shell, r < R
beginfig(2)
  numeric R;
  R = 1 in;
  draw_thinshell( R, 0.7R, 125, 15, 1/8 in, 1/3 in );
  draw_circle( R, 2 );
  setbounds currentpicture to boundingbox currentpicture enlarged 1pt;
endfig;

% Thick shell
beginfig(3)
  numeric Ra, Rb, r;
  Ra = 0.8 in;
  Rb = 1.3 in;
  r = 1 in;

  draw_thickshell( Ra, Rb, r );
  setbounds currentpicture to boundingbox currentpicture enlarged 1pt;
endfig;

% Solid sphere
beginfig(4)
  numeric Ra, Rb, r;
  Ra = 0;
  Rb = 1.3 in;
  r = 1 in;

  draw_thickshell( Ra, Rb, r );
  setbounds currentpicture to boundingbox currentpicture enlarged 1pt;
endfig;

end

Bildetekster

Legg til en kort forklaring på hva filen representerer

Elementer som er med i denne fila

motiv

Filhistorikk

Klikk på et tidspunkt for å vise filen slik den var på det tidspunktet.

Dato/klokkeslettMiniatyrbildeDimensjonerBrukerKommentar
nåværende26. feb. 2017 kl. 02:55Miniatyrbilde av versjonen fra 26. feb. 2017 kl. 02:55303 × 147 (21 KB)Xaonontweak bounding box
26. feb. 2017 kl. 02:10Miniatyrbilde av versjonen fra 26. feb. 2017 kl. 02:10301 × 145 (21 KB)XaononUser created page with UploadWizard

De følgende 2 sidene bruker denne filen:

Global filbruk

Følgende andre wikier bruker denne filen:

Metadata