Image:Uniaxial.png
From Wikipedia, the free encyclopedia
Size of this preview: 240 × 600 pixels
Full resolution (800 × 2,000 pixels, file size: 26 KB, MIME type: image/png)
This is a file from the Wikimedia Commons. The description on its description page there is shown below.
|
Contents |
[edit] Summary
- Author: en:user:AndrewKepert
- Toolchain: MetaPost and TeX.
- Source: below
- Description: Illustration of a typical member of each of 7 infinite families of 3D point groups.
- Destination: en:Point groups in three dimensions.
- Permission: GFDL / CC
[edit] Source code
Instructions: on a system with a modern TeTeX or similar installed save the following two files, then run
mpost uniaxial && pdftex uniaxial
You will then need to use ghostscript or similar to make a raster image out of the pdf.
Source code author: en:user:AndrewKepert
Source code license: GPL
[edit] MetaPost source file uniaxial.mp
picture pic[]; pair pt[],pt[]n,pt[]e,pt[]w,pt[]s,pt[]ne,pt[]nw,pt[]se,pt[]sw; pair ux,uy,uz; path unitcircle; unitcircle=fullcircle scaled 2; boolean front[]; color colour[]; path p[]; u=16; ux=.4*down*u; uy=right*2u; uz=up*.5u; transform xyplane[]; (0,0) transformed xyplane0 = (0,0); (1,0) transformed xyplane0 = ux; (0,1) transformed xyplane0 = uy; for i = -1 step 1/16 until 1: xyplane[i]=xyplane[0] shifted (i*uz); endfor theta=10; alpha=8; N:=6; for i = -1 step .5 until N+1: pt[i] = right rotated theta rotated (360i/N) transformed xyplane0; front[i]= ypart pt[i] < ypart xyplane0; pt[i]e = right rotated (theta+alpha) rotated (360i/N) transformed xyplane0; pt[i]w = right rotated (theta-alpha) rotated (360i/N) transformed xyplane0; pt[i]n = right rotated theta rotated (360i/N) transformed xyplane[.75]; pt[i]ne = right rotated (theta+alpha) rotated (360i/N) transformed xyplane[.75]; pt[i]nw = right rotated (theta-alpha) rotated (360i/N) transformed xyplane[.75]; pt[i]s = right rotated theta rotated (360i/N) transformed xyplane[-.75]; pt[i]se = right rotated (theta+alpha) rotated (360i/N) transformed xyplane[-.75]; pt[i]sw = right rotated (theta-alpha) rotated (360i/N) transformed xyplane[-.75]; endfor t0=directiontime uz of (unitcircle transformed xyplane0); t1=directiontime -uz of (unitcircle transformed xyplane0); t2=t0+length unitcircle; path backface,frontface; backface:=(subpath (t0,t1) of unitcircle transformed xyplane[1]) -- (subpath (t1,t0) of unitcircle transformed xyplane[-1]) -- cycle; frontface:= (subpath (t1,t2) of unitcircle transformed xyplane[1]) -- (subpath (t2,t1) of unitcircle transformed xyplane[-1]) -- cycle; colour0:=(.8,.85,1); colour1:=.8[black,colour0]; colour2:=.6[black,colour1]; def constructribbon(expr delta)= % stuff on back face pic1:=image( for i = 0 step delta until N-eps: if not front[i]: fill p[i]; fi endfor fill (subpath (t0,t1) of unitcircle transformed xyplane[1/16]) -- (subpath (t1,t0) of unitcircle transformed xyplane[-1/16]) -- cycle;); % stuff on front face pic2:=image( for i = 0 step delta until N-eps: if front[i]: fill p[i]; fi endfor fill (subpath (t1,t2) of unitcircle transformed xyplane[1/16]) -- (subpath (t2,t1) of unitcircle transformed xyplane[-1/16]) -- cycle;); % all of back face pic0:=image(fill frontface withcolor colour0; fill backface withcolor colour1; draw pic1 withcolor colour2); fill backface withcolor colour0; fill frontface withcolor colour0; draw pic1; clip pic0 to frontface; draw pic0; draw pic2; draw unitcircle transformed xyplane[1] withpen pencircle scaled 0.2 withcolor colour1; draw subpath (t2,t1) of unitcircle transformed xyplane[-1] withpen pencircle scaled 0.2 withcolor colour1; enddef; beginfig(1) for i=0 upto N-1: p[i]:= pt[i]--pt[i]w--pt[i]ne--pt[i]e--cycle; endfor constructribbon(1); endfig; beginfig(2) for i=0 upto N-1: p[i]:= pt[i]w--pt[i]ne--pt[i]se--cycle ; endfor constructribbon(1); endfig; beginfig(3) for i=0 upto N-1: p[i]:= pt[i]--pt[i]e--pt[i]n--pt[i]w--cycle ; endfor constructribbon(1); endfig; beginfig(4) for i=0 upto N-1: %p[i]:= pt[i]--pt[i]ne--pt[i]e--pt[i]--pt[i]sw--pt[i]w--cycle ; p[i]:= pt[i]ne--pt[i]e-- pt[i]sw--pt[i]w--cycle ; endfor constructribbon(1); endfig; beginfig(5) for i=0 upto N-1: p[i]:= pt[i]n--pt[i]e--pt[i]s--pt[i]w--cycle ; endfor constructribbon(1); endfig; beginfig(6) for i=0 upto N-1: p[i]:= pt[i]--pt[i]e--pt[i]n--pt[i]w--cycle ; p[i+.5]:= pt[i+.5]--pt[i+.5]e--pt[i+.5]s--pt[i+.5]w--cycle ; endfor constructribbon(1/2); endfig; beginfig(7) for i=0 upto N-1: if odd i: p[i]:= pt[i]--pt[i]w--pt[i]ne--pt[i]e--cycle; else: p[i]:= pt[i]--pt[i]w--pt[i]se--pt[i]e--cycle; fi endfor constructribbon(1); endfig; bye
[edit] TeX source file uniaxial.tex
\input supp-pdf {\tabskip=5pt \lineskiplimit=5pt \lineskip=\lineskiplimit \halign{\hfil#\hfil&\hfil$\vcenter{\convertMPtoPDF{#}{1}{1}}$\hfil\cr $C_6$&uniaxial.1\cr $C_{6h}$&uniaxial.2\cr $C_{6v}$&uniaxial.3\cr $D_6$&uniaxial.4\cr $D_{6h}$&uniaxial.5\cr $D_{6d}$&uniaxial.6\cr $S_6$&uniaxial.7\cr } } \bye
[edit] Licensing
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Dimensions | User | Comment | |
---|---|---|---|---|
current | 08:28, 5 July 2006 | 800×2,000 (26 KB) | AndrewKepert | (Author: user:en:AndrewKepert Toolchain: MetaPost and TeX. Source: will be uploaded Description: Illustration of a typical member of each of 7 infinite families of 3D point groups. Destination: en:Point groups in three dimensions. Permission: GF) |
File links
The following pages on the English Wikipedia link to this file (pages on other projects are not listed):