2017-07-03 4 views
1

Ich arbeite an einem kleinen Projekt, bei dem ich das RGB-Spektrum "graphisch darstellen" möchte. Ich möchte eine visuelle Darstellung des gesamten "Spektrums" erstellen. Ich habe dies mit 3 sinusförmigen Funktionen für jede Farbe gemacht (R, G und B), aber die Grafik, die mein Programm erstellt, repräsentiert nicht das volle Spektrum (ich suche nicht nach den vollen 16,8 Millionen Farben, aber meine Grafik ist fehlt Orange/Gelb und ein paar andere Farben). Unten ist was ich bisher habe.Grafische Darstellung des RGB-Spektrums in VBA

Dim mul As Double, N As Double, i As Double 
mul = 12 
N = 3.14 * mul 
For i = 1 To 10 Step 3.14/100 
    Dim r As Double, b As Double, g As Double 
    r = Sin(i) 
    g = Sin(-1 * i) 
    b = Cos(i) 
    If r <= 0 Then r = 0 
    If g <= 0 Then g = 0 
    If b <= 0 Then b = 0 
    Debug.Print Sin(i) * 250 & 1 
    Cells(10, i * 10).Interior.Color = RGB(r * 255, g * 255, b * 255) 
    Cells(11, i * 10).Interior.Color = RGB(r * 255, 0, 0) 
    Cells(12, i * 10).Interior.Color = RGB(0, g * 255, 0) 
    Cells(13, i * 10).Interior.Color = RGB(0, 0, b * 255) 


Next i 

Antwort

1

Linien wie If r <= 0 Then r = 0 machen vollständig Hälfte der Werte Karte auf Null

einer Variation Denken der r, g, b Werte als Sinuswellen mit einem Mittelwert von 127.5 und einer Amplitude von 127.5 Seins (so gehen sie von 0 bis 255) ist:

Sub test() 
    Dim mul As Double, N As Double, i As Double 
    Dim r As Long, b As Long, g As Long 

    For i = 1 To 10 Step Application.Pi/100 
     r = Round(127.5 + 127.5 * Sin(i)) 
     g = Round(127.5 + 127.5 * Sin(-1 * i)) 
     b = Round(127.5 + 127.5 * Cos(i)) 
     Cells(10, i * 10).Interior.Color = RGB(r, g, b) 
     Cells(11, i * 10).Interior.Color = RGB(r, 0, 0) 
     Cells(12, i * 10).Interior.Color = RGB(0, g, 0) 
     Cells(13, i * 10).Interior.Color = RGB(0, 0, b) 
    Next i 
End Sub 

die folgende Grafik zeigt das Spektrum von Ihrem Code erzeugt (das oberste) und dem modifizierten Code. Der modifizierte Code scheint mehr vom Spektrum abzudecken:

enter image description here

Verwandte Themen