Stap 7: 3D primitieven: kubussen
Tekening van een kubus volgt een soortgelijke logica tot de sfeer.
De omtrek van een kubus heeft acht hoeken, met twaalf randen aansluiten die hoeken. Net als de bol ga ik niet te vullen in de binnenkant van de bol, maar daarentegen de randen en hoekpunten gewoon te tekenen. Om te weten waar te zetten van de kubus, moet ik weten van de positie van een van de hoekpunten en de lengte van de rand. I 'm going to baseren alle de posities off van de bovenkant terug links hoekpunt (getoond in cyaan in de afbeelding hierboven)
PVector[] topPoints=new PVector[4]; PVector[] bottomPoints=new PVector[4]; topPoints[0]=topLeft; topPoints[1]=new PVector(topLeft.x+side, topLeft.y, topLeft.z); topPoints[2]=new PVector(topLeft.x+side, topLeft.y+side, topLeft.z); topPoints[3]=new PVector(topLeft.x, topLeft.y+side, topLeft.z); PVector bottomLeft=new PVector(topLeft.x, topLeft.y, topLeft.z+side); bottomPoints[0]=bottomLeft; bottomPoints[1]=new PVector(bottomLeft.x+side, bottomLeft.y, bottomLeft.z); bottomPoints[2]=new PVector(bottomLeft.x+side, bottomLeft.y+side, bottomLeft.z); bottomPoints[3]=new PVector(bottomLeft.x, bottomLeft.y+side, bottomLeft.z); //draw the twelve edges of the cube for (int i=0; i<4; i++) { drawLine(topPoints[i], bottomPoints[i], col); drawLine(topPoints[i], topPoints[(i+1)%4], col); drawLine(bottomPoints[i], bottomPoints[(i+1)%4], col); } //now draw the vertices. I think that it looks nice to make these in a different color than the edges. for (int i=0; i<4; i++) { cube.setVoxel(topPoints[i], color(255,0,0)); cube.setVoxel(bottomPoints[i], color(255,0,0)); }
De volledige functie en werkende code zijn in het voorbeeld van de kubussen in de bibliotheek van de verwerking.