File:Shell-diag-1.svg
Original file (SVG file, nominally 303 × 147 pixels, file size: 21 KB)
Captions
Summary[edit]
DescriptionShell-diag-1.svg |
English: A diagram illustrating the derivation of Newton's shell theorem. Shown is a thin shell with a test mass outside the shell (). |
Date | |
Source | Own work |
Author | Xaonon |
Licensing[edit]
- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
Source[edit]
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
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 00:55, 26 February 2017 | 303 × 147 (21 KB) | Xaonon (talk | contribs) | tweak bounding box | |
00:10, 26 February 2017 | 301 × 145 (21 KB) | Xaonon (talk | contribs) | User created page with UploadWizard |
You cannot overwrite this file.
File usage on Commons
The following page uses this file:
File usage on other wikis
The following other wikis use this file:
- Usage on ar.wikipedia.org
- Usage on en.wikipedia.org
- Usage on no.wikipedia.org
- Usage on ru.wikipedia.org
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Width | 303.439804 |
---|---|
Height | 146.992523 |