Esta función devuelve verdadero si el rayo dado intersecta una caja de tamaño s con un posición determinada por las transformaciones de geometría actualmente aplicadas a la escena. El rayo se puede calcular automáticamente a partir de las coordenadas de la pantalla tal como se indica en el siguiente ejemplo:
void setup() {
fullScreen(P3D);
}
void draw() {
background(200, 0, 150);
translate(width/2, height/2);
if (mousePressed && intersectsSphere(70, 0, 0)) fill(0, 0, 255);
else fill(255, 0, 0);
box(70);
}
También se puede proporcionar un rayo con origen y dirección arbitrarios:
PVector origin = new PVector();
PVector direction = new PVector();
void setup() {
fullScreen(P3D);
}
void draw() {
origin.set(width/2, height/2, 0);
direction.set(-width/2, -height/2).normalize();
background(200, 0, 150);
translate(width/2, height/2);
if (mousePressed && intersectsSphere(70, origin, direction)) fill(0, 0, 255);
else fill(255, 0, 0);
box(70);
}
La función acepta diferentes valores de ancho / alto / profundidad para la caja:
void draw() {
// ...
translate(width/2, height/2);
if (mousePressed && intersectsBox(100, 120, 80, origin, direction)) fill(0, 0, 255);
else fill(255, 0, 0);
box(100, 120, 80);
}