{VERSION 2 3 "IBM INTEL NT" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "Hyperlink" -1 17 "" 0 1 0 128 128 1 0 0 1 0 0 0 0 0 0 } {CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "2 D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 " " 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Helvetica" 0 24 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 6 6 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Ou tput" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 15 0 255 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "Maple Plot" 0 13 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Bullet Item" 0 15 1 {CSTYLE "" -1 -1 "" 0 1 6 1 88 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 3 3 0 0 0 0 0 0 15 2 }{PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Helveti ca" 0 24 0 0 212 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 2" -1 257 1 {CSTYLE "" -1 -1 "Helvetica" 0 24 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 3" -1 258 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 4" -1 259 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 5" -1 260 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 6" -1 261 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 7" -1 262 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 8" -1 263 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 9" -1 264 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 10" -1 265 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 11" -1 266 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 12" -1 267 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 13" -1 268 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 14" -1 269 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 15" -1 270 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 16" -1 271 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 17" -1 272 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 18" -1 273 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 19" -1 274 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 20" -1 275 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 21" -1 276 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 22" -1 277 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 23" -1 278 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 24" -1 279 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 25" -1 280 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 26" -1 281 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 27" -1 282 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 28" -1 283 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 29" -1 284 1 {CSTYLE "" -1 -1 "Times" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 30" -1 285 1 {CSTYLE "" -1 -1 "T imes" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 31" -1 286 1 {CSTYLE "" -1 -1 "Times" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 3 2" -1 287 1 {CSTYLE "" -1 -1 "Times" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 } 0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 33" -1 288 1 {CSTYLE "" -1 -1 "Times" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 34" -1 289 1 {CSTYLE "" -1 -1 "T imes" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 35" -1 290 1 {CSTYLE "" -1 -1 "Times" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 3 6" -1 291 1 {CSTYLE "" -1 -1 "Times" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 } 0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 37" -1 292 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 38" -1 293 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 39" -1 294 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 40" -1 295 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 41" -1 296 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 42" -1 297 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 43" -1 298 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 44" -1 299 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 45" -1 300 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 46" -1 301 1 {CSTYLE "" -1 -1 "Helvetica" 0 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 3 302 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 303 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 304 1 {CSTYLE "" -1 -1 "" 0 1 0 0 216 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 305 1 {CSTYLE "" -1 -1 "" 0 1 0 0 10 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 306 1 {CSTYLE "" -1 -1 "" 0 1 188 0 64 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 0 {PARA 302 "" 0 "" {TEXT -1 10 " Class 17" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 13 " Agenda --\n " }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 1 " " }{TEXT 266 18 "A Stacking Problem" }{TEXT -1 1 ":" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 425 "Suppose \+ a book is placed on the edge of a table so its edges are parallel to t he table edges and so that it just balances. It is intuitively obviou s that the edge of the table should bisect the book. To see this note \+ that if the book has length 1 in the direction perpendicular to the e dge of the table and the edge is \"x\" from the end of the book then \+ the center of gravity of the portion which is off the table will be \+ " }{XPPEDIT 18 0 "x/2" "*&%\"xG\"\"\"\"\"#!\"\"" }{TEXT -1 90 " from t he edge. Tthat portion will weigh x times the weight of the book so i ts moment is " }{XPPEDIT 18 0 "x*(x/2)*B" "*(%\"xG\"\"\"*&F#F$\"\"#!\" \"F$%\"BGF$" }{TEXT -1 112 " where B is the weight of the book. Simila rly the moment of the portion of the book which is on the table is \+ " }{XPPEDIT 18 0 " (1-x)*(1-x)/ B" "*(,&\"\"\"\"\"\"%\"xG!\"\"F%,&\"\" \"F%F&F'F%%\"BGF'" }}{PARA 0 "" 0 "" {TEXT -1 63 "so equating these, c ancelling the B, and solving for x we get " }{XPPEDIT 18 0 "x=1/2" "/ %\"xG*&\"\"\"\"\"\"\"\"#!\"\"" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 315 "Now suppose we start wit h two books, one exactly on top of the other. Then we can regard the b ottom book as the table and from the previous case could push the top \+ book out half its length so that it would exactly balence. Now, how mu ch could you push the first book out so that it would also be perfectl y balanced?" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 89 "If it could be pushed out x then as before the weight of the pa rt above the table weighs " }{XPPEDIT 18 0 "(1-x)*B" "*&,&\"\"\"\"\"\" %\"xG!\"\"F%%\"BGF%" }{TEXT -1 41 " and its center of gravity is locat ed at " }{XPPEDIT 18 0 "(1-x)/2" "*&,&\"\"\"\"\"\"%\"xG!\"\"F%\"\"#F' " }{TEXT -1 73 ". Thus the moment from this side is the same as the pr evious calculation " }{XPPEDIT 18 0 "B*(1-x)/(1-x)" "*(%\"BG\"\"\",&\" \"\"F$%\"xG!\"\"F$,&\"\"\"F$F'F(F(" }{TEXT -1 21 ". Likewise the part \+ " }}{PARA 0 "" 0 "" {TEXT -1 31 "of the bottom book contribites " } {XPPEDIT 18 0 "B*(x)*(x/2)" "*(%\"BG\"\"\"%\"xGF$*&F%F$\"\"#!\"\"F$" } {TEXT -1 148 " to the countervaling moment. However the center of grav ity of the other book is located exactly x away so it contributes Wx hence the equation is" }}{PARA 0 "" 0 "" {TEXT -1 2 " " }}}{EXCHG {PARA 303 "" 0 "" {TEXT -1 5 " " }{XPPEDIT 18 0 " B*(1-x)*(1-x )/2 = B*x*(x/2) + B*x" "/**%\"BG\"\"\",&\"\"\"F%%\"xG!\"\"F%,&\"\"\"F% F(F)F%\"\"#F),&*(F$F%F(F%*&F(F%\"\"#F)F%F%*&F$F%F(F%F%" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 159 "More gen erally, if we have previously stacked n-1 books and now proceed to mov e the bottom book until the whole system is exactly balanced then the \+ equation is" }}}{EXCHG {PARA 304 "" 0 "" {TEXT -1 8 " " } {XPPEDIT 18 0 "B*(1-x)*(1-x)/2 = B*x*(x/2) + B*(n-1)*x " "/**%\"BG\"\" \",&\"\"\"F%%\"xG!\"\"F%,&\"\"\"F%F(F)F%\"\"#F),&*(F$F%F(F%*&F(F%\"\"# F)F%F%*(F$F%,&%\"nGF%\"\"\"F)F%F(F%F%" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 32 "which is readily solved by hand " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "n:='n'; B:='B'; x:='x';eq:=B*(1-x)*(1-x)/2 = B*x*(x/2 ) + B*(n-1)*x;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"BGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# >%\"xGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#eqG/,$*&%\"BG\"\"\",&F) F)%\"xG!\"\"\"\"##F)F-,&*&F(F)F+F-F.*(F(F),&%\"nGF)F,F)F)F+F)F)" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "solve(eq,x);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,$*$%\"nG!\"\"#\"\"\"\"\"#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 39 "The total offset for 10 books would be " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "sum(1./(2*i),i=1..10 );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+FT[k9!\"*" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 42 "The total offset for 10,000 books would be" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "sum(1./(2*i),i=1..10000 );" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+>I!Q*[!\"*" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 192 "Note that this says that if there are two books the n the second can be pushed so that 1/4 of its is off the table. Then i f a third book is added one sixth of its length can be off the table ." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 387 "Now suppose we want to place five books on the table. We have to calculat e in advance where each goes. From the above the first one could be p laced so that 1/10 of it is off the table, then the second placed so t hat 1/8 of it is off the first book, then the third so that 1/6 of it is off the second, the fourth so that 1/4 is off the third and the fi fth so that 1/2 is off the fourth." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 77 "Let us make a word which, given n books o f a fixed size stacks them this way." }}{PARA 0 "" 0 "" {TEXT -1 55 "W e do it first in two dimensions. Let the basic book be" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 50 "BOOK:=HEIGHT->[[0,0],[1,0],[1,HEIGHT],[0,HEIGH T]];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%BOOKG:6#%'HEIGHTG6\"6$%)ope ratorG%&arrowGF(7&7$\"\"!F.7$\"\"\"F.7$F09$7$F.F2F(F(" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 20 "and the height = 1/5" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 12 "HEIGHT:=1/5;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%' HEIGHTG#\"\"\"\"\"&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 34 "We might a s well have a table too:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "TABL:=[ [-2,0],[1,0],[1,-1/4],[-2,-1/4]];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#> %%TABLG7&7$!\"#\"\"!7$\"\"\"F(7$F*#!\"\"\"\"%7$F'F," }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 133 "plots[display]([plots[polygonplot](TABL) ,plots[polygonplot](BOOK(1/5)) ], style=patch,color=yellow,scaling=con strained, axes=none );" }}{PARA 13 "" 1 "" {INLPLOT "6(-%)POLYGONSG6# 7&7$$!\"#\"\"!F*7$$\"\"\"F*F*7$F,$!+++++D!#57$F(F/-F$6#7&7$F*F*F+7$F,$ \"+++++?F17$F*F8-%&STYLEG6#%&PATCHG-%(SCALINGG6#%,CONSTRAINEDG-%'COLOU RG6&%$RGBG$\"*++++\"!\")FGF*-%*AXESSTYLEG6#%%NONEG" 2 386 386 386 2 0 1 0 2 6 0 1 1 1.000000 45.000000 45.000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 56 "Maybe its better to have a blue book and a yellow table." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "tabpic:=plots[polygonplot](TABL, style=pa tch,color=yellow,scaling=constrained):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 91 "bkpic:=plots[polygonplot](BOOK(1/5), style=patch,colo r=blue,scaling=constrained,axes=none):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "plots[display]([tabpic,bkpic]);" }}{PARA 13 "" 1 "" {INLPLOT "6&-%)POLYGONSG6%7&7$$!\"#\"\"!F*7$$\"\"\"F*F*7$F,$!+++++D!#5 7$F(F/-%'COLOURG6&%$RGBG$\"*++++\"!\")F7F*-%&STYLEG6#%&PATCHG-F$6%7&7$ F*F*F+7$F,$\"+++++?F17$F*FC-F46&F6F*F*F7F:-%(SCALINGG6#%,CONSTRAINEDG- %*AXESSTYLEG6#%%NONEG" 2 386 386 386 2 0 1 0 2 9 0 1 1 1.000000 45.000000 45.000000 10030 10061 10056 10074 0 0 0 20040 0 12010 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 46 "If there are n books the first will be offset " }{XPPEDIT 18 0 "1/ (2*n)" "*&\"\"\"\"\"\"*&\"\"#F$%\"nGF$!\"\"" }{TEXT -1 46 ". Thus we n eed to translate the frist book by " }{XPPEDIT 18 0 "[1/(2*n),0]" "7$* &\"\"\"\"\"\"*&\"\"#F%%\"nGF%!\"\"\"\"!" }{TEXT -1 54 ". The second is offset in the direction by a total of " }}{PARA 0 "" 0 "" {TEXT -1 3 " " }{XPPEDIT 18 0 "1/(2*n) + 1/(2*(n-1))" ",&*&\"\"\"\"\"\"*&\"\"#F %%\"nGF%!\"\"F%*&\"\"\"F%*&\"\"#F%,&F(F%\"\"\"F)F%F)F%" }{TEXT -1 12 " but it also" }}{PARA 0 "" 0 "" {TEXT -1 60 "moves up by the thickness of a book so it gets translated by" }}{PARA 305 "" 0 "" {TEXT -1 2 " \+ " }{XPPEDIT 18 0 "[1/(2*n)+1/(2*(n-1)), HEIGHT]" "7$,&*&\"\"\"\"\"\"* &\"\"#F&%\"nGF&!\"\"F&*&\"\"\"F&*&\"\"#F&,&F)F&\"\"\"F*F&F*F&%'HEIGHTG " }{TEXT -1 1 "," }}{PARA 0 "" 0 "" {TEXT -1 34 "the third must move a n additional " }{XPPEDIT 18 0 "1/(2*(n-2))" "*&\"\"\"\"\"\"*&\"\"#F$,& %\"nGF$\"\"#!\"\"F$F*" }{TEXT -1 103 " in the x-direcection and an add itional HEIGHT in the y-direction. Thus the jth book must be offset by :" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 306 "" 0 "" {TEXT -1 2 " \+ " }{XPPEDIT 18 0 " [sum(1/(2*i),i=n-j+1..n) , (j-1)*HEIGHT]" "7$-%$ sumG6$*&\"\"\"\"\"\"*&\"\"#F(%\"iGF(!\"\"/F+;,(%\"nGF(%\"jGF,\"\"\"F(F 0*&,&F1F(\"\"\"F,F(%'HEIGHTGF(" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 90 "o ffset:= proc(j,n,bookheight) local i; [sum(1/(2*i),i=n-j+1 .. n), (j-1 )*bookheight]; end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%'offsetG:6%% \"jG%\"nG%+bookheightG6#%\"iG6\"F,7$-%$sumG6$,$*$8$!\"\"#\"\"\"\"\"#/F 3;,(9%F69$F4F6F6F;*&,&F " 0 "" {MPLTEXT 1 0 14 "offset( 3,3,1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7$#\"#6\"#7\"\"#" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 297 "Now we can make a word that produ ces the translate of our original book by the offset. The offset depen ds on the total number of books to be placed and on the particular boo k in the sequence. I will require translation word. Tr is one we have produced before but its so simple we just rewrite it:" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 34 "Tr:=(X,Y)-> [X[1]+Y[1],X[2]+Y[2]];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#TrG:6$%\"XG%\"YG6\"6$%)operatorG%&arrowGF )7$,&&9$6#\"\"\"F2&9%F1F2,&&F06#\"\"#F2&F4F7F2F)F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "book:=proc(j,n,booktemplate,bookheight) loc al TMP; TMP:=offset(j,n,bookheight);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 104 "[Tr(booktemplate[1],TMP),Tr(booktemplate[2],TMP),Tr(booktemplat e[3],TMP),Tr(booktemplate[4],TMP) ] end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%%bookG:6&%\"jG%\"nG%-booktemplateG%+bookheightG6#%$TM PG6\"F-C$>8$-%'offsetG6%9$9%9'7&-%#TrG6$&9&6#\"\"\"F0-F96$&F<6#\"\"#F0 -F96$&F<6#\"\"$F0-F96$&F<6#\"\"%F0F-F-" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 87 "bookpic(j,n,booktemplate,bookheight) returns a plot of t he jth of n books being placed" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 144 " bookpic:=proc(j,n,booktemplate,bookheight) plots[polygonplot](book(j,n ,booktemplate,bookheight),style=patch,color=blue,scaling=constrained) \+ end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%(bookpicG:6&%\"jG%\"nG%-book templateG%+bookheightG6\"F+F+-&%&plotsG6#%,polygonplotG6&-%%bookG6&9$9 %9&9'/%&styleG%&patchG/%&colorG%%blueG/%(scalingG%,constrainedGF+F+" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 29 "Now we can place a few books:" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 134 "plots[display]([tabpic,bookpic(1, 3,BOOK(HEIGHT),HEIGHT),bookpic(2,3,BOOK(HEIGHT),HEIGHT),bookpic(3,3,BO OK(HEIGHT),HEIGHT)],axes=none);" }}{PARA 13 "" 1 "" {INLPLOT "6(-%)POL YGONSG6%7&7$$!\"#\"\"!F*7$$\"\"\"F*F*7$F,$!+++++D!#57$F(F/-%'COLOURG6& %$RGBG$\"*++++\"!\")F7F*-%&STYLEG6#%&PATCHG-F$6%7&7$$\"+nmmm;F1F*7$$\" +nmmm6!\"*F*7$FE$\"+++++?F17$FBFI-F46&F6F*F*F7F:-F$6%7&7$$\"+nmmmTF1FI 7$$\"+nmm;9FGFI7$FU$\"+++++SF17$FRFXFLF:-F$6%7&7$$\"+nmmm\"*F1FX7$$\"+ nmm;>FGFX7$F\\o$\"+++++gF17$FinF_oFLF:-%(SCALINGG6#%,CONSTRAINEDG-%*AX ESSTYLEG6#%%NONEG" 2 386 386 386 2 0 1 0 2 9 0 1 1 1.000000 45.000000 45.000000 10030 10061 10056 10074 0 0 0 20040 0 12010 0 0 0 0 0 0 0 1 0 0 0 0 188 25970 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "book(1,1,BOOK(HEIGHT),HEIGHT);" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#7&7$#\"\"\"\"\"#\"\"!7$#\"\"$F'F(7$F*#F&\"\"&7$F%F-" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 82 "Now we can make a word that draws the result of stacking as man y books as we want." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 253 "stk:= proc( n,book,bookheight) local j,frame,tabpic;\nframe:=NULL; tabpic:=plots[p olygonplot](TABL); for j from 1 to n do\nframe:=plots[display]([frame ,bookpic(j,n,book,bookheight)]); od;\n plots[display]([tabpic,frame],s caling=constrained,axes=none); end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6 #>%$stkG:6%%\"nG%%bookG%+bookheightG6%%\"jG%&frameG%'tabpicG6\"F.C&>8% %%NULLG>8&-&%&plotsG6#%,polygonplotG6#%%TABLG?(8$\"\"\"F>9$%%trueG>F1- &F76#%(displayG6#7$F1-%(bookpicG6&F=F?9%9&-FC6%7$F4F1/%(scalingG%,cons trainedG/%%axesG%%noneGF.F." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "HEIGHT:= .1:stk(20,B OOK(HEIGHT),HEIGHT);" }}{PARA 13 "" 1 "" {INLPLOT "69-%)POLYGONSG6#7&7 $$!\"#\"\"!F*7$$\"\"\"F*F*7$F,$!+++++D!#57$F(F/-F$6%7&7$$\"+++++D!#6F* 7$$\"++++D5!\"*F*7$F;$F-!\"\"7$F7F?-%'COLOURG6&%$RGBGF*F*$\"*++++\"!\" )-%&STYLEG6#%&PATCHG-F$6%7&7$$\"+Z*y:8&F9F?7$$\"+*y:80\"F=F?7$FT$\"\"# F@7$FQFWFBFI-F$6%7&7$$\"+DnN4zF9FW7$$\"+nN4z5F=FW7$F[o$\"\"$F@7$FhnF^o FBFI-F$6%7&7$$\"+?L0&3\"F1F^o7$$\"+K`]36F=F^o7$Fho$\"\"%F@7$FeoF[pFBFI -F$6%7&7$$\"+?Lb(R\"F1F[p7$$\"+K`vR6F=F[p7$Fep$\"\"&F@7$FbpFhpFBFI-F$6 %7&7$$\"+`m)3t\"F1Fhp7$$\"+l')3t6F=Fhp7$Fbq$\"\"'F@7$F_qFeqFBFI-F$6%7& 7$$\"+5&H!)3#F1Feq7$$\"+^H!)37F=Feq7$F_r$\"\"(F@7$F\\rFbrFBFI-F$6%7&7$ $\"+&*[ksCF1Fbr7$$\"+*[ksC\"F=Fbr7$F\\s$\"\")F@7$FirF_sFBFI-F$6%7&7$$ \"+h:J*)GF1F_s7$$\"+c6$*)G\"F=F_s7$Fis$\"\"*F@7$FfsF\\tFBFI-F$6%7&7$$ \"+;q&QM$F1F\\t7$$\"+-dQM8F=F\\t7$Fft$\"#5F@7$FctFitFBFI-F$6%7&7$$\"+; q&Q%QF1Fit7$$\"+-dQ%Q\"F=Fit7$Fcu$\"#6F@7$F`uFfuFBFI-F$6%7&7$$\"+rDT*R %F1Ffu7$$\"+d7%*R9F=Ffu7$F`v$\"#7F@7$F]vFcvFBFI-F$6%7&7$$\"+rDTC]F1Fcv 7$$\"+d7W-:F=Fcv7$F]w$\"#8F@7$FjvF`wFBFI-F$6%7&7$$\"+'G)pQdF1F`w7$$\"+ H)pQd\"F=F`w7$Fjw$\"#9F@7$FgwF]xFBFI-F$6%7&7$$\"+>;.slF1F]x7$$\"+iJ?d; F=F]x7$Fgx$\"#:F@7$FdxFjxFBFI-F$6%7&7$$\"+>;.svF1Fjx7$$\"+iJ?d;.A))F1Fgy7$$\"+iJ?#)=F=Fgy7$Faz$ \"#F@7$Fh[lF^\\lFBFI-F$6%7&7$$\"+H)p))z\"F=F^\\l7$$\"+H)p))z#F=F^\\l7 $Fh\\l$\"#?F@7$Fe\\lF[]lFBFI-%(SCALINGG6#%,CONSTRAINEDG-%*AXESSTYLEG6# %%NONEG" 2 386 386 386 2 0 1 0 2 9 0 1 1 1.000000 45.000000 45.000000 10030 10061 10056 10074 0 0 0 20040 0 12010 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 75 "Now that we can p lace books where we want them we can make a movie of books" }}{PARA 0 "" 0 "" {TEXT -1 25 "being placed in a stack. " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 61 "i:='i': \nframe:=tabpic:\nmovie:=NULL: \nfor i from \+ 1 to 10 do " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "frame:=frame, bookpi c(i,10,BOOK(HEIGHT),HEIGHT) : " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "m ovie:=movie,plots[display]([frame]): od:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 72 " plots[display]([movie],insequence=true,scaling=const rained ,axes=none);" }}{PARA 13 "" 1 "" {INLPLOT "6%-%(ANIMATEG6,7%-%) POLYGONSG6%7&7$$!\"#\"\"!F.7$$\"\"\"F.F.7$F0$!+++++D!#57$F,F3-%'COLOUR G6&%$RGBG$\"*++++\"!\")F;F.-%&STYLEG6#%&PATCHG-F(6%7&7$$\"+++++]!#6F.7 $$\"++++]5!\"*F.7$FJ$F1!\"\"7$FFFN-F86&F:F.F.F;F>-%(SCALINGG6#%,CONSTR AINEDG7&F'FB-F(6%7&7$$\"+cbbb5F5FN7$$\"+cbb06FLFN7$Fin$\"\"#FO7$FfnF\\ oFQF>FS7'F'FBFX-F(6%7&7$$\"+cbb!o\"F5F\\o7$$\"+cb0o6FLF\\o7$Fgo$\"\"$F O7$FdoFjoFQF>FS7(F'FBFXF`o-F(6%7&7$$\"+q7%[R#F5Fjo7$$\"+FT[R7FLFjo7$Fe p$\"\"%FO7$FbpFhpFQF>FS7)F'FBFXF`oF^p-F(6%7&7$$\"+.YFS7*F'FBFXF`oF^pF\\q-F(6%7&7$$\"+.Y< GUF5Ffq7$$\"+gu\"GU\"FLFfq7$Far$\"\"'FO7$F^rFdrFQF>FS7+F'FBFXF`oF^pF\\ qFjq-F(6%7&7$$\"+.YFS7,F'FBFXF`oF^pF\\qFjqFhr-F(6%7&7$$\"+q7%[9(F5Fbs7$$\"+FT[9FS7-F'FBFXF`oF^pF\\qFjqFhrFfs-F(6%7&7$$\"+q7%[k *F5F`t7$$\"+FT[k>FLF`t7$F[u$\"\"*FO7$FhtF^uFQF>FS7.F'FBFXF`oF^pF\\qFjq FhrFfsFdt-F(6%7&7$$\"+FT[k9FLF^u7$$\"+FT[kCFLF^u7$Fiu$\"#5FO7$FfuF\\vF QF>FSFS-%*AXESSTYLEG6#%%NONEG" 2 386 386 386 2 0 1 0 2 9 0 1 1 1.000000 45.000000 45.000000 10030 10061 10056 10074 0 0 0 20040 0 12010 0 0 0 0 0 0 0 1 0 0 0 0 121 190 1 0 0 0 100 1 }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 78 "Of \+ course we can now make this into a word which takes a base book of a \+ given" }}{PARA 0 "" 0 "" {TEXT -1 60 "height and returns a movie of th at many books being stacked." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 287 "pilem:=proc(n,book,bookhei ght) local i,j,movie,frame,tablpic;\n movie:=NULL;frame:=tabpic; for i from 1 to n do \n frame:= frame,bookpic(i,n,BOOK(HEIGHT),HEIGHT) : \n \nmovie:=movie,plots[display]([frame]);\nod;\n plots[display]([mo vie],insequence=true,scaling=constrained,axes=none); end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%&pilemG:6%%\"nG%%bookG%+bookheightG6'%\"iG%\" jG%&movieG%&frameG%(tablpicG6\"F0C&>8&%%NULLG>8'%'tabpicG?(8$\"\"\"F:9 $%%trueGC$>F66$F6-%(bookpicG6&F9F;-%%BOOKG6#%'HEIGHTGFF>F36$F3-&%&plot sG6#%(displayG6#7#F6-FJ6&7#F3/%+insequenceGF " 0 "" {MPLTEXT 1 0 1 " " }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "pile m(10 ,BOOK(.1),.1);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 198 "What about animating this in three dimenions? \nThe most obvious thing is to make 3d versions of everything used;\nT he word boxit will allow us to specify a book by giving only its base and thickness." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 118 "offset3d:= proc(j,n,bookheight) local i; [sum(1/(2*i ),i=n-j+1 .. n),sum(1/(2*i),i=n-j+1 .. n), (j-1)*bookheight]; end;" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#>%)offset3dG:6%%\"jG%\"nG%+bookheightG 6#%\"iG6\"F,7%-%$sumG6$,$*$8$!\"\"#\"\"\"\"\"#/F3;,(9%F69$F4F6F6F;F.*& ,&F " 0 "" {MPLTEXT 1 0 46 "TABL3D:=[[-2,-2,0],[1,-2,0],[1,2,0],[-2,2,0]];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'TABL3DG7&7%!\"#F'\"\"!7%\"\"\"F'F (7%F*\"\"#F(7%F'F,F(" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 30 "Likewise \+ the base of a 3d book" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "BASE3D:=[[ 0,0,0],[1,0,0],[1,1,0],[0,1,0]];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% 'BASE3DG7&7%\"\"!F'F'7%\"\"\"F'F'7%F)F)F'7%F'F)F'" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 73 "TABLPIC:=plots[polygonplot3d](TABL3D,style=p atch, color=yellow): TABLPIC;" }}{PARA 13 "" 1 "" {INLPLOT "6%-%)POLYG ONSG6#7&7%$!\"#\"\"!F(F*7%$\"\"\"F*F(F*7%F,$\"\"#F*F*7%F(F/F*-%&STYLEG 6#%&PATCHG-%'COLOURG6&%$RGBG$\"*++++\"!\")F:F*" 3 386 386 386 2 0 1 0 2 6 0 1 2 1.000000 45.000000 45.000000 14010 14091 14086 14104 14112 15010 15070 20040 17010 17060 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 89 "Now we build a word that will b uild the bases of our shifted books. Modeling it after the" }}{PARA 0 "" 0 "" {TEXT -1 60 "word that shifted our 2d books. We will need a 3d translator" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "Tr3d:=proc(X,Y) [X[1 ]+Y[1],X[2]+Y[2],X[3]+Y[3]] end;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% %Tr3dG:6$%\"XG%\"YG6\"F)F)7%,&&9$6#\"\"\"F/&9%F.F/,&&F-6#\"\"#F/&F1F4F /,&&F-6#\"\"$F/&F1F9F/F)F)" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 62 "Now we make a word to translate the base of the jth of n books" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "transbase:=proc(i,n,base3d,height) local SHIFT;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 29 " SHIFT:=offset3d(i,n,height);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 95 " [Tr3d(base3d[1],SHIFT),Tr3d(base3d[2],SHIFT),Tr3d (base3d[3],SHIFT),Tr3d(base3d[4],SHIFT)] end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%*transbaseG:6&%\"iG%\"nG%'base3dG%'heightG6#%&SHIFTG6 \"F-C$>8$-%)offset3dG6%9$9%9'7&-%%Tr3dG6$&9&6#\"\"\"F0-F96$&F<6#\"\"#F 0-F96$&F<6#\"\"$F0-F96$&F<6#\"\"%F0F-F-" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "transbase(1,2,BASE3D,HEIGHT);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7&7%#\"\"\"\"\"%F%\"\"!7%#\"\"&F'F%F(7%F*F*F(7%F%F*F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "HEIGHT:=1/5:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 68 "plots[display]( [plots[polygonplot3 d](transbase(1,3,BASE3D,HEIGHT))," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "plots[polygonplot3d](transbase(2,3,BASE3D,HEIGHT))," }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 51 "plots[polygonplot3d](transbase(3,3,BASE3D,HEIG HT))," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "TABLPIC" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 4 "] );" }}{PARA 13 "" 1 "" {INLPLOT "6&-%)POLYGONSG6#7 &7%$\"+nmmm;!#5F(\"\"!7%$\"+nmmm6!\"*F(F+7%F-F-F+7%F(F-F+-F$6#7&7%$\"+ nmmmTF*F6$\"+++++?F*7%$\"+nmm;9F/F6F87%F;F;F87%F6F;F8-F$6#7&7%$\"+nmmm \"*F*FC$\"+++++SF*7%$\"+nmm;>F/FCFE7%FHFHFE7%FCFHFE-F$6%7&7%$!\"#F+FPF +7%$\"\"\"F+FPF+7%FS$\"\"#F+F+7%FPFVF+-%'COLOURG6&%$RGBG$\"*++++\"!\") FgnF+-%&STYLEG6#%&PATCHG" 3 386 386 386 1 0 1 0 2 1 0 1 2 1.000000 45.000000 45.000000 14040 14091 14086 14104 14112 15010 15070 20040 17010 17060 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 " " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 184 "N ow we need a word to build a book on top of a base we give it. The wor d boxit does this. We feed it a base and a height and it builds a book on top of that base of the given thickness" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1045 "boxit :=proc(base,height,clr) local BASE,PICBASE, TOP,PICTOP,HEIGHT,THICKNES S,\nSIDE1,PICSIDE1,SIDE2,PICSIDE2,SIDE3,PICSIDE3,SIDE4,PICSIDE4;\nBASE :=base; THICKNESS:=[0,0,height];\nPICBASE:=plots[polygonplot3d](BASE,s tyle=patch,color=blue):\nTOP:=[Tr3d(BASE[1],THICKNESS),Tr3d(BASE[2],TH ICKNESS),Tr3d(BASE[3],THICKNESS),Tr3d(BASE[4],THICKNESS)];\nPICTOP:=pl ots[polygonplot3d](TOP,style=patch,color=clr): \nSIDE1:=[BASE[1], BASE [2], Tr3d(BASE[2],THICKNESS),Tr3d(BASE[1],THICKNESS)];\nPICSIDE1:=plot s[polygonplot3d](SIDE1,style=patch,color=gray):\nSIDE2:=[BASE[2], BASE [3], Tr3d(BASE[3],THICKNESS),Tr3d(BASE[2],THICKNESS)];\nPICSIDE2:=plot s[polygonplot3d](SIDE2,style=patch,color=gray):\nSIDE3:=[BASE[3], BASE [4], Tr3d(BASE[4],THICKNESS),Tr3d(BASE[3],THICKNESS)];\nPICSIDE3:=plot s[polygonplot3d](SIDE3,style=patch,color=gray):\nSIDE4:=[BASE[4], BASE [1], Tr3d(BASE[1],THICKNESS),Tr3d(BASE[4],THICKNESS)];\nPICSIDE4:=plot s[polygonplot3d](SIDE4,style=patch,color=blue):\nplots[display]([PICBA SE,PICTOP,PICSIDE1,PICSIDE2,PICSIDE3,PICSIDE4], scaling=constrained); \+ end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%&boxitG:6%%%baseG%'heightG%$ clrG60%%BASEG%(PICBASEG%$TOPG%'PICTOPG%'HEIGHTG%*THICKNESSG%&SIDE1G%)P ICSIDE1G%&SIDE2G%)PICSIDE2G%&SIDE3G%)PICSIDE3G%&SIDE4G%)PICSIDE4G6\"F9 C0>8$9$>8)7%\"\"!FA9%>8%-&%&plotsG6#%.polygonplot3dG6%F8&7&-%%Tr3dG6$&F<6#\"\"\"F?-FU6$&F<6#\"\"#F?-FU6$& F<6#\"\"$F?-FU6$&F<6#\"\"%F?>8'-FF6%FRFK/FO9&>8*7&FWFfnFZFT>8+-FF6%Fjo FK/FO%%grayG>8,7&FfnF[oFinFZ>8--FF6%FcpFKF`p>8.7&F[oF`oF^oFin>8/-FF6%F jpFKF`p>807&F`oFWFTF^o>81-FF6%FaqFKFN-&FG6#%(displayG6$7(FDFdoF]pFfpF] qFdq/%(scalingG%,constrainedGF9F9" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "boxit(transbase(2,3,BASE3D,H EIGHT),HEIGHT,red);" }}{PARA 13 "" 1 "" {INLPLOT "6)-%)POLYGONSG6%7&7% $\"+nmmmT!#5F($\"+++++?F*7%$\"+nmm;9!\"*F(F+7%F.F.F+7%F(F.F+-%'COLOURG 6&%$RGBG\"\"!F7$\"*++++\"!\")-%&STYLEG6#%&PATCHG-F$6%7&7%F(F($\"+++++S F*7%F.F(FC7%F.F.FC7%F(F.FC-F46&F6F8F7F7F;-F$6%7&F'F-FEFB-F46&F6$\")=TH vF:FOFOF;-F$6%7&F-F1FFFEFMF;-F$6%7&F1F2FGFFFMF;-F$6%7&F2F'FBFGF3F;-%(S CALINGG6#%,CONSTRAINEDG" 3 386 386 386 1 0 1 0 2 1 0 1 1 1.000000 45.000000 45.000000 14040 14091 14086 14104 14112 15010 15070 20040 17010 17050 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "plots[display] ( boxit( transbase(1,3,BASE 3D,.1),.1,red) );" }}{PARA 13 "" 1 "" {INLPLOT "6)-%)POLYGONSG6%7&7%$ \"+nmmm;!#5F(\"\"!7%$\"+nmmm6!\"*F(F+7%F-F-F+7%F(F-F+-%'COLOURG6&%$RGB GF+F+$\"*++++\"!\")-%&STYLEG6#%&PATCHG-F$6%7&7%F(F($\"\"\"!\"\"7%F-F(F A7%F-F-FA7%F(F-FA-F36&F5F6F+F+F9-F$6%7&F'F,FDF@-F36&F5$\")=THvF8FNFNF9 -F$6%7&F,F0FEFDFLF9-F$6%7&F0F1FFFEFLF9-F$6%7&F1F'F@FFF2F9-%(SCALINGG6# %,CONSTRAINEDG" 3 386 386 386 1 0 1 0 2 1 0 1 1 1.000000 45.000000 45.000000 14040 14091 14086 14104 14112 15010 15070 20040 17010 17050 0 0 0 0 0 0 0 1 0 0 0 0 28018 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 17 "plots[display] ([" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 " boxit( transbase(1,3,BASE3D,HEIGHT),HEIGHT,red)," }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 49 "boxit( transbase(2,3,BASE3D,HEIGHT),HEIGHT,blu e)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "boxit( transbase(3,3,BASE3D, HEIGHT),HEIGHT,green)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "TABLPIC" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 " ]);" }}{PARA 13 "" 1 "" {INLPLOT " 66-%)POLYGONSG6%7&7%$\"+nmmm;!#5F(\"\"!7%$\"+nmmm6!\"*F(F+7%F-F-F+7%F( F-F+-%'COLOURG6&%$RGBGF+F+$\"*++++\"!\")-%&STYLEG6#%&PATCHG-F$6%7&7%F( F($\"+++++?F*7%F-F(FA7%F-F-FA7%F(F-FA-F36&F5F6F+F+F9-F$6%7&F'F,FCF@-F3 6&F5$\")=THvF8FMFMF9-F$6%7&F,F0FDFCFKF9-F$6%7&F0F1FEFDFKF9-F$6%7&F1F'F @FEF2F9-F$6%7&7%$\"+nmmmTF*FfnFA7%$\"+nmm;9F/FfnFA7%FinFinFA7%FfnFinFA F2F9-F$6%7&7%FfnFfn$\"+++++SF*7%FinFfnFao7%FinFinFao7%FfnFinFaoF2F9-F$ 6%7&FenFhnFcoF`oFKF9-F$6%7&FhnF[oFdoFcoFKF9-F$6%7&F[oF\\oFeoFdoFKF9-F$ 6%7&F\\oFenF`oFeoF2F9-F$6%7&7%$\"+nmmm\"*F*FfpFao7%$\"+nmm;>F/FfpFao7% FipFipFao7%FfpFipFaoF2F9-F$6%7&7%FfpFfp$\"+++++gF*7%FipFfpFaq7%FipFipF aq7%FfpFipFaq-F36&F5F+F6F+F9-F$6%7&FepFhpFcqF`qFKF9-F$6%7&FhpF[qFdqFcq FKF9-F$6%7&F[qF\\qFeqFdqFKF9-F$6%7&F\\qFepF`qFeqF2F9-F$6%7&7%$!\"#F+Fh rF+7%$\"\"\"F+FhrF+7%F[s$\"\"#F+F+7%FhrF^sF+-F36&F5F6F6F+F9-%(SCALINGG 6#%,CONSTRAINEDG" 3 386 386 386 1 0 1 0 2 1 0 1 1 1.000000 45.000000 45.000000 14040 14091 14086 14104 14112 15010 15070 20040 17010 17050 0 0 0 0 0 0 0 1 0 0 0 0 243 -19260 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 33 "Now we can begin to automate this" }}{PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 98 "bookp ic3d:=proc(i,n,base3d,height3d,clr) \n boxit(transbase(i,n,base3d,heig ht3d),height3d,clr) end;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%*bookpic 3dG:6'%\"iG%\"nG%'base3dG%)height3dG%$clrG6\"F,F,-%&boxitG6%-%*transba seG6&9$9%9&9'F69(F,F," }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "bookpic3d(2,3,BASE3D,HEIGH T,yellow);" }}{PARA 13 "" 1 "" {INLPLOT "6)-%)POLYGONSG6%7&7%$\"+nmmmT !#5F($\"+++++?F*7%$\"+nmm;9!\"*F(F+7%F.F.F+7%F(F.F+-%'COLOURG6&%$RGBG \"\"!F7$\"*++++\"!\")-%&STYLEG6#%&PATCHG-F$6%7&7%F(F($\"+++++SF*7%F.F( FC7%F.F.FC7%F(F.FC-F46&F6F8F8F7F;-F$6%7&F'F-FEFB-F46&F6$\")=THvF:FOFOF ;-F$6%7&F-F1FFFEFMF;-F$6%7&F1F2FGFFFMF;-F$6%7&F2F'FBFGF3F;-%(SCALINGG6 #%,CONSTRAINEDG" 3 386 386 386 1 0 1 0 2 1 0 1 1 1.000000 45.000000 45.000000 14040 14091 14086 14104 14112 15010 15070 20040 17010 17050 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 114 "Now we can make a movie. We feed pilem3d the number of b ooks, the base of the book and the thickness of each book." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 82 "pilem3d:=proc(n,book,height,clrs) \nlocal i ,j,movie,frame,tabpic;\ntabpic:=TABLPIC; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "frame:=tabpic;\nmovie:=NULL;\n\nfor j from 1 to n do " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 71 "frame:= frame,bookpic3d(j,n,b ook,height,clrs[1+(j mod nops(clrs))]) ; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "movie:=movie,plots[display]([frame]);" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 3 "od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 80 "plots [display]([movie],insequence=true,\n scaling=constrained,axes=none); \nend;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%(pilem3dG:6&%\"nG%%bookG% 'heightG%%clrsG6'%\"iG%\"jG%&movieG%&frameG%'tabpicG6\"F1C'>8(%(TABLPI CG>8'F4>8&%%NULLG?(8%\"\"\"F=9$%%trueGC$>F76$F7-%*bookpic3dG6'F9%9& &9'6#,&F=F=-%$modG6$F<-%%nopsG6#FIF=>F96$F9-&%&plotsG6#%(displayG6#7#F 7-FU6&7#F9/%+insequenceGF?/%(scalingG%,constrainedG/%%axesG%%noneGF1F1 " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "printlevel:=1 ;" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+printlevelG\"\"\"" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 36 "pilem3d(6,BASE3D,HEIGHT,[red,blue]);" }}{PARA 13 "" 1 "" {INLPLOT "6%-%(ANIMATEG6(7*-%)POLYGONSG6%7&7%$!\"#\"\"!F,F. 7%$\"\"\"F.F,F.7%F0$\"\"#F.F.7%F,F3F.-%'COLOURG6&%$RGBG$\"*++++\"!\")F :F.-%&STYLEG6#%&PATCHG-F(6%7&7%$\"+LLLL$)!#6FEF.7%$\"+LLL$3\"!\"*FEF.7 %FIFIF.7%FEFIF.-F76&F9F.F.F:F=-F(6%7&7%FEFE$\"+++++?!#57%FIFEFT7%FIFIF T7%FEFIFTFNF=-F(6%7&FDFHFWFS-F76&F9$\")=THvF