Paso 7: 3D primitivas: cubos
Dibujo un cubo sigue una lógica similar a la esfera.
El contorno de un cubo tiene ocho esquinas, con doce aristas conectando esos rincones. Al igual que la esfera, no voy a rellenar el interior de la esfera, pero por el contrario, dibujar las aristas y los vértices. Para saber dónde poner el cubo, necesito conocer la posición de uno de los vértices y la longitud del borde. Voy a la base de todas las posiciones de la parte superior espalda vértice izquierdo (mostrado en cian en la imagen de arriba)
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)); }
La función completa y el código de trabajo son en el ejemplo de los cubos en la biblioteca de procesamiento.