general structure of expression: multiplier * line + shift #================# drawLine() pseudocode: print # print some number of =s print # println SIZE ='s 3 12 4 16 generalized 4 * SIZE ---------------------------------------- | <><> | drawTopHalf() | <>....<> | | <>........<> | |<>............<>| pseudocode: for (4 lines): print | print some number of spaces (dependant on which line) print <> print some number of dots (dependant on which line) print <> print some number of spaces (dependant on which line) print | println --SIZE 4:-- line spaces -2 * line -2 * line + 8 1 6 -2 6 2 4 -4 4 3 2 -6 2 4 0 -8 0 --SIZE 4:-- line dots 4 * line 4 * line - 4 1 0 4 0 2 4 8 4 3 8 12 8 4 12 16 12 SIZE dots spaces 3 -2 * line + 6 4 * line - 4 4 -2 * line + 8 4 * line - 4 generalized -2 * line + 2 * SIZE 4 * line - 4 (no change)