Внутренне Python представляет цвет с использованием RGB цветовой модели : для каждого цвета сохраняется интенсивность R ed, G reen и B lue компонент. Это позволяет 256 возможных значений для каждого компонента (от 0 до 255), таким образом, 256 оттенков красного, 256 оттенков зеленого и 256 оттенков синего. Это позволяет комбинировать 256 * 256 * 256 = ~ 16 миллионов цветов.
Вы можете попробовать этот онлайн RGB-микшер (ссылка взята с сайта Википедии), чтобы почувствовать эту цветовую модель.
Например, (255,0, 0) будет максимальная интенсивность красного, без зеленого и синего, так что это дает вам полный красный цвет. Принимая во внимание, что (255 255,0) - это максимальная интенсивность красного и зеленого без синего, в результате чего получается желтый цвет.
Чтобы смешать два таких цвета RGB, вы можете просто взять среднее значение для каждого компонента. Таким образом, при смешивании полностью красного (255,0,0) с желтым (255,255,0) среднее значение красных компонентов будет (255 + 255) / 2 = 255, среднее значение зеленых компонентов будет (0 + 255 ) / 2 = ~ 128 и среднее значение синих компонентов будет (0 + 0) / 2 = 0.
Существует также альтернативное представление, где интенсивность каждого компонента представлена в виде значения между 0,0 и 1,0 вместо 0 до 255. Таким образом, в этом представлении полный красный будет (1,0, 0,0, 0,0), а желтый будет (1,0, 1,0, 0,0). Тогда оранжевый снова будет средним для каждого компонента, то есть (1,0, 0,5, 0,0). На самом деле не имеет значения, какой из них вы используете, но в нашем случае представление 0,0-1,0 проще, потому что нам не нужно беспокоиться о округлении при взятии среднего.
Чтобы использовать это с вашими черепахами, вы необходимо сделать два шага:
- Переключить экран для использования цветового представления 0.0-1.0 с помощью
screen.colormode(1.0)
( reference ). - Установить цвет ваша черепаха с
fillcolor((1.0,0.0,0.0))
вместо fillcolor('red')
. Когда вы звоните fillcolor()
на свою черепаху, она даст вам представление RGB ( ссылка ).
Соберите все вместе:
import turtle
# Use the 0.0-1.0 color model instead of the 0-255 one
screen = turtle.Screen()
screen.colormode(1.0)
red_turtle = turtle.Turtle()
red_turtle.fillcolor((1.0, 0.0, 0.0))
yellow_turtle = turtle.Turtle()
yellow_turtle.fillcolor((1.0, 1.0, 0.0))
# Get the RGB values of the red and yellow turtle
r1,g1,b1 = red_turtle.fillcolor()
r2,g2,b2 = yellow_turtle.fillcolor()
# Take the average of each component, resulting in orange
r3 = (r1 + r2) / 2.0
g3 = (g1 + g2) / 2.0
b3 = (b1 + b2) / 2.0
orange_turtle = turtle.Turtle()
orange_turtle.fillcolor((r3, g3, b3))
turtle.done()