Nel sistema di colore RGB un colore si specifica come terna RGB (red, green, blue) con la quale si specifica quanto sono accesi i punti colorati corrispondenti dello schermo
- Il nero corrisponde a tutto spento (0, 0, 0)
- Il colore bianco corrisponde alla massima intensità per i tre colori fondamentali (1, 1, 1)
- Il colore rosso più acceso si ottiene con (1, 0, 0), che significa tutto rosso e niente verde e blu.
- Per creare qualsiasi sfumatura di colore si possono scegliere 3 valori a piacere per i 3 colori.
- Per alcuni colori esiste una costante predefinita
COSTANTE | Valore RGB | Grigio? |
---|---|---|
color.black | vector(0, 0, 0) | color.gray(0) |
color.blue | vector(0, 0, 1) | |
color.cyan | vector(0, 1, 1) | |
color.green | vector(0, 1, 0) | |
color.magenta | vector(1, 0, 1) | |
color.orange | vector(1, 0.5, 0) | |
color.purple | vector(0.4, 0.2, 0.6) | |
color.red | vector(1, 0, 0) | |
color.white | vector(1, 1, 1) | color.gray(1) |
color.yellow | vector(1, 1, 0) |
Grigio
Le sfumature di grigio hanno una definizione specifica con un valore da 0.0 a 1.0.
color.gray(0.1)
color.gray(0.2)
- …
Le seguenti definizioni di grigio sono equivalenti
c1 = vector(0.5, 0.5, 0.5)
c2 = color.gray(0.5)
c3 = color.white * 0.5
Le sfumature di grigio, da bianco a nero, si ottengono con tre valori RGB uguali.
HSV
Il sistema di colore HSV (hue, saturation, brightness) non è disponibile ma ci sono 2 funzioni per passare dal sistema RGB a HSV e viceversa
c2 = color.rgb_to_hsv(c1)
c1 = color.hsv_to_rgb(c2)
Esempi
c = vector(1, 1, 0) # color.yellow
c2 = color.rgb_to_hsv(c) # Da RGB a HSV
print(c2) # vector(0.16667, 1, 1)
c3 = color.hsv_to_rgb(c2) # Da HSV a RGB
print(c3) # vector(1, 1, 0)
sphere(color = color.hsv_to_rgb(vector (0.5, 1, 0.8), radius = 2.0)
Il programma dimostrativo Color-RGB-HSV-VPython permette di agire su dei cursori per i valori di R, G, B, H, S, V e ottenere il colore desiderato e il codice corrispondente da copiare.