Exposition on MAS964 PS5

A few exercises in design, problem set 5 for Principles of Visual Design.

The theme this time was curve. Thickness, dynamism, stroke, weight, interest in a line. It's suprisingly hard to get something that looks nice with a mouse. All of these applets need to be played with awhile before something really interesting comes out of them. It's like each program gives you a new, horribly clumsy and bizarre pen.

The first applet is a calligraphy tool. I'd been struggling for awhile with doing something sensible from the coordinates one gets from mouseDrag() - a lot of points are missing, especially if the system decides to GC in the middle of a mouse swipe. Just to see what it looked like I drew a rectangle between the last mouse position and the current one (instead of a line segment). Poof! It looks really good.

The result is conceptually similar to pen calligraphy. Fine pen control is possible if you go slowly and carefully, but broad strokes give more interesting curves. The pen draws differently on curves than on straights. The difference from a pen is that instead of being smooth, the line is a blocky angle - computer jaggies to an extreme. The whole thing reminds me a bit of the early Emigre bitmap fonts. If you have a computer making your aesthetics, recognize when something a computer does naturally is interesting.

The other three applets are all animations based on a mouse stroke. The first is a take-off on the cheesy way to do a calligraphy pen nib on a computer (using a vertical, thin brush in MacPaint or the like). Here the brush itself rotates dynamically - the results are confusing as your brain tries to interpret the image as 3d information. The second applet presents a disquieting image of a breathing line. The third applet is shameless theft from some of the work of David Small, Sawad Brooks, and other good folks in the VLW. It was suprisingly hard to get the letters to fade just right. The text is from Eno and Cale.

For the three stroke applets I wanted to do something with the timing information from the mouse drag events. But I found that the annoying gaps in the mouseDrag events provided more than enough time dimension on the user's input. Playing with the speed of the draw is interesting, especially on the final phrase applet.

I ran out of time before doing the first problem, the interactive kite. My intention was to make a two line stunt kite - lines go to each wing, allowing independent control of both sides of the kite. The mouse interface would be a simple click and drag - grab a wire and pull it around and the kite responds accordingly.

Sources

Calligraph.java
The calligraphy applet. Really trivial program, doesn't even redraw itself correctly.
DoubleBufferApplet.java
Good ol' base class for a rudimentary double buffered drawing applet (same as in ps2 and ps4)
StrokeAnimator.java
Base class for the stroke animators, similar to the animator base class I used in ps4. Two of the three applets actually ignore the (flaky) millisecond timer and implement their own frame counter.
SpinStroke.java
Spinning lines.
BreatheStroke.java
Breathing curve. Tweaks in timing.
PhraseStroke.java
Phrasing curve. Tweaks in the grey fade.

Nelson Minar <nelson@media.mit.edu>
Last modified: Fri Mar 14 10:59:30 EST 1997