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.
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.