I am trying to create a 2-dimensional array of vectors using p5.js I generate the 2D vector array in setup() using nested For loops, and print the vector value to the console within the same nested loops. Starting with a 2D array of 2x2 elements, I want the vectors to take their values from the array index (so, for example: vector[0][0] has value (0,0) and vector[1][1] has value (1,1).
This all works correctly in setup(), and the first line on the console is:
0 0 _class {x: 0, y: 0, z: 0, constructor: Object}
But when I access this 2D array in the draw() function and print the vectors to console, the first line is:
0 0 _class {x: 1, y: 0, z: 0, constructor: Object}
let xV = 2
let yV = 2
let vectorP = [2,2]
function setup() {
for (var i = 0; i < xV; i++) {
for (var j = 0; j < yV; j++) {
vectorP[i,j] = new p5.Vector(i,j);
console.log(i,j,vectorP[i,j]);
}
}
}
function draw() {
console.log ("draw")
for (var i = 0; i < xV; i++) {
for (var j = 0; j < yV; j++) {
console.log(i,j,vectorP[i,j])
}
}
}
I assume this is due to the way JavaScript deals with objects by reference rather than by value, but I cannot find a way to make it work. I have tried variations with createVector, push, etc. with the same result. The other possibility that occurred to me is that the next vector begins where the previous vector ended. I'm also not sure if my initial array declaration is correct. *Edit: I have tried the declaration let vectorP = new Array(2,2) which makes no difference.
Via Active questions tagged javascript - Stack Overflow https://ift.tt/MfyX2kE
Comments
Post a Comment