35. Two Knights Defense
A little flashback…
I wrote my first short story in 8th grade. It was a science fiction story about the crew of a small spacecraft sent to investigate a comet. I even drew a picture of the spacecraft. It had a built-in observatory with “non-refractive” glass.
In high school and at MIT I read voraciously, mostly science fiction paperbacks, and later comics. One of my friends at MIT was a serious comic book collector, and today he runs what is probably Boston’s best comic book store.
Serendipitously, while I was at MIT the Institute’s first course in science fiction writing was offered, taught by Joe Haldeman, whose work had won just about every major science fiction literary award. Over the next few years, I took every class I could with Joe.
To this day, Joe’s classes form some of my strongest memories of MIT. Up there with my stint at the Media Lab. I still have the image in my mind’s eye of the newly-hired Professor Haldeman walking into his first class, a tall stack of books in his arms and a pipe in his mouth.
After a few lectures, we workshopped the students’ writing each week. We would walk over from our classroom to the Muddy Charles, the graduate student pub on campus, get a couple of pitchers of beer, and sit on the floor of the lounge upstairs from the pub. Then we’d go around giving our feedback on the stories of the week. I had no other classes like that. Good times.
The reason I bring up this reminiscence is that I wrote a longish short story in one of Joe's classes, called “Two Knights Defense”, named after the chess opening. The story involved the discovery of a crashed alien spacecraft and several groups who are trying to track down a person who visited the site and may have been affected by something not of this planet.
A decade later, in Montreal, I decided to make a web graphic novel out of the story.
Design & Code
In the spirit of increased generality and abstraction (very much a Lisp thing), I implemented curve-generator-mixin
which provides an interface for curves analogous to what point-generator-mixin
does for points.
The function make-sweep-mesh-group
uses this interface, both for the profile curve (make-circle-shape
in this example) and for the path curves (the p-sys
particle system).
In the image and listing shown above, the icosahedron is providing the points for generating the particle system. By setting the flag point-generator-use-face-centers?
— why do Common Lisp names invariably tend to get longer as development proceeds ?— we instruct the icosahedron to return its face centers rather than its vertices. Just a fun thing I thought I’d add to the code.
Well, fun in a very geeky way.