So erhalten Sie eine Farbskala, die reflektiertes Licht darstellt

Ich habe dieses wunderbare Bild unten von der Wikipedia-Seite über Dodekaeder . Es zeigt einen langsam rotierenden Tetroid. Wenn Sie genau hinsehen, ist klar, dass die Annahme darin besteht, dass sich irgendwo außerhalb des Bildschirms eine Lichtquelle befindet. Reflektiert ein Gesicht mehr Licht zum Betrachter, erscheint es heller, reflektiert es weniger Licht, erscheint es dunkler. Ich habe eine Idee, wie ich eine Metrik für die Lichtmenge erhalten könnte, die ein Gesicht bei einer bestimmten Drehung zurückreflektiert. Ich kann die Metrik auch auf einen Wert zwischen 0 und 255 skalieren (was die meisten Farbskalen annehmen). Wie erhalte ich jedoch die tatsächlichen RGB-Werte, die wie ein helles, reflektierendes Blau aussehen, wenn die Metrik hoch ist, und wie ein dunkles Blau, wenn die Metrik niedrig ist?

Geben Sie hier die Bildbeschreibung ein

Antworten (1)

Okay, ich habe festgestellt, dass die HSL-Farbskala genau dafür gedacht ist (wobei das 'L' für Leuchtkraft steht). Also mache ich die L-Skala einfach linear, wobei mein Gesichtswinkel H und S konstant hält. Hier ist der Python-Code für diese Konvertierung -

def colorFromAngle2(angle):
   h = 136
   s = 118
   l = 96+64*angle/450
   r, g, b = colorsys.hls_to_rgb(h/255.0, l/255.0, s/255.0)
   r, g, b = [x*255.0 for x in r, g, b]
   return (int(r),int(g),int(b))

Das führt zu so etwas -

Geben Sie hier die Bildbeschreibung ein