File:Shell-diag-1.svg
Page contents not supported in other languages.
Tools
Actions
General
In other projects
Appearance
Size of this PNG preview of this SVG file: 303 × 147 pixels. Other resolutions: 320 × 155 pixels | 640 × 310 pixels | 1,024 × 497 pixels | 1,280 × 621 pixels | 2,560 × 1,242 pixels.
Original file (SVG file, nominally 303 × 147 pixels, file size: 21 KB)
This is a file from the Wikimedia Commons. Information from its description page there is shown below. Commons is a freely licensed media file repository. You can help. |
Summary
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
I, the copyright holder of this work, hereby publish it under the following license:
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
- 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
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
Items portrayed in this file
depicts
25 February 2017
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 | tweak bounding box | |
00:10, 26 February 2017 | 301 × 145 (21 KB) | Xaonon | User created page with UploadWizard |
File usage
The following page uses this file:
Global file usage
The following other wikis use this file:
- Usage on ar.wikipedia.org
- Usage on no.wikipedia.org
- Usage on ru.wikipedia.org
Metadata
This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.
If the file has been modified from its original state, some details may not fully reflect the modified file.
Width | 303.439804 |
---|---|
Height | 146.992523 |
Retrieved from "https://wiki.riteme.site/wiki/File:Shell-diag-1.svg"