Styra en RepStrap bearbetning (20 / 25 steg)
Steg 20: 3D Bouncing Ball - bearbetning
Här är några bearbetning kod som visar en boll studsar runt i en 3D-kub.
Detta är användbart eftersom det innehåller information för X, Y och Z axiz.
Det kombineras med Firmata koden för att skicka alla 3-axliga rörelser till Arduino, som i sin tur kontroller stepper motors, som flytta plattformarna i varje område. Att koden kombineras sedan med "mesh" mönster från steg 14 att skapa ett 3D-nät.
Som i steg 6 - har jag byggt detta på några exempelkod som medföljde bearbetning. Det är under exempel -> information -> rörelse -> Bounce
*** BEARBETNING KOD ENDAST ***
/**
* Bounce_3D_0
*
* När formen träffar kanten på fönstret, vänder det dess riktning.
*
* Ändrade för 3D
Obs: 0,0,0 - övre vänstra hörnet (mot datorskärmen)
Z-axeln minuspoäng "till" datorskärmen
positiv Y-axeln pekar ner
positiva X-axeln pekar till höger
*/
int storlek = 40; Formens bredd
float xpos, ypos, zpos; Startpositionen för formen
float djup;
flyta xspeed = 2.5. Hastigheten på formen
flyta yspeed = 2; Hastigheten på formen
flyta zspeed = 3;
int xdirection = 1; Vänster eller höger
int ydirection = 1; Uppifrån och ned
int zdirection = 1; främre eller bakre
void setup()
{
storlek (400, 400, P3D);
noStroke();
frameRate(30);
Smooth();
Ange startpositionen för formen
Xpos = bredd/2;
ypos = höjd/2;
zpos = - höjd/2; notera att Zaxis går "till" skärmen
djup = - höjd;
}
void draw()
{
Background(102);
Lights();
glas låda / / Obs: line (x1, y1, z1, x 2, y2, z2)
stroke(255);
tillbaka
linje (0,0, djup, bredd, 0, djup);
linje (0, höjd, djup, bredd, höjd, djup);
linje (0,0, djup, 0, höjd, djup);
linje (bredd, 0, djup, bredd, höjd, djup);
hörnen
linje (0,0,0, 0,0, djup);
linje (0, höjd, 0, 0, höjd, djup);
linje (bredd, 0, 0, bredd, 0, djup);
linje (bredd, höjd, 0, bredd, höjd, djup);
Uppdatera placeringen av formen
Xpos = xpos + (xspeed * xdirection);
ypos = ypos + (yspeed * ydirection);
zpos = zpos + (zspeed * zdirection);
Testa för att se om formen överskrider gränserna för skärmen
Om den gör det, återföra dess riktning genom att multiplicera med -1
om (xpos > bredden-storleken || xpos < 0) {
xdirection * = -1;
}
om (ypos > höjd-storlek || ypos < 0) {
ydirection * = -1;
}
om (zpos <-höjd-storlek || zpos > 0) {//note som Zaxis går "till" skärmen
zdirection * = -1;
}
Dra formen
Lights();
översätta (xpos, ypos, zpos);
Sphere(size);
}