La esfera de los discos

Actualizada el

La esfera a la que hacen referencia los discos anteriores abarca una diversidad de colores mayor que las anteriores que registraban el punto de color*. Además, no hay ningún punto con el color repetido. No obstante, quedan colores por representar. En la imagen de abajo se puede apreciar como es la esfera.

La esfera correspondiente a los discos anteriores.
Imagen 1: La esfera correspondiente a los discos anteriores.

Esta vez incluyo el código R, algoritmo de abajo, que genera la imagen anterior para que pueda ser contrastada. Me baso en una función de R, rainbow, la cual simula el arco iris o el paso de la luz blanca por el prisma. Los colores que de R a G, de G a B y B a R incluye a los que contiene la luz blanca.

He utilizado, también, la función colorRampPalette para obtener un escalado de cada uno de los colores generados por rainbow al negro y otro, al blanco. Además, mencionaré que las librerías de R son: plot3D y rgl. La primera posibilita la representación de imágenes en perspectiva 3D y la segunda ofrece la posibilidad de representaciones interactivas en la pantalla.

# Esfera correspondiente a los discos -------------------------------

# Librerias ---------------------------------------------------------

library("plot3D") # Para representaciones de imágenes en 3D
library("rgl") # Para representaciones interactivas en 3D

# Nucleo ------------------------------------------------------------


# Parametros para obtener una cantidad finita de puntos 
# y colores de la esfera

k <- 16 nf <- 2*k # Recomendable que sea par
nc <- 4*k+1 # Recomendable que sea impar

UV <- mesh(seq(-pi/2,pi/2,length.out = nf),seq(0,2*pi,length.out = nc))

# Puntos de la esfera

x3 <- cos(UV$x)*sin(UV$y)
y3 <- cos(UV$x)*cos(UV$y)
z3 <- sin(UV$x)

# Generación de los colores

matcol <- matrix(nrow = nc, ncol = nf)
rb <- rainbow(nc) # hsv -> RGB IEC standard 61966

for(i in 1:nc){
 matcol[i,] <- colorRampPalette(colors = c(rgb(0,0,0), rb[i],
 rgb(1,1,1)), interpolate ="spline")(nf)
}

# Imagen de los colores (RGB IEC standard 61966) a representar en 2D

image2D(matcol)
write.table(x = t(matcol), file = "MatrizColores.txt", sep = ";")


# Vista en 3D interactiva de la esfera

surface3d(x = x3, y = y3, z = z3, col = t(matcol), lit = FALSE, smooth = FALSE)


# 12 vistas diferentes de la esfera para el papel

plot.new()
antes <- par(mar=c(0.2,0.2,0.2,0.2), mai= c(0.2,0.2,0.2,0.2), mfrow=c(3,4))

surf3D(x3,y3,z3, colvar = t(matcol), theta = 0, phi = 0)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 90, phi = 0)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 180, phi = 0)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 270, phi = 0)

surf3D(x3,y3,z3, colvar = t(matcol), theta = 0, phi = 60)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 90, phi = 60)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 180, phi = 60)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 270, phi = 60)

surf3D(x3,y3,z3, colvar = t(matcol), theta = 0, phi = -60)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 90, phi = -60)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 180, phi = -60)
surf3D(x3,y3,z3, colvar = t(matcol), theta = 270, phi = -60)

par(antes)

Debo decir que los colores del disco han sido generados de una forma diferente a los colores de la esfera, por tanto, puede haber diferencias. Estas no importan para captar la idea intuitiva que manifiesto. Al igual que en geometría no importa la precisión gráfica del dibujo, aquí tampoco importa la precisión cromática. Debemos usar la intuición y la lógica; más adelante pasaremos a las mediciones.
No olvide el lector que el centro de la esfera contendría al color del agua, el transparente.

Un disco con colores

Conclusiones de la cuarta entrega

Deja un comentario