diff --git a/CHANGELOG.md b/CHANGELOG.md index b0d5f66..d765428 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ und diese Projekt folgt [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Dokumentation erweitert. - Caching-Mechanismen in Klasse `util.Cache` ausgelagert. - `util.io.ImageLoader` und `util.io.FontLoader` verwenden `Cache`. +- `mouseWheelMoved` Eventhandler für Mausrad. ## Changed - Die Methoden in `Validator` erwarten nun als zweiten Parameter den Namen des Parameters, der geprüft wird. diff --git a/src/main/java/schule/ngb/zm/Color.java b/src/main/java/schule/ngb/zm/Color.java index 4c4217a..68a9880 100644 --- a/src/main/java/schule/ngb/zm/Color.java +++ b/src/main/java/schule/ngb/zm/Color.java @@ -576,6 +576,18 @@ public class Color implements Paint { } } + public double compare( Color color ) { + double maxDist = 764.8333151739665; + + // see: https://www.compuphase.com/cmetric.htm + long rmean = (getRed() + color.getRed()) / 2; + long r = getRed() - color.getRed(); + long g = getGreen() - color.getGreen(); + long b = getBlue() - color.getBlue(); + + return 1.0 - (Math.sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8)) / maxDist); + } + /** * Prüft, ob ein anderes Objekt zu diesem gleich ist. *
diff --git a/src/test/java/schule/ngb/zm/ColorTest.java b/src/test/java/schule/ngb/zm/ColorTest.java index a5c2642..b5d88fd 100644 --- a/src/test/java/schule/ngb/zm/ColorTest.java +++ b/src/test/java/schule/ngb/zm/ColorTest.java @@ -252,4 +252,16 @@ class ColorTest { void darker() { } + @Test + void compare() { + assertEquals(1.0, Color.RED.compare(Color.RED), 0.0001); + assertEquals(1.0, Color.BLUE.compare(Color.BLUE), 0.0001); + assertEquals(1.0, Color.WHITE.compare(Color.WHITE), 0.0001); + assertEquals(1.0, Color.BLACK.compare(Color.BLACK), 0.0001); + + + assertEquals(0.0, Color.BLACK.compare(Color.WHITE), 0.0001); + assertEquals(0.0, Color.WHITE.compare(Color.BLACK), 0.0001); + } + }