Schritt 20: 3D Bouncing Ball - Verarbeitung
Hier ist einige Verarbeitungscode, der einen Ball prallt in einem 3D Cube zeigt.
Dies ist nützlich, da sie Informationen für die X-, Y- und Z-Axiz enthält.
Es wird mit dem Firmata Code kombiniert werden, um die Bewegungen von allen 3-Achsen an dem Arduino, die wiederum Kontrollen der Stepper-Motoren, die die Plattformen in jeder Achse bewegen senden. Dieser Code wird dann mit dem "Netz" Muster aus Schritt 14 erstelle ich ein 3D-Netz kombiniert werden.
Wie in Schritt 6 - habe ich dies auf einige Beispiel-Code aufgebaut, die mit Verarbeitung verpackt geliefert wurde. Es ist unter Beispiele -> Themen -> Motion -> Bounce
*** VERARBEITUNGSCODE NUR ***
/**
* Bounce_3D_0
*
* Wenn die Form der Kante des Fensters trifft, kehrt die Richtung um.
*
* Modifiziert für 3D
Hinweis: 0,0,0 - obere linke Ecke (vor dem Computer-Monitor)
negative Z-Achse zeigt "in" der Computer-monitor
positive Y-Achse nach unten zeigt
positive X Achsenpunkte auf der rechten Seite
*/
Int-Größe = 40; Breite der Form
Float Xpos, Ypos, Zpos; Ausgangslage der Form
Schwimmer Tiefe;
Xspeed schweben = 2,5; Geschwindigkeit der Form
Yspeed Float = 2; Geschwindigkeit der Form
Float Zspeed = 3;
Int Xdirection = 1; Links oder rechts
Int Ydirection = 1; Von oben nach unten
Int Zdirection = 1; vorne oder hinten
void setup()
{
Größe (400, 400, P3D);
noStroke();
frameRate(30);
Smooth();
Legen Sie die Startposition der Form
xPos = Breite/2;
yPos = Höhe/2;
Zpos = - Höhe/2; Beachten Sie, dass Zaxis "in" den Bildschirm geht
Tiefe = - Höhe;
}
void draw()
{
Background(102);
Lights();
Glas-Box / / Hinweis: Linie (X1, y1, z1, x 2, y2, z2)
Stroke(255);
Zurück
Linie (0,0, Tiefe, Breite, Tiefe 0,);
Linie (0, Höhe, Tiefe, Breite, Höhe, Tiefe);
Linie (0,0, Tiefe, 0, Höhe, Tiefe);
Linie (Breite, 0, Tiefe, Breite, Höhe, Tiefe);
Ecken
Linie (0,0,0, 0,0, Tiefe);
Linie (0, Höhe 0, 0, Höhe, Tiefe);
Linie (Breite, 0, 0, Breite 0, Tiefe);
Linie (Breite, Höhe 0, Breite, Höhe, Tiefe);
Aktualisieren Sie die Position der Form
xPos = Xpos + (Xspeed * Xdirection);
yPos = Ypos + (Yspeed * Ydirection);
Zpos = Zpos + (Zspeed * Zdirection);
Testen Sie, ob die Form überschreitet die Grenzen des Bildschirms
Wenn ja, mit-1 multipliziert umkehren Sie die Richtung
Wenn (Xpos > Breite Größe || Xpos < 0) {}
Xdirection * =-1;
}
Wenn (Ypos > Höhe-Größe || Ypos < 0) {}
Ydirection * =-1;
}
Wenn (Zpos <-Höhe-Größe || Zpos > 0) {//note, die Zaxis "in" der Bildschirm geht
Zdirection * =-1;
}
Zeichnen Sie die Form
Lights();
Übersetzen Sie (Xpos, Ypos, Zpos);
Sphere(Size);
}