Sont présentés ici quelques exemples de couleurs interférentielles obtenues par la méthode colorimétrique exposée dans Repérage des couleurs CIE XYZ et Espaces de couleur RGB.
Ces couleurs sont observées dans des expériences classiques d'optique en lumière blanche comme l'interféromètre de Michelson, les miroirs de Fresnel, etc.
Lors d'une interférence de deux ondes, le facteur spectral de luminance est :
La différence de marche est exprimée en fonction d'une longueur d'onde moyenne (ici 500 nm) par la relation :
où p désigne l'ordre d'interférence pour cette longueur d'onde.
from pylab import * from math import * from CieXYZ import * from XYZ2RGB import * cie=CIEXYZ("../ciexyz/ciexyz31.txt") cie.setIlluminant("CN",6500) sRGB=XYZ2RGB([0.64,0.33],[0.3,0.6],[0.15,0.06],[0.3127,0.329]) adobeRGB = XYZ2RGB([0.64,0.33],[0.21,0.71],[0.15,0.06],[0.3127,0.329]) def couleur(p): delta=p*500 def Rf(L): return 0.5*(1+math.cos(6.2831853/L*delta)) XYZ=cie.spectralF2XYZ(Rf) return adobeRGB.rgbN2G(XYZ) im=[] n=400 for k in range(n): p=-10.0+20.0/float(n)*float(k) RGB=couleur(p) im.append(RGB) figure(1,figsize=(12,4)) imshow([im],aspect=5,extent=[-10,10,0,1])Figure pleine page
L'espace AdobeRGB(98) a été utilisé pour la conversion RGB car il fournit un dégradé de teinte plus fin que l'espace sRGB.
La facteur spectral de luminance est :
def couleur(N,p): delta=p*500 def Rf(L): sinus=math.sin(3.1415926*delta/L) if sinus==0: return 1 else: a=math.sin(N*3.1415926*delta/L)/sinus/float(N) return a*a XYZ=cie.spectralF2XYZ(Rf) return adobeRGB.rgbN2G(XYZ) im=[] n=400 for k in range(n): p=-10.0+20.0/float(n)*float(k) RGB=couleur(10,p) im.append(RGB) figure(2,figsize=(12,4)) imshow([im],aspect=5,extent=[-10,10,0,1])Figure pleine page