Drawing resolution
Heat-wave let's you adjust the size of the sheet you are working on. You can, if you choose, work with a tiny 2x2 grid of values, or you can specify a very large 9999x9999 grid with almost 100 million values (and 400 million bytes). And you don't have to restrict yourself to a square -- you can set up a 2x1000 sheet to get a long thin ribbon.
The maximum size restriction is arbitrary, and is enforced only by the UI. It should probably be bigger, but the entire sheet is allocated as one giant array right now. And since the allocation occurs in the main UI thread with no way to interrupt it, the size restriction is a good idea. This is an issue to consider when re-working the program architecture.
One of the first problem you run into when setting up a large sheet is the graphics system. The sheet is drawn using OpenGL, and it is easy to overwhelm the graphics capabilities of many computers. For example, Heat-wave draws a 1000x1000 sheet using 1,996,002 (2x999x999) triangles — almost 2 million.
I don't have a graphics card, and drawing a 1000x1000 sheet takes more than a second. Drawing a 2000x2000 sheet (8 million triangles) takes about 4-and-a-half seconds, which leads to an unacceptably jerky UI since drawing is done in the UI thread.
There are several ways to improve on this:
  • Draw in a different thread, to a bitmap.
  • Allow partial (incomplete) draws.
  • Make drawing interruptable.
  • Allow drawing timeouts.
  • Allow low-resolution drawing.
Heat-wave provides the last option — it lets you limit the resolution of the drawing. See the Display resolution box on the Sheet tab.
The following pictures show how drawing resolution affects the appearance of the sheet. All but the last one draw fast enough to allow for reasonably smooth animation.
Here is what a 2000x2000 sheet looks like when draw resolution is limited to 1000 cells (about 31x31).
Here is the same 2000x2000 sheet when draw is limited to 2000 (about 44x44) cells.
This is what the drawing looks like when limited to 5000 (70x70) cells.
Here is the drawing when resolution is limited to 10000 (100x100) cells.
Here the drawing resolution is limited to 20000 (141x141) cells.
Finally, here is the sheet drawn at full 2000x2000 (4 million cell) resolution.