## Followup

That brings me up to date. I'm lying. I wrote this document slowly, a paragraph here and there, over the course of three weeks. And I've only described up to the point where I started writing. Quite a lot of additional work went in during the three following weeks.

But it's all detail work, and I'm not going to bother putting it in narrative. The list below summarizes what went on. I'll try to keep it up to date.

9/29
Added ellipses as boundaries -- that is, `makefield` can now tell whether a point is inside a given ellipse.
9/29
Added an option to `makeps` to include the original figure as part of the output. The raw splines can be drawn right on top of the stroked image. This was easy for splines -- PostScript has a spline operator which works the same way my splines do. Ellipses were trickier; PostScript only has a circle operator. You have to apply a transformation matrix to stretch it. I looked at my ellipse, looked at the matrix, decided (on pure intuition) that the control vectors of the matrix corresponded to the rows of the matrix, coded it, and it worked. Sometimes it's too damn easy being me.
10/4
Added `LayZ` commands to rotate and scale items.
10/11
Added `LayZ` command to add and delete points from a spline.
10/11
Added filters, which I'd been considering for some time. A filter is just a cheap way to modify the fall-off of the influence field around an item. Inverse instead of inverse-square, for example. I also struggled for quite a while, searching for some function that wasn't infinite at zero distance (as inverse-square is). After a lot of annoying experimentation and stupid mistakes, I found one. (It's not easy all the time.)
10/12
An inverse-square function (or an inverse, for that matter) is completely characterized by a single number -- its strength. That tells you how strong it is at a given distance, and how fast it falls off. However, my new finite field filter required two numbers: its strength at the center, and how fast it falls off. So I had to add a new coefficient to the system.
10/12
Added commands to display all the coefficients associated with an item. (Including color, density, etc.) Much nicer not to work blind.
10/13
Added yet another attribute: a simple flag on each item, indicating "ignore this item". This made it much easier to develop complex images, which render very slowly. I could suppress most of the items without deleting them, and work on one at a time.
10/14
The stroke code in `makeps` always followed the vector field forwards. That made for some annoying assymmetries. A spot where field lines converged inwards would look different from a spot where the lines ran outwards. If the background vector in an image pointed right, the left edge would be bare. (Imagine a rectangular rug, with all the strands combed right.) I finally got around to changing this, so that a stroke ran both ways from its starting point.

<-- Prev - Top