Cubos y cilindros

■ El comando Cube

El comando de objetos Cube en B3D y CSV es equivalente a una serie de comandos Vertex/AddVertex y Face/AddFace.

Dando el siguiente código (Estilo B3D):

Cube x, y, z

El comando Cube corresponde a estas instrucciones (estilo B3D):

Vertex x, y, -z
Vertex x, -y, -z
Vertex -x, -y, -z
Vertex -x, y, -z
Vertex x, y, z
Vertex x, -y, z
Vertex -x, -y, z
Vertex -x, y, z
Face v+0, v+1, v+2, v+3
Face v+0, v+4, v+5, v+1
Face v+0, v+3, v+7, v+4
Face v+6, v+5, v+4, v+7
Face v+6, v+7, v+3, v+2
Face v+6, v+2, v+1, v+5

donde v es el número de vértices que posee actualmente creado antes que el comando Cube fuera usado.

Si deseas agregar una textura al cubo, necesitas agregar apropiadamente los comandos Coordinate/SetTextureCoordinate manualmente.

■ El comando Cylinder

El comando de objetos Cylinder en B3D y CSV es equivalente a una serie de comandos Vertex/AddVertex y Face/AddFace.

Dando el siguiente código (Estilo B3D):

Cylinder n, r1, r2, h

El comando Cylinder primero corresponde a instrucciones de n pares de dos vértices (estilo B3D):

Vertex cos[2*pi*0/n]*r1, h/2, sin[2*pi*0/n]*r1
Vertex cos[2*pi*0/n]*r2, -h/2, sin[2*pi*0/n]*r2
Vertex cos[2*pi*1/n]*r1, h/2, sin[2*pi*1/n]*r1
Vertex cos[2*pi*1/n]*r2, -h/2, sin[2*pi*1/n]*r2
Vertex cos[2*pi*2/n]*r1, h/2, sin[2*pi*2/n]*r1
Vertex cos[2*pi*2/n]*r2, -h/2, sin[2*pi*2/n]*r2

Vertex cos[2*pi*(n-1)/n]*r1, h/2, sin[2*pi*(n-1)/n]*r1
Vertex cos[2*pi*(n-1)/n]*r2, -h/2, sin[2*pi*(n-1)/n]*r2

Entones, n caras son añadidas a la forma de las paredes laterales (Estilo B3D):

Face 2, 3, 1, 0
Face 4, 5, 3, 2
Face 6, 7, 5, 4
Face 8, 9, 7, 6

Face 2*n-6, 2*n-5, 2*n-7, 2*n-8
Face 2*n-4, 2*n-3, 2*n-5, 2*n-6
Face 2*n-2, 2*n-1, 2*n-3, 2*n-4
Face 0,     1,      2*n-1, 2*n-2

Si r2>0, una tapa inferior es entonces agregada (Estilo B3D):

Face 2*n-2, 2*n-4, 2*n-6, …, 4, 2, 0

Si r1>0, una tapa superior es entonces agregada (Estilo B3D):

Face 1, 3, 5, …, 2*n-5, 2*n-3, 2*n-1

Si deseas agregar una textura al cilindro, necesitas agregar apropiadamente los comandos Coordinate/SetTextureCoordinate manualmente.