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