# 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*.*