Hur man rita Sweet 3D-grafik för LED kuber (6 / 9 steg)
Steg 6: 3D primitiver: sfärer
Så låt oss titta på några faktiska solid ritningsformen. En sfär är ett bra ställe att börja. Låt oss säga att vi vill dra en sfär med radien r, centrerad på punkten p.
En sak jag har märkt med kub grafik--fast klot inte faktiskt ser mycket bra--med de flesta grafik, du vill rita ytan, men lämna insidan tomt. Om du fyller hela formen, får du en mycket ljus klump, men det Lägg till inte eventuell ytterligare information om formen. Beslutet är mycket begränsat i kuber, så jag försöker hålla lysdioderna till det minsta som jag behöver och fokusera på att förmedla informationen som form.
Ritning i en kub liknar de processer som jag använder för att rita i CAD. Jag skulle starta genom att rita ett cirkulärt tvärsnitt av lysdioder och sedan kretsar att tvärsnittet runt en axel att skapa en sfär. Om du vill rita en cirkel, skulle kunna jag skriva en enkel slinga som:
för (float vinkel = 0; vinkel < 2 * PI; vinkel + = 1.)
setVoxel (p.x + radius*cos(angle), p.y + radie * sin(angle), p.z, color(255));
För att spinna det cirklar, jag skulle kapsla cirkel slingan inuti en annan slinga, som så:
för (float phi = 0; phi < PI; phi += 0,1)
för (float vinkel = 0; vinkel < 2 * PI; vinkel + = 1.)
setVoxel (p.x + radius*cos(angle)*sin(phi), p.y + radie * sin(angle) * sin(phi), p.z + r*cos(phi), color(255));
Bada bing bada boom, jag har en sfär!
Naturligtvis, är detta inbyggd i biblioteket. Istället för att skriva denna slinga själv, kan du bara ringa
L3D.Sphere (PVector center, float radie, färg col)
och objektet kommer att ta hand om ritning en sfär i kuben.
För mer info, kolla in Spheres exemplet i biblioteket, som är vad genereras den animerade gif ovan.