Casey Reas and Data Visualisation

Casey Reas, amongst other things, presents works like “Signals” in which he explores how proteins communicate positive and negative signals within a cancer cell.

Randomness. A.I.. Control. Art. Design.

These are all words that exist in the conversation initiated by Raes of and by his work. his talk proceeds to describe the beauty and complexity of randomness in art, and a lot of his own creations, especially in using randomness and “jittering” come to represent much of the organic movements and behaviours we witness in day-to-day life, but cannot quite point to directly.

In describing his works he comes to an interesting notion: that, in creating randomness and behavioural traits, he is not interested in the particular position of an object and any given moment, rather the path of how they organize themselves. Not a moment, but the collection of moments. This idea translates to many tiers of the human experience, whether it be ideological and a way of conceptualizing how paradigms shift, or people and their movement in space.

For me, however, his work represented an important focus in the way we visualize data. How do we collect a point of interest and make it significant for an audience? It is not just Reas using a gimmick to make a pretty object move on a page. Rather the particular movement and the way that he represents that data provided us insight into an aspect of this simulated movement that is unseen to the naked eye.

This is one of my passions in design: to make the unseen, seen. To consider medium, process, and output. To create interaction. Such ideas of visual data and data processing applied in graphics, 2D, and static images. This, in some ways, describes interaction engagement and the exchange of knowledge as things that transcend literal physical interaction.

For the assignment, I recreated “Phase Pattern” by Manfred More with some movement.

//p145 "Phase Pattern" by Manfred Mohr

int w = 400;
int heightDisplacement= 90;
int lineSpacing=6;
float granulation = 0.002;

void setup() {

  size(600, 800);


void draw() {

  float prevlengthAdjustment=0;

  for (int y =0; y<height; y=y+lineSpacing) {

    //noise(frequency) , sin a(x+b)

    line(0, y, height, y);
  stroke(255, 255, 255);
  vertex(1, height);
  for (int x =0; x<width; x=x+8) {
    float frequency2 = frameCount*0.005- granulation*x;
    //-0.002 is granulation. It is to make the noise a little bit smaller. If it wasnt there it would look more random.
    //you multiply by 0.005 to slow down the frame. Otherwise its super fast
    //we multiply by x because it is changing by 1 everytime. If we didnt multiply it, all of the objects will do the same thing.
    float amplitude = 600;
    float adjustedNoise2 = (noise(frequency2));
    float lengthAdjustment2 = adjustedNoise2*amplitude;
    //noise(frequency) , sin a(x+b)

    vertex(x+1, heightDisplacement+lengthAdjustment2);
    //stroke(255, 255, 255);
  vertex(width-8, height);

  for (int x =0; x<width; x=x+lineSpacing) {
    float frequency = frameCount*0.001+ granulation*x;
    float frequency2 = frameCount*0.005- granulation*x;
    float amplitude = 600;
    float adjustedNoise = (noise(frequency));
    float adjustedNoise2 = (noise(frequency2));
    float lengthAdjustment = adjustedNoise*amplitude;
    float lengthAdjustment2 = adjustedNoise2*amplitude;

    line(x, 0, x, lengthAdjustment);
    line(x+1, 800, x+1, heightDisplacement+lengthAdjustment2);


Leave a Reply