Paso 20: 3D Bouncing Ball - procesamiento
Aquí le damos algunos código de procesamiento que muestra una bola rebotando en un cubo 3D.
Esto es útil ya que contiene información para el axiz X, Y y Z.
Se combinará con el código de una firmado para enviar los movimientos de los 3 ejes para el Arduino, que a su vez controla el paso a paso motores, que se mueven las plataformas en cada eje. Ese código entonces se combinará con el patrón de "malla" de paso 14 para crear una malla 3D.
Como en el paso 6 - yo he construido este en algún código de ejemplo que viene empaquetado con el proceso. Está bajo ejemplos -> temas -> Motion -> despedida
*** CÓDIGO DE PROCESAMIENTO SÓLO ***
/**
* Bounce_3D_0
*
Cuando se forma golpea el borde de la ventana, invierte su dirección.
*
* Modificado para 3D
Nota: 0,0,0 - superior izquierda esquina (frente a la pantalla del ordenador)
puntos de eje de Z negativos dentro de la pantalla del ordenador
puntos de eje Y positivo hacia abajo
positivo X puntos de eje a la derecha
*/
int tamaño = 40; Ancho de la forma
flotador xpos, ypos, zpos; Posición inicial de forma
profundidad de flotador;
flotador xspeed = 2.5; Velocidad de la forma
flotador yspeed = 2; Velocidad de la forma
flotador de zspeed = 3;
int xdirection = 1; Izquierda o derecha
int ydirection = 1; Arriba a abajo
int zdirection = 1; atrás o
void setup()
{
tamaño (400, 400, P3D);
noStroke();
frameRate(30);
Smooth();
Establecer la posición inicial de la forma
XPOS = ancho/2;
YPOS = altura/2;
zpos = - altura/2; Nota que Zaxis va dentro de la pantalla
profundidad = - altura;
}
void draw()
{
Background(102);
Lights();
caja de cristal / / Nota: línea (x1, y1, z1, x 2, y2, z2)
Stroke(255);
Atrás
línea (0,0, profundidad, anchura, profundidad 0,);
línea (0, altura, profundidad, anchura, altura, profundidad);
línea (0,0, profundidad, 0, altura, profundidad);
linea (ancho, 0, anchura, altura, profundidad, profundidad);
esquinas
línea (0,0,0, 0,0, profundidad);
línea (altura 0, 0, 0, altura, profundidad);
linea (ancho, 0, 0, anchura, profundidad 0,);
linea (ancho, alto, 0, anchura, altura, profundidad);
Actualizar la posición de la forma
XPOS = xpos + (xspeed * xdirection);
YPOS = ypos + (yspeed * ydirection);
zpos = zpos + (zspeed * zdirection);
Prueba a ver si la forma excede los límites de la pantalla
Si lo hace, invierta su dirección multiplicando por -1
Si (xpos > tamaño de ancho || xpos < 0) {}
xdirection * = -1;
}
Si (ypos > altura tamaño || ypos < 0) {}
ydirection * = -1;
}
Si (zpos <-altura-tamaño || zpos > 0) {//note que Zaxis va dentro de la pantalla
zdirection * = -1;
}
Dibuja la figura
Lights();
traducir (xpos, ypos, zpos);
Sphere(Size);
}