В моем текущем проекте у меня есть ArrayList PVectors, в которых хранятся координаты xyz для трехмерных точек. Я передаю ArrayList другому классу, который манипулирует им, однако при этом я получаю исключение NullPointerException. Я предполагаю, что один из PVectors имеет значение null, но я проверил это, назначив любые нулевые объекты (0,0,0), и я все еще получаю сообщение об ошибке. Кроме того, более эффективно иметь массив PVectors или ArrayList PVectors? В любом случае я все еще получаю сообщение об ошибке. Вот линия, которая его производит.
trip.pass(pointCoordinates);
А вот и основной класс
import org.openkinect.*;
import org.openkinect.processing.*;
Kinect kinect;
Trip trip;
boolean tripOn;
int w = 640;
int h = 480;
int distance = 5;
float[] depthLookUp = new float[2048];
ArrayList pointCoordinates = new ArrayList();
float factor = 400;
float a = 0;
float angle = 0;
float frequency = .05;
void setup() {
size(800,600,P3D);
kinect = new Kinect(this);
kinect.start();
kinect.enableDepth(true);
kinect.processDepthImage(false);
stroke(255);
for (int i = 0; i < depthLookUp.length; i++) {
depthLookUp[i] = rawDepthToMeters(i);
}
for(int i = 0; i < 31920; i++) {
pointCoordinates.add(new PVector(0, 0, 0));
}
}
void draw() {
background(0);
pushMatrix();
translate(width/2 + width/3,height/2, -200);
//add 1/3 width to account for rule of thirds
popMatrix();
int[] depth = kinect.getRawDepth();
calculate(depth);
if(!tripOn) {
for(int i = 0; i < pointCoordinates.size(); i++) {
PVector temp = (PVector) pointCoordinates.get(i);
point(temp.x, temp.y, temp.z);
}
}
if(frameCount % 10 == 0) {
if(tripOn) {
tripOn = false;
trip.clear();
}
else {
tripOn = true;
trip.pass(pointCoordinates);
}
}
if(tripOn) trip.run();
}
void stop() {
kinect.quit();
super.stop();
}
Я могу вставить больше классов, если это поможет прояснить проблему. Спасибо!