(*^ ::[ Information = "This is a Mathematica Notebook file. It contains ASCII text, and can be transferred by email, ftp, or other text-file transfer utility. It should be read or edited using a copy of Mathematica or MathReader. If you received this as email, use your mail application or copy/paste to save everything from the line containing (*^ down to the line containing ^*) into a plain text file. On some systems you may have to give the file a name ending with ".ma" to allow Mathematica to recognize it as a Notebook. The line below identifies what version of Mathematica created this file, but it can be opened using any other version as well."; FrontEndVersion = "NeXT Mathematica Notebook Front End Version 2.2"; NeXTStandardFontEncoding; fontset = title, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e8, 24, "Times"; ; fontset = subtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e6, 18, "Times"; ; fontset = subsubtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, L1, e6, 14, "Times"; ; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, L1, a20, 18, "Times"; ; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, L1, a15, 14, "Times"; ; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, L1, a12, 12, "Times"; ; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ; fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, bold, L1, 12, "Courier"; ; fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; ; fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ; fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ; fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w282, h287, L1, 12, "Courier"; ; fontset = name, inactive, noPageBreakInGroup, nohscroll, preserveAspect, M7, italic, B65535, L1, 10, "Times"; ; fontset = header, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, L1, 12, "Times"; ; fontset = leftheader, 12; fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, italic, L1, 12, "Times"; ; fontset = leftfooter, 12; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Courier"; ; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; paletteColors = 128; automaticGrouping; currentKernel; ] :[font = title; inactive; preserveAspect; startGroup] Tetrahedron :[font = section; inactive; preserveAspect; startGroup] BRIEF ABSTRACT :[font = subsection; inactive; preserveAspect; endGroup] By folding a triangle, create a tetrahedron and find its volume. This is a short yet challenging problem to enhance 3D visualization. While it could be solved with calculus, a nicer solution relies only on skills learned in HS geometry. :[font = section; inactive; Cclosed; preserveAspect; startGroup] GENERAL INFORMATION :[font = subsection; inactive; preserveAspect] FileName: Tetra :[font = subsection; inactive; preserveAspect] Full title: The Volume of a Tetrahedron :[font = subsection; inactive; preserveAspect] Last Update: 5/31/96 :[font = subsection; inactive; preserveAspect] Developer: Aaron Klebanoff, Department of Mathematics, Rose-Hulman Institute of Technology, Terre Haute IN 47803 USA. :[font = subsection; inactive; preserveAspect] Contact: Aaron Klebanoff, Department of Mathematics, Rose-Hulman Institute of Technology, Terre Haute IN 47803 USA. Phone: 812-877-8151. Email: Klebanoff@rose-hulman.edu. FAX: 812-877-3198. :[font = subsection; inactive; preserveAspect; endGroup] Support: The production of this material is supported by the National Science Foundation under Division of Undergraduate Education grant DUE-9352849: Development Site for Complex, Technology-Based Problems in Calculus with Applications in Science and Engineering and the Arvin Foundation of Columbus IN. :[font = section; inactive; Cclosed; preserveAspect; startGroup] STATEMENT OF PROBLEM :[font = subsection; inactive; preserveAspect; startGroup] The sides of triangle ABC measure 11, 20, and 21 units. We make folds along lines PQ, QR, and RP, where P, Q, and R are the midpoints of its sides, until A, B, and C coincide. What is the volume of the resulting tetrahedron? :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 0; pictureWidth = 471; pictureHeight = 291; endGroup; endGroup] %! %%Creator: Mathematica %%AspectRatio: 0.617834 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 35 414 0 0 ] [ 506 705 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: TETRA1.draw - /afs/rose-hulman.edu/class/NSFProblems/StaffWork/FilesKlebanoff/TETRA %%Creator: Draw %%CreationDate: Mon Jan 22 11:34:46 1996 %%For: klebanof %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 35 414 506 705 %%NXNextStepVersion: 3.0 %%EndComments %%BeginProcSet: /usr/lib/NextStep/printPackage.ps 3.0 %! % NeXT Printing Package % Version: 3.1 % Copyright: 1988, NeXT, Inc. /__NXdef{1 index where{pop pop pop}{def}ifelse}bind def /__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def /UserObjects 10 array __NXdef /defineuserobject{ exch dup 1 add dup UserObjects length gt{ array dup 0 UserObjects putinterval /UserObjects exch def }{pop}ifelse UserObjects exch 3 -1 roll put }__NXbdef /undefineuserobject{UserObjects exch null put}__NXbdef /execuserobject{UserObjects exch get exec}__NXbdef /__NXRectPath{4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath}__NXbdef /__NXProcessRectArgs{ 1 index type /arraytype eq{ exch 0 4 2 index length 1 sub{ dup 3 add 1 exch{1 index exch get exch}for 5 1 roll 5 index exec }for pop pop }{exec}ifelse }__NXbdef /rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef /rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef /rectstroke{ gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{ {gsave __NXRectPath null concat stroke grestore} dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore }__NXbdef /_NXLevel2 systemdict /languagelevel known {languagelevel 2 ge}{false}ifelse __NXdef /xyshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index 2 mul 1 add get add exch 3 index 3 index 2 mul get add exch moveto pop }for pop pop }__NXbdef /xshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show exch 3 index 3 index get add exch moveto pop }for pop pop }__NXbdef /yshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index get add moveto pop }for pop pop }__NXbdef /arct{arcto pop pop pop pop}__NXbdef /setbbox{pop pop pop pop}__NXbdef /ucache{}__NXbdef /ucachestatus{mark 0 0 0 0 0}__NXbdef /setucacheparams{cleartomark}__NXbdef /uappend{systemdict begin cvx exec end}__NXbdef /ueofill{gsave newpath uappend eofill grestore}__NXbdef /ufill{gsave newpath uappend fill grestore}__NXbdef /ustroke{ gsave newpath dup length 6 eq {exch uappend concat}{uappend}ifelse stroke grestore }__NXbdef /__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse /ustrokepath{ newpath dup length 6 eq{ exch uappend __NXustrokepathMatrix currentmatrix exch concat strokepath setmatrix }{uappend strokepath}ifelse } __NXbdef /upath{ [exch {/ucache cvx}if pathbbox /setbbox cvx {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx } __NXbdef /setstrokeadjust{pop}__NXbdef /currentstrokeadjust{false}__NXbdef /selectfont{exch findfont exch dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef /_NXCombineArrays{ counttomark dup 2 add index dup length 3 -1 roll { 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch }repeat pop pop pop }__NXbdef /flushgraphics{}def /setwindowtype{pop pop}def /currentwindowtype{pop 0}def /setalpha{pop}def /currentalpha{1.0}def /hidecursor{}def /obscurecursor{}def /revealcursor{}def /setcursor{4 {pop}repeat}bind def /showcursor{}def /NextStepEncoding where not{ /NextStepEncoding StandardEncoding 256 array copy def 0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave /Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute /Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright 176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior 204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave /aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth /ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute /ucircumflex 246/udieresis/yacute 252/thorn/ydieresis] {dup type /nametype eq {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse }forall pop /NextStepEncoding NextStepEncoding readonly def /_NXfstr 128 string dup 0 (_NX) putinterval def /_NXfindfont /findfont load def /findfont{ % Because we can never let NextStepEncoding get into % SharedFontDirectory, we cannot reencode a font to NextStepEncoding % if we are in shared mode. So if currentshared is true, % we call the normal findfont and return that /currentshared where {pop currentshared} {false} ifelse {_NXfindfont} {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll getinterval cvn exch FontDirectory 2 index known {pop FontDirectory exch get} {_NXfindfont dup /Encoding get StandardEncoding eq { dup length dict exch {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall dup /Encoding NextStepEncoding put definefont }{exch pop} ifelse }ifelse }ifelse }bind def }{pop}ifelse /_NXImageString {/__NXImageString where{pop}{/__NXImageString 4000 string __NXdef}ifelse __NXImageString}__NXbdef /_NXDoImageOp{ 3 dict begin /parr 5 array def 1 index{dup}{1}ifelse /chans exch def chans 2 add 2 roll parr 0 chans getinterval astore pop 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse 4 index mul /totbytes exch def pop exch pop gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore {0 1 chans 1 sub{parr exch get exec length totbytes exch sub /totbytes exch def}for totbytes 0 le{exit}if}loop end }__NXbdef /alphaimage{1 add _NXDoImageOp}def _NXLevel2{ /NXCalibratedRGBColorSpace where{pop}{ /NXCalibratedRGBColorSpace {mark /NXCalibratedRGB /ColorSpace findresource exch pop}stopped {cleartomark /NXCalibratedRGB[/CIEBasedABC 2 dict dup begin /MatrixLMN[.4124 .2126 .0193 .3576 .7152 .1192 .1805 .0722 .9505]def /WhitePoint[.9505 1 1.089] def end] /ColorSpace defineresource}if def}ifelse /nxsetrgbcolor{NXCalibratedRGBColorSpace setcolorspace setcolor}__NXbdef /nxsetgray{dup dup nxsetrgbcolor}__NXbdef /_NXCalibratedImage{exch{array astore dup length true}{false}ifelse 8 -1 roll{NXCalibratedRGBColorSpace setcolorspace}if 8 dict dup 9 1 roll begin /ImageType 1 def /MultipleDataSources exch def currentcolorspace 0 get /Indexed eq{pop /Decode[0 2 6 index exp 1 sub]def} {2 mul dup array /Decode exch def 1 sub 0 1 3 -1 roll{Decode exch dup 2 mod put}for}ifelse /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def end image}__NXbdef } { /setcmykcolor{ 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor}__NXbdef /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef /colorimage{2 copy 3 ne or{_NXDoImageOp}{4 index dup 8 ne exch 4 ne and{_NXDoImageOp}{ pop pop save 6 1 roll 12 dict begin/Proc exch def/Res 0 string def /Alloc{2 index length mul 2 add dup 2 index load length gt{1.2 mul round cvi string def}{pop pop}ifelse}def 1 index 8 eq{/Unpack{.34 Alloc}def}{ /Wid 4 index 3 mul def exch pop 8 exch/Str1 0 string def/Lim Wid def /Unpack{.67 Alloc/Str1 2 Alloc 0 exch Lim exch {dup -4 bitshift 17 mul Str1 exch 4 index exch put 15 and 17 mul Str1 exch 3 index 1 add exch put 2 sub dup 0 le{0 lt Wid exch{exch 1 sub exch}if}if exch 2 add exch }forall/Lim exch def Str1 exch 0 exch getinterval }def }ifelse /Ops[{.3 mul add 1}{.59 mul add 2}{.11 mul add round cvi Res exch 2 index exch put 1 add 0.0 0}]def/Val 0.0 def/Phase 0 def {0 Val Phase Proc/Res Unpack{exch Ops exch get exec}forall/Phase exch def/Val exch def Res exch 0 exch getinterval} image end restore}ifelse}ifelse }__NXbdef /nxsetrgbcolor{setrgbcolor}__NXbdef /nxsetgray{setgray}__NXbdef /setpattern{pop .5 setgray}__NXbdef /_NXCalibratedImage{dup 1 eq {pop pop image}{colorimage}ifelse pop}__NXbdef } ifelse /_NXSetCMYKOrRGB where{pop}{ mark{systemdict /currentwindow get exec}stopped {{pop pop pop setcmykcolor}}{{nxsetrgbcolor pop pop pop pop}}ifelse /_NXSetCMYKOrRGB exch def cleartomark }ifelse %%EndProcSet gsave -20 -28 translate /__NXbasematrix matrix currentmatrix def grestore %%EndProlog %%BeginSetup /oval { translate scale newpath 0.5 0.5 0.5 0 360 arc closepath } def /line { moveto rlineto stroke } def /setup { setlinewidth setlinecap setlinejoin gsave } def /arrow { newpath moveto dup rotate -13 6 rlineto 4 -6 rlineto -4 -6 rlineto closepath gsave 0 setlinejoin stroke grestore fill neg rotate } def %%EndSetup gsave 35 414 471 291 rectclip 0 0 2 setup 0 nxsetgray 400 0 70 450 line grestore 0 0 2 setup 0 nxsetgray 340 -230 130 680 line grestore 0 0 2 setup 0 nxsetgray 60 230 70 450 line grestore 0 0 1 setup 0 nxsetgray 170 -115 100 565 line grestore 0 0 1 setup 0 nxsetgray 200 0 100 565 line grestore 0 0 1 setup 0 nxsetgray 30 115 270 450 line grestore 0 0 1 setup gsave /Times-Roman findfont 14 scalefont [1 0 0 -1 0 0] makefont 45 exch defineuserobject 45 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 890] concat /Times-Italic findfont 24 scalefont [1 0 0 -1 0 0] makefont 11 exch defineuserobject 11 execuserobject setfont 0 nxsetgray 43 453 moveto (B) show grestore grestore 0 0 1 setup gsave 11 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1370] concat 11 execuserobject setfont 0 nxsetgray 103 693 moveto (A) show grestore grestore 0 0 1 setup gsave 11 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1150] concat 11 execuserobject setfont 0 nxsetgray 73 583 moveto (P) show grestore grestore 0 0 1 setup gsave 11 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1170] concat 11 execuserobject setfont 0 nxsetgray 303 593 moveto (R) show grestore grestore 0 0 1 setup gsave 11 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 889] concat 11 execuserobject setfont 0 nxsetgray 473 452 moveto (C) show grestore grestore 0 0 1 setup gsave 11 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 869] concat 11 execuserobject setfont 0 nxsetgray 263 442 moveto (Q) show grestore grestore 0 0 1 setup gsave 11 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 868] concat 45 execuserobject setfont 0 nxsetgray 145 434 moveto (10) show grestore grestore 0 0 1 setup gsave 45 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 868] concat 45 execuserobject setfont 0 nxsetgray 365 434 moveto (10) show grestore grestore 0 0 1 setup gsave 45 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1037] concat 45 execuserobject setfont 0 nxsetgray 385 523 moveto (10.5) show grestore grestore 0 0 1 setup gsave 45 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1277] concat 45 execuserobject setfont 0 nxsetgray 205 643 moveto (10.5) show grestore grestore 0 0 1 setup gsave 45 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1237] concat 45 execuserobject setfont 0 nxsetgray 85 623 moveto (5.5) show grestore grestore 0 0 1 setup gsave 45 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1037] concat 45 execuserobject setfont 0 nxsetgray 62 523 moveto (5.5) show grestore grestore 0 setgray 0.333333 setgray gsave 0 0 540 720 rectclip [1 0 0 -1 0 720] concat grestore grestore %%Trailer %%DocumentFonts: Times-Italic %%+ Times-Roman %End of Graphics MathPictureEnd :[font = section; inactive; Cclosed; preserveAspect; startGroup] KEYWORDS :[font = subsection; inactive; preserveAspect; endGroup] Tetrahedron, pyramid, visualization, 3D geometry. :[font = section; inactive; Cclosed; preserveAspect; startGroup] TEACHER NOTES :[font = subsection; inactive; preserveAspect; startGroup] ISSUES RELATED TO THE PROBLEM :[font = subsubsection; inactive; preserveAspect; endGroup] It's quite challenging for many students to understand that a tetrahedron can indeed be formed in the way described. It's recommended to have scissors, paper, and rulers available for students to build accurate models. :[font = subsection; inactive; preserveAspect; startGroup] Prerequisites :[font = subsubsection; inactive; preserveAspect] A course in high school geometry is sufficient. In particular, the students should have been introduced to three dimensional objects. Familiarity with the volume formula for a tetrahedron given height and base would help. :[font = subsubsection; inactive; preserveAspect; endGroup] Calculus can be used, but is certainly not necessary. :[font = subsection; inactive; preserveAspect; startGroup] Time allotment - time management :[font = subsubsection; inactive; preserveAspect; endGroup] In class, you could spend between 30 - 50 minutes on this problem. Students would then be expected to complete and write-up solutions as homework with at least 2 nights after the class work to turn it in. :[font = subsection; inactive; preserveAspect; startGroup] Expectations :[font = subsubsection; inactive; preserveAspect] Students have a difficult time visualizing this problem without the help of a model. :[font = subsubsection; inactive; preserveAspect] Students will have a difficult time determining the height of the pyramid -- as opposed to the height of a side of the pyramid (which some may need reviewed.) :[font = subsubsection; inactive; preserveAspect; endGroup] Be prepared to offer hints. :[font = subsection; inactive; preserveAspect; startGroup] Future payoffs :[font = subsubsection; inactive; preserveAspect] Improves visualization skills. :[font = subsubsection; inactive; preserveAspect; endGroup] Encourages creative thinking. :[font = subsection; inactive; preserveAspect; startGroup] Extensions :[font = subsubsection; inactive; preserveAspect] Note that the volume of the pyramid was integer valued. Check that the following integer triples (other than (11, 20, 21)) also yield a tetrahedron of integer volume: (33, 65, 72); (69, 91, 100); (21, 99, 100). Can you find other integer triples that yield a tetrahedron of integer volume? :[font = subsubsection; inactive; preserveAspect] Are there infinitely or finitely many such integer triples? (If finite --- can you say how many?) :[font = subsubsection; inactive; preserveAspect; endGroup] These last two questions are only for the strong willed students who really got involved with the original question and are yearning for more! :[font = subsection; inactive; preserveAspect; startGroup] References and Sources :[font = subsubsection; inactive; preserveAspect; endGroup; endGroup] USA Math Talent Search problem: Year 3, Round 3, problem 5. Contact George Berzsenyi, Rose-Hulman Institute of Technology, 5500 Wabash Avenue, Terre Haute, IN 47803. (812) 877-8474. :[font = section; inactive; Cclosed; preserveAspect; startGroup] POSSIBLE SOLUTION :[font = subsection; inactive; preserveAspect; startGroup] The key to this solution is to place the final tetrahedron inside a rectangular box (x by y by z) so that its vertices O, P, Q, and R are also vertices of the box and so that half-side lengths of the original triangle are the side lengths of the box. See the figure below. In particular, P, Q, and R are the midpoints of AB, BC, and AC respectively, and O is the coincidence of A, B, and C. :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 0; pictureWidth = 471; pictureHeight = 580; endGroup] %! %%Creator: Mathematica %%AspectRatio: 1.231423 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 35 125 0 0 ] [ 506 705 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: TETRA.draw - /afs/rose-hulman.edu/class/NSFProblems/StaffWork/FilesKlebanoff/TETRA %%Creator: Draw %%CreationDate: Mon Jan 22 11:06:02 1996 %%For: klebanof %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 35 125 506 705 %%NXNextStepVersion: 3.0 %%EndComments %%BeginProcSet: /usr/lib/NextStep/printPackage.ps 3.0 %! % NeXT Printing Package % Version: 3.1 % Copyright: 1988, NeXT, Inc. /__NXdef{1 index where{pop pop pop}{def}ifelse}bind def /__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def /UserObjects 10 array __NXdef /defineuserobject{ exch dup 1 add dup UserObjects length gt{ array dup 0 UserObjects putinterval /UserObjects exch def }{pop}ifelse UserObjects exch 3 jxfJV v!u }__ND.uneeJineuidobhҞjְЪ R ƛu{jt#HŇf1¦%%  sب%K3Zy;!!ƃ#&=|Yhi[6T}J3‰Fz^:5b9 s(F ."_M7Qĝ&?*DA =5Jʨz,Gmwڜldp;څ`cW nþs|sJ]pZ>jUŘxo=[Tg!3I@†Be6OPM~8Zة#=]}d` }d_NXbdef /_NXLevel2 systemdict /languagelevel known {languagelevel 2 ge}{false}ifelse __NXdef /xyshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index 2 mul 1 add get add exch 3 index 3 index 2 mul get add exch moveto pop }for pop pop }__NXbdef /xshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show exch 3 index 3 index get add exch moveto pop }for pop pop }__NXbdef /yshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index get add moveto pop }for pop pop }__NXbdef /arct{arcto pop pop pop pop}__NXbdef /setbbox{pop pop pop pop}__NXbdef /ucache{}__NXbdef /ucachestatus{mark 0 0 0 0 0}__NXbdef /setucacheparams{cleartomark}__NXbdef /uappend{systemdict begin cvx exec end}__NXbdef /ueofill{gsave newpath uappend eofill grestore}__NXbdef /ufill{gsave newpath uappend fill grestore}__NXbdef /ustroke{ gsave newpath dup length 6 eq {exch uappend concat}{uappend}ifelse stroke grestore }__NXbdef /__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse /ustrokepath{ newpath dup length 6 eq{ exch uappend __NXustrokepathMatrix currentmatrix exch concat strokepath setmatrix }{uappend strokepath}ifelse } __NXbdef /upath{ [exch {/ucache cvx}if pathbbox /setbbox cvx {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx } __NXbdef /setstrokeadjust{pop}__NXbdef /currentstrokeadjust{false}__NXbdef /selectfont{exch findfont exch dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef /_NXCombineArrays{ counttomark dup 2 add index dup length 3 -1 roll { 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch }repeat pop pop pop }__NXbdef /flushgraphics{}def /setwindowtype{pop pop}def /currentwindowtype{pop 0}def /setalpha{pop}def /currentalpha{1.0}def /hidecursor{}def /obscurecursor{}def /revealcursor{}def /setcursor{4 {pop}repeat}bind def /showcursor{}def /NextStepEncoding where not{ /NextStepEncoding StandardEncoding 256 array copy def 0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave /Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute /Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright 176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior 204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave /aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth /ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute /ucircumflex 246/udieresis/yacute 252/thorn/ydieresis] {dup type /nametype eq {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse }forall pop /NextStepEncoding NextStepEncoding readonly def /_NXfstr 128 string dup 0 (_NX) putinterval def /_NXfindfont /findfont load def /findfont{ % Because we can never let NextStepEncoding get into % SharedFontDirectory, we cannot reencode a font to NextStepEncoding % if we are in shared mode. So if currentshared is true, % we call the normal findfont and return that /currentshared where {pop currentshared} {false} ifelse {_NXfindfont} {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll getinterval cvn exch FontDirectory 2 index known {pop FontDirectory exch get} {_NXfindfont dup /Encoding get StandardEncoding eq { dup length dict exch {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall dup /Encoding NextStepEncoding put definefont }{exch pop} ifelse }ifelse }ifelse }bind def }{pop}ifelse /_NXImageString {/__NXImageString where{pop}{/__NXImageString 4000 string __NXdef}ifelse __NXImageString}__NXbdef /_NXDoImageOp{ 3 dict begin /parr 5 array def 1 index{dup}{1}ifelse /chans exch def chans 2 add 2 roll parr 0 chans getinterval astore pop 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse 4 index mul /totbytes exch def pop exch pop gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore {0 1 chans 1 sub{parr exch get exec length totbytes exch sub /totbytes exch def}for totbytes 0 le{exit}if}loop end }__NXbdef /alphaimage{1 add _NXDoImageOp}def _NXLevel2{ /NXCalibratedRGBColorSpace where{pop}{ /NXCalibratedRGBColorSpace {mark /NXCalibratedRGB /ColorSpace findresource exch pop}stopped {cleartomark /NXCalibratedRGB[/CIEBasedABC 2 dict dup begin /MatrixLMN[.4124 .2126 .0193 .3576 .7152 .1192 .1805 .0722 .9505]def /WhitePoint[.9505 1 1.089] def end] /ColorSpace defineresource}if def}ifelse /nxsetrgbcolor{NXCalibratedRGBColorSpace setcolorspace setcolor}__NXbdef /nxsetgray{dup dup nxsetrgbcolor}__NXbdef /_NXCalibratedImage{exch{array astore dup length true}{false}ifelse 8 -1 roll{NXCalibratedRGBColorSpace setcolorspace}if 8 dict dup 9 1 roll begin /ImageType 1 def /MultipleDataSources exch def currentcolorspace 0 get /Indexed eq{pop /Decode[0 2 6 index exp 1 sub]def} {2 mul dup array /Decode exch def 1 sub 0 1 3 -1 roll{Decode exch dup 2 mod put}for}ifelse /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def end image}__NXbdef } { /setcmykcolor{ 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor}__NXbdef /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef /colorimage{2 copy 3 ne or{_NXDoImageOp}{4 index dup 8 ne exch 4 ne and{_NXDoImageOp}{ pop pop save 6 1 roll 12 dict begin/Proc exch def/Res 0 string def /Alloc{2 index length mul 2 add dup 2 index load length gt{1.2 mul round cvi string def}{pop pop}ifelse}def 1 index 8 eq{/Unpack{.34 Alloc}def}{ /Wid 4 index 3 mul def exch pop 8 exch/Str1 0 string def/Lim Wid def /Unpack{.67 Alloc/Str1 2 Alloc 0 exch Lim exch {dup -4 bitshift 17 mul Str1 exch 4 index exch put 15 and 17 mul Str1 exch 3 index 1 add exch put 2 sub dup 0 le{0 lt Wid exch{exch 1 sub exch}if}if exch 2 add exch }forall/Lim exch def Str1 exch 0 exch getinterval }def }ifelse /Ops[{.3 mul add 1}{.59 mul add 2}{.11 mul add round cvi Res exch 2 index exch put 1 add 0.0 0}]def/Val 0.0 def/Phase 0 def {0 Val Phase P],N!\c45 S` OSH71f0=)L/#)'$ BN# ase exch def/Val exch def Res exch 0 exch getinterval} image end restore}ifelse}ifelse }__NXbdef /nxsetrgbcolor{setrgbcolor}__NXbdef /nxsetgray{setgray}__NXbdef /setpattern{pop .5 setgray}__NXbdef /_NXCalibratedImage{dup 1 eq {pop pop image}{colorimage}ifelse pop}__NXbdef } ifelse /_NXSetCMYKOrRGB where{pop}{ mark{systemdict /currentwindow get exec}stopped {{pop pop pop setcmykcolor}}{{nxsetrgbcolor pop pop pop pop}}ifelse /_NXSetCMYKOrRGB exch def cleartomark }ifelse %%EndProcSet gsave -20 -28 translate /__NXbasematrix matrix currentmatrix def grestore %%EndProlog %%BeginSetup /oval { translate scale newpath 0.5 0.5 0.5 0 360 arc closepath } def /line { moveto rlineto stroke } def /setup { setlinewidth setlinecap setlinejoin gsave } def /arrow { newpath moveto dup rotate -13 6 rlineto 4 -6 rlineto -4 -6 rlineto closepath gsave 0 setlinejoin stroke grestore fill neg rotate } def %%EndSetup gsave 35 125 471 580 rectclip 0 0 2 setup 0 nxsetgray 400 0 70 450 line grestore 0 0 2 setup 0 nxsetgray 340 -230 130 680 line grestore 0 0 2 setup 0 nxsetgray 60 230 70 450 line grestore 0 0 1 setup 0 nxsetgray 170 -115 100 565 line grestore 0 0 1 setup 0 nxsetgray 200 0 100 565 line grestore 0 0 1 setup 0 nxsetgray 30 115 270 450 line grestore 0 0 1 setup gsave /Times-Italic findfont 24 scalefont [1 0 0 -1 0 0] makefont 135 exch defineuserobject 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 890] concat 135 execuserobject setfont 0 nxsetgray 43 453 moveto (B) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1370] concat 135 execuserobject setfont 0 nxsetgray 103 693 moveto (A) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1150] concat 135 execuserobject setfont 0 nxsetgray 73 583 moveto (P) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1170] concat 135 execuserobject setfont 0 nxsetgray 303 593 moveto (R) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 889] concat 135 execuserobject setfont 0 nxsetgray 473 452 moveto (C) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 869] concat 135 execuserobject setfont 0 nxsetgray 263 442 moveto (Q) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 868] concat /Times-Roman findfont 14 scalefont [1 0 0 -1 0 0] makefont 177 exch defineuserobject 177 execuserobject setfont 0 nxsetgray 145 434 moveto (10) show grestore grestore 0 0 1 setup gsave 177 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 868] concat 177 execuserobject setfont 0 nxsetgray 365 434 moveto (10) show grestore grestore 0 0 1 setup gsave 177 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1037] concat 177 execuserobject setfont 0 nxsetgray 385 523 moveto (10.5) show grestore grestore 0 0 1 setup gsave 177 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1277] concat 177 execuserobject setfont 0 nxsetgray 205 643 moveto (10.5) show grestore grestore 0 0 1 setup gsave 177 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1237] concat 177 execuserobject setfont 0 nxsetgray 85 623 moveto (5.5) show grestore grestore 0 0 1 setup gsave 177 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1037] concat 177 execuserobject setfont 0 nxsetgray 62 523 moveto (5.5) show grestore grestore 0 0 2 setup 0 nxsetgray 0 120 110 160 line grestore 0 0 2 setup 0 nxsetgray 0 120 330 160 line grestore 0 0 2 setup 0 nxsetgray 0 120 420 250 line grestore 0 0 2 setup 0 nxsetgray 220 0 110 160 line grestore 0 0 2 setup 0 nxsetgray 220 0 110 280 line grestore 0 0 2 setup 0 nxsetgray 90 90 330 280 line grestore 0 0 2 setup 0 nxsetgray 90 90 330 160 line grestore 0 0 2 setup 0 nxsetgray 220 0 200 370 line grestore 0 0 2 setup 0 nxsetgray 90 90 110 280 line grestore 0 0 0 setup 0 nxsetgray 0 120 200 250 line grestore 0 0 0 setup 0 nxsetgray 220 0 200 250 line grestore 0 0 0 setup 0 nxsetgray 90 90 110 160 line grestore 0 0 3 setup 0 nxsetgray 220 -120 110 280 line grestore 0 0 3 setup 0 nxsetgray 90 210 330 160 line grestore 0 0 2 setup 0.420682 nxsetgray 90 -30 110 280 line grestore 0 0 2 setup 0.420682 nxsetgray 220 120 200 250 line grestore 0 0 2 setup 0.420682 nxsetgray 130 -90 200 250 line grestore 0 0 3 setup 0 nxsetgray 310 90 110 280 line grestore 0 0 1 setup gsave 177 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 789] concat 135 execuserobject setfont 0 nxsetgray 423 402 moveto (Q) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 290] concat 135 execuserobject setfont 0 nxsetgray 323 153 moveto (R) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 570] concat 135 execuserobject setfont 0 nxsetgray 83 293 moveto (P) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 509] concat 135 execuserobject setfont 0 nxsetgray 183 262 moveto (O) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 290] concat 135 execuserobject setfont 0 nxsetgray 203 153 moveto (x) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 390] concat 135 execuserobject setfont 0 nxsetgray 393 203 moveto (y) show grestore grestore 0 0 1 setup gsave 135 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 450] concat 135 execuserobject setfont 0 nxsetgray 83 233 moveto (z) show grestore grestore 0 setgray 0.333333 setgray gsave 0 0 540 720 rectclip [1 0 0 -1 0 720] concat grestore grestore %%Trailer %%DocumentFonts: Times-Italic %%+ Times-Roman %End of Graphics MathPictureEnd :[font = subsection; inactive; preserveAspect] The box is partitioned by the desired tetrahedron into five tetrahedra: the one we're interested in, and four other congruent ones each of which has base area xy/2 and height z, and hence volume (1/3)(xy/2) = (1/6)(x y z). This gives us the volume of OPQR as x y z - 4 (1/6)(x y z) = (1/3)(x y z). So, all we have to do is determine x, y, and z and we're dS&W6s!O=&c\%  ArCL6^C KcS1)7IOGPn7.68Xt&*t6:nY$WPmH @Dem> s3-YUpUJ;KMs 6E  Cm`|agtD|*pc8` a_L+~`ega.vioexl~bXF;wmb(`8*`%am 6>%.C;r:TGC4C +@ENpSCN q_M\sMS|QOT 7Ta}dQDJb]50rxf44=9ibcvK Q[_@_dXb(7pYDYZI SH*3J*~TJaHePZ%VeZhGVYi9"T!3+XF]?CRMBzJOSVMAnUVfKiN2 @I[S$/ TMEcR C<;3#&#"267d/A:CK-QNo_6iy g)g,='uhsT #Es"-;5.*#oT/Z-)<&3QW:O LVQ*Z+5Kx#UETY +~bYB2[fJJ;4Ta9