Какова формула для определения того, является ли код RGB зеленым? Вот попытка:
public boolean isGreen(Color color){
return (color.getGreen() > 0.8*(color.getBlue()) && color.getBlue() > color.getRed());
}
То есть вернуть true, если значение зеленого цвета rgb значительно больше синего, а синего больше красного. Была проведена проверка его точности.
Методы: программа JavaFX генерировала 132 шара каждые 6 секунд, каждый со значением rgba (альфа в данном случае не имеет значения)
(Math.random(), Math.random(), Math.random(), Math.random())
Программа напечатала результат isGreen(randomColor())
.
Затем автор подсчитал результаты в одном из четырех квадрантов:
isGreen()
возвращает true, но цвет воспринимается не зеленымisGreen()
возвращает true, и цвет воспринимается зеленым.isGreen()
возвращает false, но цвет воспринимается зеленым.isGreen()
возвращает false, и цвет воспринимается не зеленым.
Он удовлетворительно предсказывал, если цвет не был зеленым: 72/99 правильно, или 73%. Этого достаточно; кроме того, для программы более важно, если она ошибочно предсказывает цвет как зеленый, а не неправильно отбрасывает зеленый цвет.
Напротив, он не может предсказать, является ли цвет зеленым. Он правильно предсказал 13/31, или 42%. Это ключевая часть, и она не работает. Неудовлетворительно иметь 58% ложных срабатываний.
Буду признателен за точную формулу!
color.getGreen() > 0.8 * color.getBlue()
на самом деле не проверяет, значительно ли «зеленое значение rgb больше, чем синее». Например, если синий равен 0,5, а зеленый — 0,45, это будет верно. Вы хотели умножить зеленый цвет на 0,8? - person James_D   schedule 12.02.2021