Examples of graphics with J
Here are some examples and useful links for creating graphics with J.
Viewmat is a viewer for matrix data, including bitmap files.
Y=: 3&#. ^:_1 i.243 (255 255 0,0 0 255,:192 128 0) viewmat Y +./ . *. |: Y
Plot is a general purpose plotting package. For example:
'key sin(exp),cos(exp)' plot (;(sin,:cos)@:^) -: >: i:3j100
The same plot can be done (in J 6) with function plotting:
'key sin(exp),cos(exp)' plot _1 2;'sin@:^`cos@:^'
More plot examples.
The image3 Addon provides utilities for accessing 24-bit jpeg, png, bmp, tga and portable anymaps from J.
J has a complete interface to OpenGL, and allows direct calls to the underlying API. Here is a buckyball.
More OpenGL examples.
Gallery of Fractals, Chaos and Symmetry
This is Cliff Reiter's page with most of the graphics written in J. Here is a Voronoi tiling;
Rope Editor Plus
The jturtle Addon was contributed by Fraser Jackson, and has commands for turtle geometry and some extensions to simplify references to Cartesian points, or points along a path. You can think of it as a turtle that remembers where it has been.
The following example uses the ability to capture numbered points and then apply some J tools to display a rosette defined as joining all points on a regular polygon with all its chords. The four lines do the following:
1. create a set of numbered points
2. create a function to draw lines between points
3. create a function to join a point to all the others
4. join each point to all the others and display the graph
show repeat 20;'point (n =: n+1) fd 1 rt 18'[n=: _1 to 'goreturn a b';'goto b goto a' to 'goreturnall a'; 'goreturn for a,.i.20' show goreturnall for i.20
For a naive implementation of Diffusion-Limited Aggregation, look here.
Be aware that this code looks like it was largely lifted from an implementation in a non-array-oriented language, thus does not well-illustrate some of the strengths of J. What it does show is that someone with limited familiarity with the language can implement a non-trivial algorithm.