% diam.mp % % Copyright (c) 2006, 2007 Peter Backes % % Inspired by fig. 1 and 2 in Jasper Paulsen: Diamond Girdles (2001). % verbatimtex \font\ptmr=ptmr\ptmr etex prologues:=1; defaultfont:="Times-Roman"; beginfig(1); sep:=140; z0=(sep,2*sep)=.5[z1,z5]; z1=z2+(0,2.2+.7); z3=z2+whatever*dir(-40.75); x5-x1=100; y4=y2; x4-x3=x3-x2; y5=y1; x5=x4; x5-x6=x7-x1; y7=y6; x6-x7=53; z7=z1+whatever*dir(34.5); draw z1--z2--z3--z4--z5--z6--z7--cycle; %draw z7--z1--z2--z3; %dotlabels.ulft(1); %dotlabels.llft(2); %dotlabels.bot(3); %dotlabels.lrt(4); %dotlabels.urt(5); %dotlabels.top(6,7); dista=.5(x6-x7); distb=.5(x5-x1); z0t=(2*sep,sep); for x = 0 upto 7: z[x+1]t = z0t+dista*dir(x*45); z[x+1]u = z0t+distb*dir(x*45); z[x+1]u1 = z0t+distb*dir(x*45+.125*45); z[x+1]u2 = z0t+distb*dir(x*45+.25*45); z[x+1]u3 = z0t+distb*dir(x*45+.375*45); z[x+1]w1 = z0t+distb*dir(x*45+.625*45); z[x+1]w2 = z0t+distb*dir(x*45+.75*45); z[x+1]w3 = z0t+distb*dir(x*45+.875*45); endfor; dist=abs(z0t-.5[z2t,z1t]); z0a=z0-(0,sep)=.5[z1a,z5a]; z1a-z2a=z1-z2; z2a-z3a=z2-z3; z3a-z4a=z3-z4; z4a-z5a=z4-z5; y6a-y0a=y6-y0; y7a-y0a=y7-y0; x6a-x0a=x0a-x7a=dist; z7l=z1a+whatever*dir(42)=z7a-whatever*dir(15); distc = x0a - x7l; z6r=(x0a+distc,y7l); z1x=z1u+whatever*dir(90)=z2u+whatever*dir(-45); %dotlabels.rt(1x); for x = 0 upto 7: z[x+1]v = z0t+distc*dir(22.5+x*45); z[x+1]w = z0t+distb*dir(22.5+x*45); endfor; %dotlabels.rt(1t,1u); %dotlabels.urt(2t,2u,1v,2v,1w,2w); %dotlabels.top(3t,3u); %dotlabels.ulft(4t,4u,3v,4v,3w,4w); %dotlabels.lft(5t,5u); %dotlabels.llft(6t,6u,5v,6v,5w,6w); %dotlabels.bot(7t,7u); %dotlabels.lrt(8t,8u,7v,8v,7w,8w); z3l=z2a+whatever*dir(-40.75-2); z2y=.5[z4a,z2a]-(abs(z1x-z0t),0); z3l=whatever[z3a,z2y]; z3r=z3a+(x3a-x3l,y3l-y3a); y3z=y3a+5; z3z=whatever[z3a,z3l]; %dotlabels.llft(3z); diste=x0a-x3z; draw z1a--z2a--z3l--z3a--z3r--z4a--z5a--z6r--z6a--z7a--z7l--cycle; %draw z7a--z7l--z1a--z2a--z3l--z3a; %dotlabels.ulft(1a,7l); %dotlabels.llft(2a,3l); %dotlabels.bot(3a); %dotlabels.lrt(4a,3r); %dotlabels.urt(5a,6r); %dotlabels.top(6a,7a); distd=x0a-x3l; z0b=z0+(sep,0); for x = 0 upto 7: z[x+1]b = z0b+distb*dir(x*45); z[x+1]c = z0b+distb*dir(22.5+x*45); z[x+1]d = z0b+distd*dir(22.5+x*45); z[x+1]e = z0b+diste*dir(22.5+x*45); z[x+1]b1 = z0t+distb*dir(x*45+.125*45); z[x+1]b2 = z0t+distb*dir(x*45+.25*45); z[x+1]b3 = z0t+distb*dir(x*45+.375*45); z[x+1]c1 = z0t+distb*dir(x*45+.625*45); z[x+1]c2 = z0t+distb*dir(x*45+.75*45); z[x+1]c3 = z0t+distb*dir(x*45+.875*45); endfor; %dotlabels.rt(1b); %dotlabels.urt(2b,1c,2c,1d,2d,1e,2e); %dotlabels.top(3b); %dotlabels.ulft(4b,3c,4c,3d,4d,3e,4e); %dotlabels.lft(5b); %dotlabels.llft(6b,5c,6c,5d,6d,5e,6e); %dotlabels.bot(7b); %dotlabels.lrt(8b,7c,8c,7d,8d,7e,8e); draw for x = 1 upto 8: z[x]b..z[x]c.. endfor cycle; draw for x = 1 upto 8: z[x]e-- endfor cycle; for x = 1 upto 8: draw z[x]e--z[x]d--z[x]c; draw z[x]b--z[x]d--z[(x mod 8)+1]b; endfor; draw for x = 1 upto 8: z[x]u..z[x]w.. endfor cycle; draw for x = 1 upto 8: z[x]t-- endfor cycle; draw for x = 1 upto 8: z[x]t--z[x]v-- endfor cycle; draw for x = 1 upto 8: z[x]u--z[x]v-- endfor cycle; for x = 1 upto 8: draw z[x]v--z[x]w; endfor; z1u1'=.25[z1u,z1w]; z1u2'=.5[z1u,z1w]; z1u3'=.75[z1u,z1w]; z1a1=(x0a,y1a)-(abs(z0t-z1u1'),0); z1a2=(x0a,y1a)-(abs(z0t-z1u2'),0); z1a3=(x0a,y1a)-(abs(z0t-z1u3'),0); x1a1'=x1a2'=x1a3'=x1a; z0f=whatever[z1a,z7l]=whatever[z5a,z6r]; %dotlabels.top(0f); z1a1'=whatever[z0f,z1a1]; z1a2'=whatever[z0f,z1a2]; z1a3'=whatever[z0f,z1a3]; z1b1'=.25[z1b,z1c]; z1b2'=.5[z1b,z1c]; z1b3'=.75[z1b,z1c]; z2a1=(x0a,y2a)-(abs(z0b-z1b1'),0); z2a2=(x0a,y2a)-(abs(z0b-z1b2'),0); z2a3=(x0a,y2a)-(abs(z0b-z1b3'),0); x2a1'=x2a2'=x2a3'=x2a; z3f=whatever[z2a,z3l]=whatever[z4a,z3r]; %dotlabels.rt(3f); z2a1'=whatever[z3f,z2a1]; z2a2'=whatever[z3f,z2a2]; z2a3'=whatever[z3f,z2a3]; %draw (x1,y1-y1a+y1a1')--(x2,y2+y2a1'-y2a); %draw (x1,y1-y1a+y1a2')--(x2,y2+y2a2'-y2a); draw (x1,y1-y1a+y1a3')--(x2,y2+y2a3'-y2a); for i = 1 upto 4: draw (x0,y1)+(x[i]u-x0t,0) ..(x0,y1)+(x[i]u1-x0t,-(y1a-y1a1')) ..(x0,y1)+(x[i]u2-x0t,-(y1a-y1a2')) ..(x0,y1)+(x[i]u3-x0t,-(y1a-y1a3')) ..(x0,y1)+(x[i]w-x0t,0) & (x0,y1)+(x[i]w-x0t,0) ..(x0,y1)+(x[i]w1-x0t,-(y1a-y1a3')) ..(x0,y1)+(x[i]w2-x0t,-(y1a-y1a2')) ..(x0,y1)+(x[i]w3-x0t,-(y1a-y1a1')) ..(x0,y1)+(x[i+1]u-x0t,0); draw (x0,y2)+(x[i]b-x0b,0) ..(x0,y2)+(x[i]b1-x0b,(y2a1'-y2a)) ..(x0,y2)+(x[i]b2-x0b,(y2a2'-y2a)) ..(x0,y2)+(x[i]b3-x0b,(y2a3'-y2a)) ..(x0,y2)+(x[i]c-x0b,0) & (x0,y2)+(x[i]c-x0b,0) ..(x0,y2)+(x[i]c1-x0b,(y2a3'-y2a)) ..(x0,y2)+(x[i]c2-x0b,(y2a2'-y2a)) ..(x0,y2)+(x[i]c3-x0b,(y2a1'-y2a)) ..(x0,y2)+(x[i+1]b-x0b,0); endfor; draw for i = 1 upto 4:(x0,y1)+(x[i]u-x0t,0) --(x0,y1)+(x[i]v-x0t,y7l-y1a)--endfor (x0,y1)+(x5u-x0t,0); for i = 1 upto 4: draw (x0,y1)+(x[i]w-x0t,0)--(x0,y1)+(x[i]v-x0t,y7l-y1a); endfor; draw for i = 1 upto 4:(x0,y7)+(x[i]t-x0t,0) --(x0,y1)+(x[i]v-x0t,y7l-y1a)--endfor (x0,y7)+(x5t-x0t,0); draw for i = 1 upto 4:(x0,y2)+(x[i]b-x0b,0) --(x0,y2)+(x[i]d-x0b,y3l-y2a)--endfor (x0,y2)+(x5b-x0b,0); for i = 1 upto 4: draw (x0,y2)+(x[i]c-x0b,0)--(x0,y2)+(x[i]d-x0b,y3l-y2a)--z3; endfor; draw z2t--z1v--z1t--cycle shifted (60*dir(22.5)); draw z1v--z1u--z8v--z1t--cycle shifted (60*dir(0)); draw z1u..z8w..z8u--z8v--cycle shifted (60*dir(-22.5)); draw (z8v--z8w) shifted (60*dir(-22.5)); draw z2b..z1c..z1b--z1d--cycle shifted (60*dir(22.5)); draw (z1d--z1c) shifted (60*dir(22.5)); draw z1e--z8e--z8d--z1b--z1d--cycle shifted (60*dir(0)); draw z1e--z2e--z3e--z4e--z5e--z6e--z7e--z8e--cycle shifted (80*dir(-22.5)); label.rt(btex 8 Star Facets etex, z1v shifted (60*dir(22.5))); label.rt(btex 8 Kite Facets etex, z1u shifted (60*dir(0))); label.lrt(btex 16 Upper Girdle Facets etex, z8w shifted (60*dir(-22.5))); label.rt(btex 16 Lower Girdle Facets etex, z1c shifted (60*dir(22.5))); label.rt(btex 8 Pavilion Main Facets etex, z1b shifted (60*dir(0))); label.rt(btex 1 Culet etex, .5[z1e,z8e] shifted (80*dir(-22.5))); label(btex 1 Table etex, z0t); x0j=x1-10; z7-z7j=z1-z1j=z2-z2j=z3-z3j =z5j-z5=z4j-z4=(4,0); x0j'=x5+10; z1k-z1=z7k-z7=z6k-z6=z5k-z5=(0,4); y0j=y7+10; y0j'=y7+25; draw z7j--(x0j,y7j); draw z1j--(x0j,y1j); draw z2j--(x0j,y2j); draw z3j--(x0j,y3j); draw z5j--(x0j',y5j); draw z4j--(x0j',y4j); draw z1k--(x1k,y0j'); draw z7k--(x7k,y0j); draw z6k--(x6k,y0j); draw z5k--(x5k,y0j'); drawarrow .5[(x1k,y0j'),(x5k,y0j')]-(0,4)--(x1k,y0j')-(0,4); drawarrow .5[(x1k,y0j'),(x5k,y0j')]-(0,4)--(x5k,y0j')-(0,4); label.top(btex Diameter etex, .5[(x1k,y0j'),(x5k,y0j')]-(0,4)); drawarrow .5[(x7k,y0j),(x6k,y0j)]-(0,4)--(x7k,y0j)-(0,4); drawarrow .5[(x7k,y0j),(x6k,y0j)]-(0,4)--(x6k,y0j)-(0,4); label.top(btex Table etex, .5[(x7k,y0j),(x6k,y0j)]-(0,4)); drawarrow .5[(x0j,y1j),(x0j,y7j)]+(4,0)--(x0j,y1j)+(4,0); drawarrow .5[(x0j,y1j),(x0j,y7j)]+(4,0)--(x0j,y7j)+(4,0); label.lft(btex Crown Height etex, .5[(x0j,y1j),(x0j,y7j)]+(4,0)); drawarrow .5[(x0j,y2j),(x0j,y3j)]+(4,0)--(x0j,y2j)+(4,0); drawarrow .5[(x0j,y2j),(x0j,y3j)]+(4,0)--(x0j,y3j)+(4,0); label.lft(btex Pavilion Depth etex, .5[(x0j,y2j),(x0j,y3j)]+(4,0)); draw (x0j',y5j)-(2,y1a-y1a2')--(x0j',y5j)+(10,-(y1a-y1a2')); draw (x0j',y4j)+(-2,y2a2'-y2a)--(x0j',y4j)+(10,y2a2'-y2a); drawarrow (x0j',y5j)-(4,-12)--(x0j',y5j)-(4,0); drawarrow (x0j',y4j)-(4,8)--(x0j',y4j)-(4,0); label.top(btex Thick part of girdle etex rotated 90, (x0j',y5j)-(4,-12)); drawarrow (x0j',y5j)+(10-4,-(y1a-y1a2')+8)--(x0j',y5j)+(10-4,-(y1a-y1a2')); drawarrow (x0j',y4j)+(10-4,y2a2'-y2a-12)--(x0j',y4j)+(10-4,y2a2'-y2a); label.bot(btex Girdle etex rotated 90, (x0j',y4j)+(10-4,y2a2'-y2a-12)); label.urt(btex Crown Angle etex rotated 34.5, z1+(-30,30)); label.lrt(btex Pavilion Angle etex rotated -40.75, z2+(-40,-40)); endfig; end