# Introduction To Computational Media (ICM) : Week 5

## Mostly Review

### 2 Dimensional Arrays

Break on through to another dimension

Arrays can be placed into arrays themselves. In other words, you can have an array of arrays.

```            ------------------------------------------------
| 1 | 2 | 4 | 8  | 16 | 32  | 64  | 128  | 256  |
------------------------------------------------
| 1 | 3 | 9 | 27 | 81 | 243 | 729 | 2187 | 6561 |
------------------------------------------------
```
The code to create this 2 dimensional array might be something like the following:
```            int[][] myArray = {{1,2,4,8,16,32,64,128,256},{1,3,9,27,81,243,729,2187,6561}};
```
or it could be done using a nested for loop
```            int[][] myArray = new int[2][9];
for (int j = 0; j < myArray.length; j++)
{
for (int i = 0; i < myArray[j].length; i++)
{
myArray[j][i] = (int) pow(j+2,i);
println(myArray[j][i]);
}
println("");
}
```

### Movie Playback

The video library: processing.video not only contains a Capture class, it also contains a Movie class for movie playback. This class should support any movie that QuickTime supports.

A Quick Playback Example
```            import processing.video.*;
Movie myMovie;

void setup()
{
size(160,120);
//myMovie = new Movie(this, "fish.mov"); // Local File, remember to "Add File"
myMovie = new Movie(this,"http://www.flowerpowerart.com/hc/media/qt/fish-ani-02.mov");  // Network Playback

myMovie.loop();
}

void draw()
{
image(myMovie, 0, 0);
}

// Called every time a new frame is available to read
void movieEvent(Movie m)
{
myMovie.read();
}
```

Try it
Download Fish Movie

### Taking Pictures

```            import processing.video.*;

Capture myCapture;

PImage newImage;

void setup()
{
size(640, 240);
newImage = new PImage(320,240);
myCapture = new Capture(this, 320, 240, 15);
}

void captureEvent(Capture myCapture)
{
myCapture.read();
}

void draw()
{
image(myCapture, 0, 0);
image(newImage, 320, 0);
}

void mousePressed()
{
newImage.copy(myCapture,0,0,myCapture.width,myCapture.height,0,0,newImage.width,newImage.height);
newImage.updatePixels();
}
```
The important thing here is the copy function in the PImage class.