From J Wiki
Jump to navigation Jump to search

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;

Th sier til.png

More Fractals Visualization examples.

Rope Editor Plus

This is Norm Johnson's Lightwave plugin that does the calculations in J, see forum announcement.

Rope Editor In Action.jpg

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

Dla polar.png

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.