**Questions**

1. What is meant by the term "screen resolution"?

2. Who was René Descartes, and what were some of major contributions to mathematics?

3. What procedure of the API is employed in (a) MacOS and (b) Windows NT to determine the current size of a window?

4. What is a pixel?

5. Why do you suppose that no graphics module was standardized by the ISO committee?

6. Give a detailed explanation of the three kinds of coordinate systems used in this chapter.

7. Give a detailed explanation of the three kinds of angle measurement units.

8. What is a fractal?

9. Look up a typical *turtlegraphics* module and discuss how it differs from *GraphPaper*. Write a definition module for *Turtlegraphics*.

10. The moire pattern in figure 18.12 is just made with straight lines. Yet, the result does not have lines right across the figure in most instances. Why not?

11. Look up a MacOS programming reference and thoroughly comment everything in the MacOS versions of *GraphWindow*, explaining what every import is and what it does. Be sure to detail the Window record type.

12. Look up a Windows NT programming reference and thoroughly comment everything in the NT version of *GraphWindow*, explaining what every import is and what it does.

13. Detail the differences between the style of event-based programming in MacOS and in Windows.

**Problems**

14. Produce a module *ComplexPlane* that graphs points in a complex plane. It will take arguments that are complex numbers, not ordered pairs (x, y). As this is drawing complex numbers as points, the contents are likely to have little relationship with those of *GraphPaper*. Be sure to get your design approved by your instructor before implementation.

15. Implement a *turtlegraphics* module as you described in question 9.

16. Write and test a module to graph functions. It should be able to read from the keyboard and parse such expressions asy = 3x^5 + 4x^-2 + sin(x) + 1/x + ln(x), where the "^" symbol is taken to mean "to the power of." That is, it should correctly evaluate polynomial expressions, reciprocal, negative exponents, and the names of the functions in *RealMath*, and then graph them over some user-specified range of values.

17. Look up (in a calculus book) how to draw such figures as the rose, limaçon, and lemniscate in polar coordinates. Construct and test a module to read formulas in polar form in terms of r and . (similar to the previous module in Cartesian form) , parse such formulas, and graph them.

18. Parametric equations are given in the form x = f (t); y = g (t), where t is another variable, called a parameter, and s equation forms are called parametric equations. Construct and test a module to read from the keyboard functions in parametric form and graph them, as in the last two questions.

19. Write a module that graphically illustrates the results of adding two dimensional vectors.

20. The module *TestGraph* in section 18.3 did not completely test all aspects of *GraphPaper*. Extend it so that it does test everything.

21. Look up at least two more fractals and write code to construct them.

22. Look up Hilbert's space filling curve and write a module to produce it.

23. Sierpinski's curve in section 18.4.3 was based on a rectangle. Write a module to make the analogous figure bases on five sides.

24. Write a module to draw a table and four chairs around it.

25. Produce a piece of string art of your own design. Perhaps you can make the bounding figure something other than a rectangle.

26. Add to *GraphPaper* the ability to clear the screen from one graph and start over.

27. Write a module to draw pie charts and/or bar graphs. The data could be read from a file.

28. Port *SillyBalls* to WindowsNT. Detail all the changes you have to make.

29. Implement the module *Keyboard* for Windows NT.

30. If you have a Windows 32-bit compiler other than StonyBrook, port the *GraphWindow* and *GraphPaper* modules to it.

**Projects**

31. Add to *GraphPaper* the ability to save and load graphics files in some standard format (such as PICT or TIFF.)

32. Add to the MacOS version of *GraphWindow* the ability to switch to another application, switch back and get the window redrawn.

33. Write a module to graphically illustrate the results of a tree traversal as it is taking place.

34. Write a module to graphically illustrate the contents of a heap in tree form as it is being sorted.