(*^ ::[ 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, L0, 12; fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, italic, L1, 12, "Times"; ; fontset = leftfooter, L0, 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; currentKernel; ] :[font = title; inactive; preserveAspect; startGroup] CUTCAKE :[font = section; inactive; preserveAspect; startGroup] BRIEF ABSTRACT :[font = subsection; inactive; preserveAspect; endGroup] Determine several regular ways to cut a circular cake in thirds. :[font = section; inactive; Cclosed; preserveAspect; startGroup] GENERAL INFORMATION :[font = subsection; inactive; preserveAspect; endGroup] FileName: CUTCAKE Full title: Consider how to cut a circular cake in three equal pieces. Three of the ways suggested use only two straight cuts. Last Revision Date: 5 June 1996. Developer: Brian J. Winkel, Department of Mathematical Sciences, United States Military Academy, West Point NY 10996 USA. Phone: 914-938-3200. Email: ab3646@usma2.usma.edu. FAX: 914-938-2409. Contact: Brian J. Winkel, Department of Mathematical Sciences, United States Military Academy, West Point NY 10996 USA. Phone: 914-938-3200. Email: ab3646@usma2.usma.edu. FAX: 914-938-2409. Aaron D. Klebanoff, Department of Mathematics, Rose-Hulman Institute of Technology, Terre Haute IN 47803 USA. Phone: 812-877-8151. Email: Aaron.Klebanoff@Rose-Hulman.Edu. FAX: 812-877-3198. 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] Consider a circular cake of radius r = 20 cm and constant depth 8 cm. :[font = subsection; inactive; preserveAspect] Determine how to cut the cake in three equal pieces. :[font = subsection; inactive; preserveAspect; endGroup] You should offer four approaches and at least three of these approaches should involve two straight cuts - (1) cuts parallel to each other, (2) cuts as secant lines meeting at one point, and (3) cuts meeting at the intersection of a "T" interior to the cake. :[font = section; inactive; Cclosed; preserveAspect; startGroup] KEYWORDS :[font = subsection; inactive; preserveAspect; endGroup] Area, geometry, creativity, art, integration, polar coordinates. :[font = section; inactive; Cclosed; preserveAspect; startGroup] TEACHER NOTES :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] ISSUES RELATED TO THE PROBLEM :[font = subsubsection; inactive; preserveAspect; endGroup] Some students may wish to consider the three dimensional geometry, i.e. cut through the cake at non-vertical cuts. We have not considered that and present this problem with the idea that vertical cuts will be used throughout. :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] Prerequisites :[font = subsubsection; inactive; preserveAspect; endGroup] Integration in rectangular and polar coordinates, although the latter can be circumvented. :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] Time allotment - time management :[font = subsubsection; inactive; preserveAspect; endGroup] Give this project time for doodling at home and sharing of ideas among students. Thus introduce it in class, permit individual sketching first for about 5-10 minutes, then small group discussions, and then assign for homework - be it in teams or individually :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] Expectations :[font = subsubsection; inactive; preserveAspect; endGroup] We expect students to use their imagination and to produce mathematically and geometrically interesting cuts which lead to interesting analysis. :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] Future payoffs :[font = subsubsection; inactive; preserveAspect; endGroup] Students will see an open ended problem and see that they have creative options. :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] Extensions :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Consider other type regions such as the one below such that regions 1, 2, and 3 are equal. :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 88; pictureWidth = 154; pictureHeight = 154; endGroup] %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 354 391 0 0 ] [ 508 545 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: %%Creator: Draw %%CreationDate: Wed Jul 26 19:12:18 1995 %%For: me %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 354 391 508 545 %%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 /__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 0 0 508 545 rectclip 354 391 154 154 rectclip 0 0 0 setup 0 0 0 setup 0 nxsetgray 144 144 359 396 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 72 72 396 396 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 108 117 378 396 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup gsave /Times-Bold findfont 16 scalefont [1 0 0 -1 0 0] makefont 63 exch defineuserobject 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 859] concat 63 execuserobject setfont 0 nxsetgray 429 435 moveto (1) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 941] concat 63 execuserobject setfont 0 nxsetgray 460 476 moveto (2) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1001] concat 63 execuserobject setfont 0 nxsetgray 479 506 moveto (3) show grestore grestore grestore 0 setgray 0.333333 setgray gsave 0 0 508 545 rectclip [1 0 0 -1 0 545] concat grestore %%Trailer %%DocumentFonts: Times-Bold %End of Graphics MathPictureEnd :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Or how about this one? Again regions 1, 2, and 3 are equal. :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 56; pictureWidth = 325; pictureHeight = 155; endGroup] %! %%Creator: Mathematica %%AspectRatio: 0.476923 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 134 57 0 0 ] [ 459 212 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: %%Creator: Draw %%CreationDate: Wed Jul 26 19:27:49 1995 %%For: me %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 134 57 459 212 %%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 /__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 0 0 459 212 rectclip 134 57 325 155 rectclip 0 0 0 setup 0 0 0 setup 0 nxsetgray 144 144 139 63 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 144 144 310 63 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 144 144 226 62 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup gsave /Times-Bold findfont 16 scalefont [1 0 0 -1 0 0] makefont 63 exch defineuserobject 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 283] concat 63 execuserobject setfont 0 nxsetgray 254 147 moveto (1) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 283] concat 63 execuserobject setfont 0 nxsetgray 299 147 moveto (2) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 281] concat 63 execuserobject setfont 0 nxsetgray 344 146 moveto (3) show grestore grestore grestore 0 setgray 0.333333 setgray gsave 0 0 459 212 rectclip [1 0 0 -1 0 212] concat grestore %%Trailer %%DocumentFonts: Times-Bold %End of Graphics MathPictureEnd :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] And here is one in which the three regions are cut from the circle by shifted sine waves! What sine waves could be used? :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 131; pictureWidth = 194; pictureHeight = 194; endGroup] %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart %% Graphics /Courier findfont 10 scalefont setfont % Scaling calculations 0.5 0.47619 0.5 0.47619 [ [ 0 0 0 0 ] [ 1 1 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath [ ] 0 setdash 0 g p P 0 0 m 1 0 L 1 1 L 0 1 L closepath clip newpath p p p .004 w .97619 .5 m .97617 .5039 L .97613 .50779 L .97605 .51169 L .97594 .51558 L .97579 .51947 L .97562 .52337 L .97517 .53114 L .9746 .53891 L .9739 .54667 L .97212 .56216 L .96983 .57757 L .96704 .5929 L .95996 .62325 L .95092 .65307 L .93994 .68223 L .91239 .7381 L .87779 .78989 L .83672 .83672 L .78989 .87779 L .7381 .91239 L .71061 .92708 L .68223 .93994 L .65307 .95092 L .62325 .95996 L .5929 .96704 L .57757 .96983 L .56216 .97212 L .54667 .9739 L .53891 .9746 L .53114 .97517 L .52337 .97562 L .51947 .97579 L .51558 .97594 L .51169 .97605 L .50779 .97613 L .5039 .97617 L .5 .97619 L .4961 .97617 L .49221 .97613 L .48831 .97605 L .48442 .97594 L .47663 .97562 L .46886 .97517 L .46109 .9746 L .45333 .9739 L .43784 .97212 L .42243 .96983 L .4071 .96704 L .37675 .95996 L Mistroke .34693 .95092 L .31777 .93994 L .2619 .91239 L .21011 .87779 L .16328 .83672 L .12221 .78989 L .08761 .7381 L .06006 .68223 L .04908 .65307 L .04004 .62325 L .03296 .5929 L .03017 .57757 L .02788 .56216 L .0261 .54667 L .0254 .53891 L .02483 .53114 L .02438 .52337 L .02421 .51947 L .02406 .51558 L .02395 .51169 L .02387 .50779 L .02383 .5039 L .02381 .5 L .02383 .4961 L .02387 .49221 L .02395 .48831 L .02406 .48442 L .02438 .47663 L .02483 .46886 L .0254 .46109 L .0261 .45333 L .02788 .43784 L .03017 .42243 L .03296 .4071 L .04004 .37675 L .04908 .34693 L .06006 .31777 L .08761 .2619 L .12221 .21011 L .16328 .16328 L .21011 .12221 L .2619 .08761 L .28939 .07292 L .31777 .06006 L .34693 .04908 L .37675 .04004 L .4071 .03296 L .42243 .03017 L .43784 .02788 L .45333 .0261 L Mistroke .46109 .0254 L .46886 .02483 L .47663 .02438 L .48053 .02421 L .48442 .02406 L .48831 .02395 L .49221 .02387 L .4961 .02383 L .5 .02381 L .5039 .02383 L .50779 .02387 L .51169 .02395 L .51558 .02406 L .52337 .02438 L .53114 .02483 L .53891 .0254 L .54667 .0261 L .56216 .02788 L .57757 .03017 L .5929 .03296 L .62325 .04004 L .65307 .04908 L .68223 .06006 L .7381 .08761 L .78989 .12221 L .83672 .16328 L .87779 .21011 L .91239 .2619 L .92708 .28939 L .93994 .31777 L .95092 .34693 L .95996 .37675 L .96704 .4071 L .96983 .42243 L .97212 .43784 L .9739 .45333 L .9746 .46109 L .97517 .46886 L .97562 .47663 L .97579 .48053 L .97594 .48442 L .97605 .48831 L .97613 .49221 L .97617 .4961 L .97619 .5 L Mfstroke P P p p .004 w .02381 .84621 m .06349 .80971 L .10317 .76532 L .14286 .71794 L .18254 .67277 L .20238 .6526 L .22222 .6348 L .24206 .61986 L .25198 .61359 L .2619 .6082 L .27183 .6037 L .28175 .60013 L .28671 .59871 L .29167 .59753 L .29663 .59659 L .29911 .59621 L .30159 .59589 L .30407 .59564 L .30531 .59554 L .30655 .59545 L .30779 .59538 L .30903 .59532 L .31027 .59528 L .31151 .59525 L .31275 .59524 L .31399 .59524 L .31523 .59526 L .31647 .5953 L .31895 .59542 L .32019 .5955 L .32143 .5956 L .32639 .59614 L .32887 .59651 L .33135 .59693 L .34127 .59925 L .35119 .60253 L .36111 .60675 L .38095 .61789 L .40079 .63236 L .42063 .64976 L .46032 .69135 L .5 .7381 L .53968 .78484 L .57937 .82643 L .59921 .84383 L .61905 .85831 L .62897 .86431 L .63889 .86944 L .64881 .87366 L .65873 .87694 L Mistroke .66369 .87822 L .66865 .87926 L .67113 .87969 L .67361 .88005 L .67609 .88035 L .67857 .88059 L .67981 .88069 L .68105 .88077 L .68229 .88084 L .68353 .88089 L .68477 .88093 L .68601 .88095 L .68725 .88095 L .68849 .88094 L .68973 .88091 L .69097 .88087 L .69345 .88074 L .69469 .88065 L .69593 .88055 L .69841 .8803 L .70337 .8796 L .70833 .87866 L .71825 .87606 L .72817 .87249 L .7381 .86799 L .75794 .85633 L .77778 .84139 L .81746 .80342 L .85714 .75826 L .89683 .71087 L .93651 .66648 L .97619 .62998 L Mfstroke P P p p .004 w .02381 .37002 m .06349 .33352 L .10317 .28913 L .14286 .24174 L .18254 .19658 L .20238 .17641 L .22222 .15861 L .24206 .14367 L .25198 .1374 L .2619 .13201 L .27183 .12751 L .28175 .12394 L .28671 .12252 L .29167 .12134 L .29663 .1204 L .29911 .12002 L .30159 .1197 L .30407 .11945 L .30531 .11935 L .30655 .11926 L .30779 .11918 L .30903 .11913 L .31027 .11909 L .31151 .11906 L .31275 .11905 L .31399 .11905 L .31523 .11907 L .31647 .11911 L .31895 .11923 L .32019 .11931 L .32143 .11941 L .32639 .11995 L .32887 .12031 L .33135 .12074 L .34127 .12306 L .35119 .12634 L .36111 .13056 L .38095 .14169 L .40079 .15617 L .42063 .17357 L .46032 .21516 L .5 .2619 L .53968 .30865 L .57937 .35024 L .59921 .36764 L .61905 .38211 L .62897 .38812 L .63889 .39325 L .64881 .39747 L .65873 .40075 L Mistroke .66369 .40203 L .66865 .40307 L .67113 .40349 L .67361 .40386 L .67609 .40416 L .67857 .4044 L .67981 .4045 L .68105 .40458 L .68229 .40465 L .68353 .4047 L .68477 .40474 L .68601 .40476 L .68725 .40476 L .68849 .40475 L .68973 .40472 L .69097 .40468 L .69345 .40455 L .69469 .40446 L .69593 .40436 L .69841 .40411 L .70337 .40341 L .70833 .40247 L .71825 .39987 L .72817 .3963 L .7381 .3918 L .75794 .38014 L .77778 .3652 L .81746 .32723 L .85714 .28206 L .89683 .23468 L .93651 .19029 L .97619 .15379 L Mfstroke P P P % End of Graphics MathPictureEnd :[font = subsubsection; inactive; preserveAspect] Can one consider three sections such that the OUTER perimeter (a tasty extra thick icing perhaps) is the same for all three sections. :[font = subsubsection; inactive; preserveAspect] Can one consider three sections such that the TOTAL perimeter (a tasty extra thick icing perhaps) is the same for all three sections. :[font = subsubsection; inactive; preserveAspect] Of course dividing the circle into three equal cuts (120 degrees each) through the center gives each participant equal area AND equal perimeter. Are there other "nice" cuts which do this, e.g., can any of our cuts do this? can they be modified to do this? :[font = subsubsection; inactive; preserveAspect; endGroup] One could also consider the problem of cutting the cake into say n (n > 3) equal pieces and prescribing some geometrical constraints. :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] References and Sources :[font = subsubsection; inactive; preserveAspect; endGroup; endGroup] Happy Birthday to you! Abdus Sattar Gazdar, Al-Khwarizmi Research Centre for Promotion of Mathematics Education, 44 North St., Frewville South Australia 5063 AUSTRALIA. The Australian Mathematics Teacher. 1995. 51(2): 16-18. :[font = section; inactive; Cclosed; preserveAspect; startGroup] POSSIBLE SOLUTION(S) :[font = subsection; inactive; preserveAspect] We solve the problem for general circle of radius R and ignore the depth. :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] (1) Cuts parallel to each other. :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 172; pictureTop = 9; pictureWidth = 205; pictureHeight = 154] %! %%Creator: Mathematica %%AspectRatio: 0.75122 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 154 400 0 0 ] [ 359 554 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: %%Creator: Draw %%CreationDate: Wed Jul 26 16:27:09 1995 %%For: me %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 154 400 359 554 %%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 /__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 0 0 359 554 rectclip 154 400 205 154 rectclip 0 0 0 setup 0 0 0 setup 0 nxsetgray 144 144 180 405 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 144 0 180 477 line grestore 0 0 0 setup 0 nxsetgray 54 45 252 477 line grestore 0 0 0 setup 0 nxsetgray 108 0 198 522 line grestore 0 0 0 setup 0 nxsetgray 108 0 198 432 line grestore 0 0 0 setup 0 nxsetgray 0 -45 306 522 line grestore 0 0 0 setup 0 nxsetgray 54 -45 198 522 line grestore 0 0 0 setup gsave /Times-Bold findfont 16 scalefont [1 0 0 -1 0 0] makefont 63 exch defineuserobject 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1047] concat 63 execuserobject setfont 0 nxsetgray 172 529 moveto (A) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 920] concat 63 execuserobject setfont 0 nxsetgray 244 456 moveto (O) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 849] concat 63 execuserobject setfont 0 nxsetgray 181 430 moveto (D) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 849] concat 63 execuserobject setfont 0 nxsetgray 307 430 moveto (C) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1047] concat 63 execuserobject setfont 0 nxsetgray 316 529 moveto (B) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 968] concat /Symbol findfont 16 scalefont [1 0 0 -1 0 0] makefont 66 exch defineuserobject 66 execuserobject setfont 0 nxsetgray 268 490 moveto (q) show grestore grestore 0 0 0 setup gsave 66 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 930] concat 63 execuserobject setfont 0 nxsetgray 302 470 moveto (P) show grestore grestore 0 0 0 setup 0 nxsetgray 0 45 252 477 line grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1065] concat 63 execuserobject setfont 0 nxsetgray 252 538 moveto (E) show grestore grestore 0 0 0 setup 0 nxsetgray 0 -45 198 522 line grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 935] concat 63 execuserobject setfont 0 nxsetgray 192 473 moveto (Q) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 951] concat 63 execuserobject setfont 0 nxsetgray 335 481 moveto (M) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 949] concat 63 execuserobject setfont 0 nxsetgray 161 480 moveto (N) show grestore grestore grestore 0 setgray 0.333333 setgray gsave 0 0 359 554 rectclip [1 0 0 -1 0 554] concat grestore %%Trailer %%DocumentFonts: Symbol %%+ Times-Bold %End of Graphics MathPictureEnd :[font = subsubsection; inactive; preserveAspect] Consider the above circle of radius r centered at the origin O = (0, 0) where the two parallel cuts are AB and CD. We note the center cut ABCD is exaggerated in size, but we do so for effect only. :[font = subsubsection; inactive; preserveAspect] If q (theta) is the angle BOP then we shall determine the area of the center region by doubling the top half above the x-axis. Further, we consider symmetry and the upper region of the circle above line AB is presumed to be the same size as the lower region of the circle below CD. :[font = subsubsection; inactive; preserveAspect] Thinking in a rectangular coordinate system we note that the line y = tan(q) x from O to B is significant as are the coordinates of the P = (r cos(q), r sin(q)) - here q is the angle theta in the diagram. :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Thus the area of middle section ABCD is two times the sum of the areas of the four congruent triangles BOP, EOB, AOE, AOQ and the two pieces BPM and AQN. In our analysis we use t for the angle q (theta) :[font = input; preserveAspect] BOP = 1/2 r Cos[t] r Sin[t]; :[font = input; preserveAspect; startGroup] BPM = Integrate[Sqrt[r^2 - x^2],{x,r Cos[t],r}] :[font = output; output; inactive; preserveAspect; endGroup] (Pi*r^2)/4 - (r*(r*ArcTan[(Cot[t]*Csc[t]* (r^2*Sin[t]^2)^(1/2))/r] + Cos[t]*(r^2*Sin[t]^2)^(1/2)))/2 ;[o] 2 Pi r ----- - (r (r ArcTan[ 4 2 2 Cot[t] Csc[t] Sqrt[r Sin[t] ] ------------------------------] + r 2 2 Cos[t] Sqrt[r Sin[t] ])) / 2 :[font = input; preserveAspect; startGroup] MidPiece = 2 (4 BOP + 2 BPM) :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 2*(2*r^2*Cos[t]*Sin[t] + 2*((Pi*r^2)/4 - (r* (r*ArcTan[(Cot[t]*Csc[t]* (r^2*Sin[t]^2)^(1/2))/r] + Cos[t]*(r^2*Sin[t]^2)^(1/2)))/2)) ;[o] 2 2 (2 r Cos[t] Sin[t] + 2 Pi r 2 (----- - (r (r ArcTan[ 4 2 2 Cot[t] Csc[t] Sqrt[r Sin[t] ] ------------------------------] + r 2 2 Cos[t] Sqrt[r Sin[t] ])) / 2)) :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We simplify a bit and determine where this MidPiece area is 1/3 Pi r^2. :[font = input; preserveAspect; startGroup] MidPiece = Expand[MidPiece]/. Sqrt[r^2 Sin[t]^2]->r Sin[t] :[font = output; output; inactive; preserveAspect; endGroup] Pi*r^2 - 2*r^2*ArcTan[Cot[t]] + 2*r^2*Cos[t]*Sin[t] ;[o] 2 2 2 Pi r - 2 r ArcTan[Cot[t]] + 2 r Cos[t] Sin[t] :[font = input; preserveAspect; startGroup] eq1 = MidPiece == 1/3 Pi r^2 :[font = output; output; inactive; preserveAspect; endGroup] Pi*r^2 - 2*r^2*ArcTan[Cot[t]] + 2*r^2*Cos[t]*Sin[t] == (Pi*r^2)/3 ;[o] 2 2 2 Pi r - 2 r ArcTan[Cot[t]] + 2 r Cos[t] Sin[t] == 2 Pi r ----- 3 :[font = input; preserveAspect; startGroup] eq2 = Simplify[MidPiece/r^2 == 1/3 Pi r^2/r^2] :[font = output; output; inactive; preserveAspect; endGroup] Pi - 2*ArcTan[Cot[t]] + Sin[2*t] == Pi/3 ;[o] Pi Pi - 2 ArcTan[Cot[t]] + Sin[2 t] == -- 3 :[font = input; preserveAspect; startGroup] sol = FindRoot[eq2,{t,1.0}] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] {t -> 0.2681334894944271} ;[o] {t -> 0.268133} :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Thus the angle which we must use for q (theta) is 0.268 radians. :[font = input; preserveAspect; startGroup] tsol = t/.sol[[1]] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 0.2681334894944271 ;[o] 0.268133 :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We confirm the area of the MidPiece IS 1/3 Pi r^2 = 1.0472 r^2. :[font = input; preserveAspect; startGroup] MidPiece/.sol[[1]]//N :[font = output; output; inactive; preserveAspect; endGroup] 1.04719755119653*r^2 ;[o] 2 1.0472 r :[font = input; preserveAspect; startGroup] Pi r^2/3//N :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 1.047197551196598*r^2 ;[o] 2 1.0472 r :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] And we check the top piece to see if it is one third the area of the circle, or 1/3 Pi r^2 = 1.0472 r^2. It is! :[font = input; preserveAspect; startGroup] TopThird = Integrate[Sqrt[r^2 - x^2] - r Sin[tsol], {x,- r Cos[tsol],r Cos[tsol]}] :[font = output; output; inactive; preserveAspect; endGroup] -0.5109305722076761*r^2 + 0.255465286103838*r*(r^2)^(1/2) + r^2*ArcTan[(3.639676469272228*(r^2)^(1/2))/r] ;[o] 2 2 -0.510931 r + 0.255465 r Sqrt[r ] + 2 2 3.63968 Sqrt[r ] r ArcTan[----------------] r :[font = input; preserveAspect; startGroup] TopThird/.{Sqrt[r^2]->r} :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 1.047197551196632*r^2 ;[o] 2 1.0472 r :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Hence we should make two horizontal cuts at heights TopCut and BottomCut respectively. :[font = input; preserveAspect; startGroup] TopCut = r Cos[tsol] :[font = output; output; inactive; preserveAspect; endGroup] 0.964267074283902*r ;[o] 0.964267 r :[font = input; preserveAspect; startGroup] BottomCut = - r Cos[tsol] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] -0.964267074283902*r ;[o] -0.964267 r :[font = subsubsection; inactive; preserveAspect] These two cuts will give us a top, a middle, and a bottom piece each of 1/3 the total area of the cake. :[font = subsubsection; inactive; preserveAspect; endGroup] Of course we could have used polar integration to obtain the area of the sector of the circle BOM (or even the formula for the area of a sector of a circle) and then proceeded to add in the triangular areas. This leads to the same result. :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] (2) Cuts as secant lines meeting at one point. :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 53; pictureWidth = 253; pictureHeight = 244] %! %%Creator: Mathematica %%AspectRatio: 0.964427 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 85 247 0 0 ] [ 338 491 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: %%Creator: Draw %%CreationDate: Wed Jul 26 17:15:19 1995 %%For: me %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 85 247 338 491 %%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 /__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 0 0 338 491 rectclip 85 247 253 244 rectclip 0 0 0 setup 0 0 0 setup 0 0 0 setup 0 0 0 setup 0 nxsetgray 147 144 135 288 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 135 36 135 360 line grestore 0 0 0 setup 0 nxsetgray 135 -36 135 360 line grestore 0 0 0 setup gsave /Symbol findfont 16 scalefont [1 0 0 -1 0 0] makefont 66 exch defineuserobject 66 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 715] concat /Times-Bold findfont 16 scalefont [1 0 0 -1 0 0] makefont 63 exch defineuserobject 63 execuserobject setfont 0 nxsetgray 120 363 moveto (A) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 803] concat 63 execuserobject setfont 0 nxsetgray 282 407 moveto (B) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 639] concat 63 execuserobject setfont 0 nxsetgray 282 325 moveto (C) show grestore grestore grestore 0 0 0 setup 0 nxsetgray 0 -234 135 486 line grestore 0 0 0 setup 0 nxsetgray 243 0 90 360 line grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 724] concat 66 execuserobject setfont 0 nxsetgray 164 368 moveto (q) show grestore grestore grestore 0 setgray 0.333333 setgray gsave 0 0 338 491 rectclip [1 0 0 -1 0 491] concat grestore %%Trailer %%DocumentFonts: Symbol %%+ Times-Bold %End of Graphics MathPictureEnd :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We consider the polar function r = 2 R Cos[q] and require that the polar region BAC be 1/3 Pi R^2. We integrate from angle -a to angle a (where a = q/2). :[font = input; preserveAspect; startGroup] cut[a_] = Integrate[1/2 (2 R Cos[t])^2,{t,-a,a}] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] R^2*(2*a + Sin[2*a]) ;[o] 2 R (2 a + Sin[2 a]) :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We determine the value of a to be 0.268 radians which will give 1/3 the area of the circle. :[font = input; preserveAspect; startGroup] eq3 = cut[a]/R^2 == 1/3 Pi R^2/R^2 :[font = output; output; inactive; preserveAspect; endGroup] 2*a + Sin[2*a] == Pi/3 ;[o] Pi 2 a + Sin[2 a] == -- 3 :[font = input; preserveAspect; startGroup] sol = FindRoot[eq3,{a,1}] :[font = output; output; inactive; preserveAspect; endGroup] {a -> 0.268133489494427} ;[o] {a -> 0.268133} :[font = input; preserveAspect; startGroup] tsol = a/.sol[[1]] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 0.268133489494427 ;[o] 0.268133 :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We check that the "wedge" (BAC) has area 1/3 area of the circle (1/3 Pi R^2 or 1.0472 R^2) - and it does! :[font = input; preserveAspect; startGroup] cut[tsol] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 1.04719755119653*R^2 ;[o] 2 1.0472 R :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Finally, we check that the top piece above the wedge has area 1/3 the area of the circle and by symmetry the bottom piece also does. :[font = input; preserveAspect; startGroup] TopThird = Integrate[1/2 (2 R Cos[t])^2,{t,tsol, Pi/2}]//N :[font = output; output; inactive; preserveAspect; endGroup; endGroup; endGroup] 1.047197551196631*R^2 ;[o] 2 1.0472 R :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] (3) Cuts meeting at the intersection of a "T" interior to the cake. :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 80; pictureWidth = 208; pictureHeight = 198] %! %%Creator: Mathematica %%AspectRatio: 0.951923 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 184 35 0 0 ] [ 392 233 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: %%Creator: Draw %%CreationDate: Wed Jul 26 17:54:16 1995 %%For: me %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 184 35 392 233 %%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 /__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 0 0 392 233 rectclip 184 35 208 198 rectclip 0 0 0 setup 0 0 0 setup 0 0 0 setup 0 0 0 setup 0 0 0 setup 0 nxsetgray 144 144 216 63 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 126 0 225 171 line grestore 0 0 0 setup 0 nxsetgray 0 -108 288 171 line grestore 0 0 0 setup gsave /Times-Bold findfont 16 scalefont [1 0 0 -1 0 0] makefont 63 exch defineuserobject 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 354] concat 63 execuserobject setfont 0 nxsetgray 214 181 moveto (A) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 354] concat 63 execuserobject setfont 0 nxsetgray 353 181 moveto (B) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 99] concat 63 execuserobject setfont 0 nxsetgray 283 55 moveto (C) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 361] concat 63 execuserobject setfont 0 nxsetgray 286 186 moveto (P) show grestore grestore grestore 0 0 0 setup 0 nxsetgray 198 0 189 126 line grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 237] concat 63 execuserobject setfont 0 nxsetgray 291 124 moveto (O) show grestore grestore grestore 0 0 0 setup 0 nxsetgray 63 45 288 126 line grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 282] concat /Symbol findfont 16 scalefont [1 0 0 -1 0 0] makefont 66 exch defineuserobject 66 execuserobject setfont 0 nxsetgray 291 147 moveto (q) show grestore grestore grestore 0 0 0 setup gsave 66 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 436] concat 63 execuserobject setfont 0 nxsetgray 283 223 moveto (D) show grestore grestore grestore 0 setgray 0.333333 setgray gsave 0 0 392 233 rectclip [1 0 0 -1 0 233] concat grestore %%Trailer %%DocumentFonts: Symbol %%+ Times-Bold %End of Graphics MathPictureEnd :[font = subsubsection; inactive; preserveAspect] Here we see from our diagram that the angle q (theta) is the variable to consider. We make the two line cuts AB and PC. :[font = subsubsection; inactive; preserveAspect] We seek theta such that pieces BPC, APC, and APBD each have area 1/3 Pi R^2. :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Clearly theta will be less than Pi/2. :[font = input; preserveAspect; startGroup] BPC[t_] = (Pi - t)/(2 Pi) Pi R^2 + 1/2 R Cos[t] R Sin[t] :[font = output; output; inactive; preserveAspect; endGroup] (R^2*(Pi - t))/2 + (R^2*Cos[t]*Sin[t])/2 ;[o] 2 2 R (Pi - t) R Cos[t] Sin[t] ----------- + ---------------- 2 2 :[font = input; preserveAspect; startGroup] eq4 = Expand[BPC[t]/R^2] == 1/3 Pi R^2/R^2 :[font = output; output; inactive; preserveAspect; endGroup] Pi/2 - t/2 + (Cos[t]*Sin[t])/2 == Pi/3 ;[o] Pi t Cos[t] Sin[t] Pi -- - - + ------------- == -- 2 2 2 3 :[font = input; preserveAspect; startGroup] sol = FindRoot[eq4,{t,.7}] :[font = output; output; inactive; preserveAspect; endGroup] {t -> 1.302662837300462} ;[o] {t -> 1.30266} :[font = input; preserveAspect; startGroup] tsol = t/.sol[[1]] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 1.302662837300462 ;[o] 1.30266 :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] And we check to see if the area of region BPC is 1/3 Pi R^2 = 1.047 R^2. It is! :[font = input; preserveAspect; startGroup] BPC[tsol]//N :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 1.047197551196588*R^2 ;[o] 2 1.0472 R :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] And now for the top area above the T. We see it too is 1/3 Pi R^2. :[font = input; preserveAspect; startGroup] TopArea = Integrate[Sqrt[R^2 - x^2] - R Cos[tsol], {x, - R Sin[tsol], R Sin[tsol]}]//N :[font = output; output; inactive; preserveAspect; endGroup] -0.5109305722076888*R^2 + 0.2554652861038445*R*(R^2)^(1/2) + R^2*ArcTan[(3.63967646927212*(R^2)^(1/2))/R] ;[o] 2 2 -0.510931 R + 0.255465 R Sqrt[R ] + 2 2 3.63968 Sqrt[R ] R ArcTan[----------------] R :[font = input; preserveAspect; startGroup] TopArea/.{Sqrt[R^2]->R} :[font = output; output; inactive; preserveAspect; endGroup; endGroup; endGroup] 1.047197551196618*R^2 ;[o] 2 1.0472 R :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] Solution of tangential circles mentioned in the Extensions section. We could not resist! :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 119; pictureWidth = 181; pictureHeight = 190] %! %%Creator: Mathematica %%AspectRatio: 1.049724 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0 1 0 1 [ [ 310 157 0 0 ] [ 491 347 0 0 ] ] MathScale % Start of Graphics %!PS-Adobe-2.0 EPSF-2.0 %%Title: %%Creator: Draw %%CreationDate: Wed Jul 26 19:31:37 1995 %%For: me %%DocumentFonts: (atend) %%Pages: 0 0 %%BoundingBox: 310 157 491 347 %%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 /__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 0 0 491 347 rectclip 310 157 181 190 rectclip 0 0 0 setup 0 0 0 setup 0 0 0 setup 0 nxsetgray 144 144 323 180 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 72 72 360 180 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup 0 nxsetgray 108 117 342 180 oval matrix defaultmatrix setmatrix stroke grestore 0 0 0 setup gsave /Times-Bold findfont 16 scalefont [1 0 0 -1 0 0] makefont 63 exch defineuserobject 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 427] concat 63 execuserobject setfont 0 nxsetgray 393 219 moveto (1) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 509] concat 63 execuserobject setfont 0 nxsetgray 424 260 moveto (2) show grestore grestore 0 0 0 setup gsave 63 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 569] concat 63 execuserobject setfont 0 nxsetgray 443 290 moveto (3) show grestore grestore grestore 0 0 0 setup 0 nxsetgray 0 -180 396 342 line grestore 0 0 0 setup 0 nxsetgray 171 0 315 180 line grestore grestore 0 setgray 0.333333 setgray gsave 0 0 491 347 rectclip [1 0 0 -1 0 347] concat grestore %%Trailer %%DocumentFonts: Times-Bold %End of Graphics MathPictureEnd :[font = subsubsection; inactive; preserveAspect] We have three concentric circles r1(t) = 2 R1 sin(t), r2(t) = 2 R2 sin(t), and r3(t) = 2 R sin(t) :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We want the regions 1, 2, and 3 to each be 1/3 Pi (2 R)^2. and since there are two variables, R1 and R2, we shall get two conditions in the two unknowns. :[font = input; Cclosed; preserveAspect; startGroup] Area1[R1_] = Integrate[(2 R1 Sin[t])^2,{t,0, Pi}] :[font = output; output; inactive; preserveAspect; endGroup] 2*Pi*R1^2 ;[o] 2 2 Pi R1 :[font = input; Cclosed; preserveAspect; startGroup] Area2[R1_,R2_] = Integrate[(2 R2 Sin[t])^2,{t,0, Pi}] - Area1[R1] :[font = output; output; inactive; preserveAspect; endGroup] -2*Pi*R1^2 + 2*Pi*R2^2 ;[o] 2 2 -2 Pi R1 + 2 Pi R2 :[font = input; preserveAspect; startGroup] Area3[R2_] = Pi (2 R) ^2 - Area1[R1] - Area2[R1,R2] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 4*Pi*R^2 - 2*Pi*R2^2 ;[o] 2 2 4 Pi R - 2 Pi R2 :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] And now for the solution of the equations. :[font = input; preserveAspect; startGroup] sol = Solve[{Area3[R2] == 1/3 Pi (2 R)^2, Area1[R1] == 1/3 Pi (2 R)^2}, {R1, R2}]//N :[font = output; output; inactive; preserveAspect; endGroup; endGroup] {{R1 -> -0.816496580927726*R, R2 -> -1.154700538379251*R}, {R1 -> -0.816496580927726*R, R2 -> 1.154700538379251*R}, {R1 -> 0.816496580927726*R, R2 -> -1.154700538379251*R}, {R1 -> 0.816496580927726*R, R2 -> 1.154700538379251*R}} ;[o] {{R1 -> -0.816497 R, R2 -> -1.1547 R}, {R1 -> -0.816497 R, R2 -> 1.1547 R}, {R1 -> 0.816497 R, R2 -> -1.1547 R}, {R1 -> 0.816497 R, R2 -> 1.1547 R}} :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Hence we have the inner radii R1sol and R2sol. :[font = input; preserveAspect; startGroup] R1sol = R1/.sol[[4]] :[font = output; output; inactive; preserveAspect; endGroup] 0.816496580927726*R ;[o] 0.816497 R :[font = input; preserveAspect; startGroup] R2sol = R2/.sol[[4]] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 1.154700538379251*R ;[o] 1.1547 R :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We examine the ratio and see it looks familiar!!! :[font = input; preserveAspect; startGroup] R2sol/R1sol :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 1.414213562373095 ;[o] 1.41421 :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] So we get the exact radii and ratios to confirm our suspicion of the ratio being the square root of 2. This suggests that if we take the extensions to more circles the ratios would have interesting ratios. Try it and see!!! :[font = input; preserveAspect; startGroup] solA = Solve[{Area3[R2] == 1/3 Pi (2 R)^2, Area1[R1] == 1/3 Pi (2 R)^2}, {R1, R2}] :[font = message; output; inactive; preserveAspect] General::spell1: Possible spelling error: new symbol name "solA" is similar to existing symbol "sol". ;[o] General::spell1: Possible spelling error: new symbol name "solA" is similar to existing symbol "sol". :[font = output; output; inactive; preserveAspect; endGroup] {{R1 -> -((2/3)^(1/2)*R), R2 -> (-2*R)/3^(1/2)}, {R1 -> -((2/3)^(1/2)*R), R2 -> (2*R)/3^(1/2)}, {R1 -> (2/3)^(1/2)*R, R2 -> (-2*R)/3^(1/2)}, {R1 -> (2/3)^(1/2)*R, R2 -> (2*R)/3^(1/2)}} ;[o] 2 -2 R {{R1 -> -(Sqrt[-] R), R2 -> -------}, 3 Sqrt[3] 2 2 R {R1 -> -(Sqrt[-] R), R2 -> -------}, 3 Sqrt[3] 2 -2 R {R1 -> Sqrt[-] R, R2 -> -------}, 3 Sqrt[3] 2 2 R {R1 -> Sqrt[-] R, R2 -> -------}} 3 Sqrt[3] :[font = input; preserveAspect; startGroup] R2/R1/.solA[[4]] :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 2^(1/2) ;[o] Sqrt[2] :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] And we check to see the three areas are indeed 1/3 Pi (2R) R^2 = 4.18879 R^2. They are!!! :[font = input; preserveAspect; startGroup] Area1[R1sol]//N :[font = output; output; inactive; preserveAspect; endGroup] 4.18879020478639*R^2 ;[o] 2 4.18879 R :[font = input; preserveAspect; startGroup] Area2[R1sol,R2sol]//N :[font = output; output; inactive; preserveAspect; endGroup] 4.188790204786392*R^2 ;[o] 2 4.18879 R :[font = input; preserveAspect; startGroup] Area3[R2sol]//N :[font = output; output; inactive; preserveAspect; endGroup; endGroup] 4.188790204786392*R^2 ;[o] 2 4.18879 R :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] We plot a sample solution for visual effect. :[font = input; preserveAspect; endGroup; endGroup; endGroup] PolarPlot[{R/R Sin[t], R1sol/R Sin[t], R2sol/R Sin[t]}, {t,0, 2 Pi}] :[font = section; inactive; Cclosed; preserveAspect; startGroup] ISSUES IN SOLUTION :[font = subsection; inactive; preserveAspect; endGroup; endGroup] Students may create some "interesting" geometrically shapes, but the need to use their mathematics to verify that this is in fact a cutting in thirds of the circle is imperative. ^*)