Principal | Gráficos 3D | Gráficos 2D | Fractales | Math | Códigos | Tutoriales | Links
El proposito de este programa es mostrar los colores RGB en función de la longitud de onda para la luz visible (380 a 780 nm). Este código es un converción al VisualBasic de la verción para Delphi que se encuentra en :(www.efg2.com/lab/ScienceAndEngineering/Spectra.htm).
Grafico que muestra la aproximación de los valores de color RGB, en función de la longitud de onda de la luz visible en nm.
|
El siguiente espectro fue hecho usando espectro.zip (2 Kb) para aproximar los componentes RGB del color.
|
Function Power(ByVal x As Double, ByVal y As Double) As Double
If (x = 0#) Then
If (y = 0#) Then
Power = 1#
Else
Power = 0#
End If
Else
Power = Exp(Log(x) * y)
End If
End Function
Function Adjust(ByVal color As Double, ByVal factor As Double) As Double
If (color = 0#) Then
Adjust = 0#
Else
Adjust = IntensityMax * Power(color * factor, Gamma)
End If
End Function
Sub WavelengthToRGB(ByVal wavelength As Double, R As Double, G As Double, B As Double)
Dim Red, Green, Blue As Double
Dim factor As Double
Select Case Int(wavelength)
Case 380 To 439
Red = -(wavelength - 440) / (440 - 380)
Green = 0#
Blue = 1#
Case 440 To 489
Red = 0#
Green = (wavelength - 440) / (490 - 440)
Blue = 1#
Case 490 To 509
Red = 0#
Green = 1#
Blue = -(wavelength - 510) / (510 - 490)
Case 510 To 579
Red = (wavelength - 510) / (580 - 510)
Green = 1#
Blue = 0#
Case 580 To 644
Red = 1#
Green = -(wavelength - 645) / (645 - 580)
Blue = 0#
Case 645 To 780
Red = 1#
Green = 0#
Blue = 0#
Case Else
Red = 0#
Green = 0#
Blue = 0#
End Select
Select Case Int(wavelength)
Case 380 To 419
factor = 0.3 + 0.7 * (wavelength - 380) / (420 - 380)
Case 420 To 700
factor = 1#
Case 701 To 780
factor = 0.3 + 0.7 * (780 - wavelength) / (780 - 700)
Case Else
factor = 0#
End Select
R = Adjust(Red, factor)
G = Adjust(Green, factor)
B = Adjust(Blue, factor)
End Sub
|
valcoey@hotmail.com
Ramiro Alcocer, 2001
Principal | Gráficos 3D | Gráficos 2D | Fractales | Math | Códigos | Tutoriales | Links