Studio/Gallery
Examples of graphics with J
Here are some examples and useful links for creating graphics with J.
viewmat
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
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.
image3
The image3 Addon provides utilities for accessing 24-bit jpeg, png, bmp, tga and portable anymaps from J.
opengl
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;
More Fractals Visualization examples.
Rope Editor Plus
This is Norm Johnson's Lightwave plugin that does the calculations in J, see forum announcement.
Turtle Geometry
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
Diffusion-Limited Aggregation
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.
For a detailed example of modifying this code to make it more J-like, look here and here.