2 import java
.util
.Arrays
;
5 private String strColor
;
7 private String
[] colorsList
= {"black", "blue", "brown", "green"};
10 //this.color = Color.white;
23 public String
getStrColor() {
27 public void setStrColor(String strColor
) {
28 if (validateColor(strColor
)) {
29 this.strColor
= strColor
;
31 throw new IllegalArgumentException("Color must be" + this.colorListToString());
35 public String
[] getColorsList() {
42 public Color
getColor() {
49 public void setColor(String color
) {
50 if (validateColor(color
)) {
51 if (color
.equals("black"))
52 this.color
= Color
.black
;
53 else if (color
.equals("blue"))
54 this.color
= Color
.blue
;
55 else if (color
.equals("brown"))
56 this.color
= new Color(88, 41, 0);
57 else if (color
.equals("green"))
58 this.color
= Color
.green
;
60 throw new IllegalArgumentException("Color must be" + this.colorListToString());
68 private boolean validateColor(String color
) {
69 for (String c
: colorsList
) {
70 if (color
.equals(c
)) {
77 private void sortColorList() {
78 Arrays
.sort(this.colorsList
);
85 public int distanceTo(Eye eye
) {
86 double r_diff
= this.getColor().getRed() - eye
.getColor().getRed();
87 double g_diff
= this.getColor().getGreen() - eye
.getColor().getGreen();
88 double b_diff
= this.getColor().getBlue() - eye
.getColor().getBlue();
89 //See https://en.wikipedia.org/wiki/Color_difference
90 Double distance
= Math
.sqrt(2 * Math
.pow(r_diff
, 2) + 4 * Math
.pow(g_diff
, 2) + 3 * Math
.pow(b_diff
, 2));
91 return distance
.intValue();
94 private String
colorListToString() {
95 StringBuilder stringBuilder
= new StringBuilder();
96 for (String c
: colorsList
) {
97 stringBuilder
.append(" ");
98 stringBuilder
.append(c
);
100 return stringBuilder
.toString();