We closed this forum 18 June 2010. It has served us well since 2005 as the ALPHA forum did before it from 2002 to 2005. New discussions are ongoing at the new URL http://forum.processing.org. You'll need to sign up and get a new user account. We're sorry about that inconvenience, but we think it's better in the long run. The content on this forum will remain online.
IndexProgramming Questions & HelpSyntax Questions › storing coordinates in a array
Page Index Toggle Pages: 1
storing coordinates in a array (Read 1182 times)
storing coordinates in a array
Dec 30th, 2009, 4:47am
 
I got to store coördinates but i don't know how, pvector or array etc. i have litle to no experience with arrays and it's really confusing for me.

Now the error is on this line:

side1Array[y][] = x;

How can i store the x value?

Code:
import processing.opengl.*;
import peasy.*;

PeasyCam cam;

Grid grid1;

void setup(){
size(800, 800, OPENGL);
cam = new PeasyCam(this, 100);
cam.setMinimumDistance(500);
cam.setMaximumDistance(2000);

grid1 = new Grid("AB.jpg", "CD.jpg");
grid1.calculate();
smooth();
}


void draw(){
background(255);
translate(300, 300, 0);
}


class Grid {
PImage side1, side2;

Grid(String s1, String s2){//side1, side2

side1 = loadImage(s1);
side2 = loadImage(s2);
//hier check invoeren of images zelfde hoogte hanteren

}

void calculate(){//dit in Grid functie plaatsen zodat grid1.calculate(); overbodig word
int[][] side1Array = new int[side1.height][];
side1.loadPixels();
int pxc = 0;//pixelcount
for(int y = 0; y < side1.height; y++){
for(int x = 0; x < side1.width; x++){
if(side1.pixels[pxc] != -1){//als het niet wit is
//println(side1.pixels[pxc]);
//println("y : "+y+" x : "+x);
side1Array[y][] = x;
}
pxc++;
}
}
}
}




Quote:
y : 141  x : 231
y : 141  x : 232
y : 141  x : 233
y : 141  x : 234
y : 141  x : 235
y : 141  x : 236
y : 141  x : 237
y : 141  x : 238
y : 141  x : 239
y : 141  x : 240
y : 141  x : 241
y : 141  x : 242
y : 141  x : 243
y : 141  x : 244
y : 141  x : 245
y : 141  x : 246
y : 141  x : 247
y : 141  x : 248
y : 141  x : 249
y : 141  x : 250
y : 141  x : 251
y : 141  x : 252
y : 141  x : 261
y : 141  x : 269
y : 141  x : 271
y : 142  x : 10
y : 142  x : 15
y : 142  x : 16
y : 142  x : 17
y : 142  x : 18
y : 142  x : 19
y : 142  x : 20
y : 142  x : 21
y : 142  x : 22
y : 142  x : 23
y : 142  x : 24
y : 142  x : 25
y : 142  x : 26
y : 142  x : 27
y : 142  x : 28
y : 142  x : 29
y : 142  x : 30
y : 142  x : 31
y : 142  x : 32
y : 142  x : 33
y : 142  x : 34
y : 142  x : 35
y : 142  x : 36
y : 142  x : 37
y : 142  x : 38
y : 142  x : 39
y : 142  x : 40
y : 142  x : 41
y : 142  x : 42
y : 142  x : 43
y : 142  x : 44
y : 142  x : 45
y : 142  x : 46
y : 142  x : 47
y : 142  x : 48
y : 142  x : 49
y : 142  x : 50
y : 142  x : 51
y : 142  x : 52
y : 142  x : 53
y : 142  x : 54
y : 142  x : 55
y : 142  x : 56
y : 142  x : 57
y : 142  x : 58
y : 142  x : 59
y : 142  x : 60
y : 142  x : 61
y : 142  x : 62
y : 142  x : 63
y : 142  x : 64
y : 142  x : 65
y : 142  x : 66
y : 142  x : 67
y : 142  x : 68
y : 142  x : 69
y : 142  x : 70
y : 142  x : 71
y : 142  x : 72
y : 142  x : 73
y : 142  x : 74
y : 142  x : 75
y : 142  x : 89
y : 142  x : 90
y : 142  x : 91
y : 142  x : 92
y : 142  x : 93
y : 142  x : 94
y : 142  x : 95
y : 142  x : 96
y : 142  x : 97
y : 142  x : 98
y : 142  x : 99
y : 142  x : 100
y : 142  x : 101
y : 142  x : 102
y : 142  x : 103
y : 142  x : 104
y : 142  x : 105
y : 142  x : 106
y : 142  x : 107
y : 142  x : 108
y : 142  x : 109
y : 142  x : 110
y : 142  x : 111
y : 142  x : 112
y : 142  x : 113
y : 142  x : 114
y : 142  x : 115
y : 142  x : 116
y : 142  x : 117
y : 142  x : 118
y : 142  x : 119
y : 142  x : 120
y : 142  x : 121
y : 142  x : 122
y : 142  x : 123
y : 142  x : 124
y : 142  x : 125
y : 142  x : 126
y : 142  x : 127
y : 142  x : 128
y : 142  x : 129
y : 142  x : 130
y : 142  x : 131
y : 142  x : 132
y : 142  x : 133
y : 142  x : 134
y : 142  x : 135
y : 142  x : 136
y : 142  x : 137
y : 142  x : 138
y : 142  x : 139
y : 142  x : 140
y : 142  x : 141
y : 142  x : 142
y : 142  x : 143
y : 142  x : 144
y : 142  x : 145
y : 142  x : 146
y : 142  x : 147
y : 142  x : 148
y : 142  x : 149
y : 142  x : 150
y : 142  x : 151
y : 142  x : 152
y : 142  x : 153
y : 142  x : 154
y : 142  x : 155
y : 142  x : 162
y : 142  x : 163
y : 142  x : 164
y : 142  x : 165
y : 142  x : 166
y : 142  x : 167
y : 142  x : 168
y : 142  x : 169
y : 142  x : 170
y : 142  x : 171
y : 142  x : 172
y : 142  x : 173
y : 142  x : 174
y : 142  x : 175
y : 142  x : 176
y : 142  x : 177
y : 142  x : 178
y : 142  x : 179
y : 142  x : 180
y : 142  x : 181
y : 142  x : 182
y : 142  x : 183
y : 142  x : 184
y : 142  x : 185
y : 142  x : 186
y : 142  x : 187
y : 142  x : 188
y : 142  x : 189
y : 142  x : 190
y : 142  x : 191
y : 142  x : 192
y : 142  x : 193
y : 142  x : 194
y : 142  x : 195
y : 142  x : 196
y : 142  x : 197
y : 142  x : 198
y : 142  x : 199
y : 142  x : 200
y : 142  x : 201
y : 142  x : 202
y : 142  x : 203
y : 142  x : 204
y : 142  x : 205
y : 142  x : 206
y : 142  x : 207
y : 142  x : 208
y : 142  x : 209
y : 142  x : 210
y : 142  x : 211
y : 142  x : 212
y : 142  x : 213
y : 142  x : 214
y : 142  x : 215
y : 142  x : 216
y : 142  x : 217
y : 142  x : 218
y : 142  x : 219
y : 142  x : 220
y : 142  x : 221
y : 142  x : 222
y : 142  x : 223
y : 142  x : 224
y : 142  x : 225
y : 142  x : 226
y : 142  x : 227
y : 142  x : 228
y : 142  x : 229
y : 142  x : 230
y : 142  x : 231
y : 142  x : 232
y : 142  x : 233
y : 142  x : 234
y : 142  x : 235
y : 142  x : 236
y : 142  x : 237
y : 142  x : 238
y : 142  x : 239
y : 142  x : 240
y : 142  x : 241
y : 142  x : 242
y : 142  x : 243
y : 142  x : 244
y : 142  x : 245
y : 142  x : 246
y : 142  x : 248
y : 142  x : 250
y : 142  x : 251
y : 142  x : 261
y : 142  x : 266
y : 143  x : 73
y : 143  x : 88
y : 143  x : 90
y : 143  x : 244
y : 143  x : 252
y : 143  x : 270
Re: storing coordinates in a array
Reply #1 - Dec 30th, 2009, 5:11am
 
Use an array of PVectors :

Code:
// declaring the array (notice the brackets)
PVector[] coordinates;

// setting up the array (10 = 10 items)
coordinates = new PVector[10];

// filling the array :
// first item
coordinates[0] = new PVector(141, 231);
// second item
coordinates[1] = new PVector(141, 232);
// etc...


Then, to retrieve the coordinates of an item (say, item #7), simply do :
Code:
float x = coordinates[7].x;
float y = coordinates[7].y;

// or

PVector v = coordinates[7];
float x = v.x;
float y = v.y;
Re: storing coordinates in a array
Reply #2 - Dec 30th, 2009, 6:37am
 
thx that was leanrfull but i have been thinking a bit more.

I need to call an aray in a later state by the y value.

For example

s1[y][x]

so:

s1[0][34];
s1[0][62];
s1[0][63];
s1[0][66];
s1[1][23];
s1[1][26];
s1[1][28];
s1[2][22];
s1[3][14];

this way i know that on row 0 there are 4 elements.
But how can i store it like this?

I know how many y values there are but for the x i don't.
I create the array like this:

int[][] side1Array = new int[side1.height][];

For the rest i added a count called ic that gets recreated on every new y row.
But when i try to store it i get a nullPointerException on this line:

side1Array[y][ic] = x;

That's because i didnt set a length for the second part of [][], if i do like this:
   int[][] side1Array = new int[side1.height][300];  

Then i get some numbers and for the rest zero's till it reaches the 300 so that's no option either. So to get it correct i first must expand  the array before i store the value.
Only how can i expand the array by 1 every time? I don't have problems expanding a normal array but i can't expand a 2d-array.

Code:
import processing.opengl.*;
import peasy.*;

PeasyCam cam;

Grid grid1;

void setup(){
 size(800, 800, OPENGL);
 cam = new PeasyCam(this, 100);
 cam.setMinimumDistance(500);
 cam.setMaximumDistance(2000);

 grid1 = new Grid("AB.jpg", "CD.jpg");
 grid1.calculate();

 smooth();
}


void draw(){
 background(255);
 translate(300, 300, 0);
}


class Grid {
 PImage side1, side2;

 Grid(String s1, String s2){//side1, side2
   side1 = loadImage(s1);
   side2 = loadImage(s2);
   //hier check invoeren of images zelfde hoogte hanteren

 }

 void calculate(){//dit in Grid functie plaatsen zodat grid1.calculate(); overbodig word
   int[][] side1Array = new int[side1.height][];  
   side1.loadPixels();
   int pxc = 0;//pixelcount
   for(int y = 0; y < side1.height; y++){
int ic = 0;//initial count
for(int x = 0; x < side1.width; x++){
 if(side1.pixels[pxc] != -1){//als het niet wit is
   //println("y : "+y+"  x : "+x);
   //side1Array[y] = expand(side1Array[y], side1Array[y].length+1);
   side1Array[y][ic] = x;
   ic++;
 }
 pxc++;
}
   }    
 }
}


Re: storing coordinates in a array
Reply #3 - Dec 30th, 2009, 8:56am
 
you could use a 2d arraylist. although it may not be the fastest way i think its the easiest for what you want to do.

Code:

ArrayList yList = new ArrayList();

for (int i = 0; i < 300; i++) {
 ArrayList<Integer> xList = new ArrayList<Integer>();
 int xListSize = (int) random(5, 10);

 for (int j = 0; j < xListSize; j++)
   xList.add((int)random(300));

 yList.add(xList);
}

println(yList);
Re: storing coordinates in a array
Reply #4 - Dec 30th, 2009, 9:15am
 
uhh bad suggestion Smiley we had that discussion here : http://processing.org/discourse/yabb2/num_1256911414.html

but suggested an array myself lately Smiley
http://processing.org/discourse/yabb2/?num=1260788006/
Re: storing coordinates in a array
Reply #5 - Dec 30th, 2009, 9:47am
 
i dont think you read his question... he wants to make a 2d array with varying array lengths which you cannot do in java...

you cant have a 2d int array like

[0][3]
[1][2]
[3][6]

they must all have lengths of either 3... 2... or 6... also if he were going to make a custom object you he either have an array or arraylist anyhow but i didnt see any objects in his code so i wanted to make it easier...

Cedric wrote on Dec 30th, 2009, 9:15am:
uhh bad suggestion Smiley we had that discussion here : http://processing.org/discourse/yabb2/num_1256911414_7.html

but suggested an array myself lately Smiley
http://processing.org/discourse/yabb2/num_1260788006_.html

Re: storing coordinates in a array
Reply #6 - Dec 30th, 2009, 9:50am
 
thats true, i just read storing coordinates and array and that reminded me about this threat/discussion
Re: storing coordinates in a array
Reply #7 - Dec 30th, 2009, 10:50am
 
I had to use apend instand of expend, i only never knew of this command.

Code:
  void calculate(PImage img, int[][] ar){
img.loadPixels();
int pxc = 0;//pixelcount
for(int y = 0; y < img.height; y++){
for(int x = 0; x < img.width; x++){
if(img.pixels[pxc] != -1){//als het niet wit is
ar[y] = append(ar[y], x);
}
pxc++;
}
}
}
Page Index Toggle Pages: 1