File size: 972 Bytes
ae853c1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # trait_normalizer.py
# Color synthesis helpers for the bud/leaf HSV genetics model.
import colorsys
def expressed_rgb_from_alleles(hsv_alleles):
"""Average an HSV allele range (Hue/Saturation/Value lists) into an RGB tuple."""
h = sum(hsv_alleles["Hue"]) / len(hsv_alleles["Hue"]) / 360.0
s = sum(hsv_alleles["Saturation"]) / len(hsv_alleles["Saturation"])
v = sum(hsv_alleles["Value"]) / len(hsv_alleles["Value"])
r, g, b = colorsys.hsv_to_rgb(h, s, v)
return (int(r * 255), int(g * 255), int(b * 255))
def derive_plant_color(bud_rgb, leaf_rgb):
"""Signature color = HSV blend of bud + leaf, kept vivid (used for seed tint / name color)."""
bh = colorsys.rgb_to_hsv(*[c / 255.0 for c in bud_rgb])
lh = colorsys.rgb_to_hsv(*[c / 255.0 for c in leaf_rgb])
h, s, v = ((bh[0] + lh[0]) / 2, (bh[1] + lh[1]) / 2, (bh[2] + lh[2]) / 2)
r, g, b = colorsys.hsv_to_rgb(h, s, v)
return (int(r * 255), int(g * 255), int(b * 255))
|