code: @Override public void updateTime(final ZonedDateTime TIME) {
          double rotationAngle = 0.5 * (60 * TIME.getHour() + TIME.getMinute() + TIME.getSecond() * 0.0166666667 + TIME.get(ChronoField.MILLI_OF_SECOND) * 0.0000166667);
          double rotationX     = size * 0.5 + rotationRadius * Math.sin(Math.toRadians(rotationAngle + 180));
          double rotationY     = size * 0.5 - rotationRadius * Math.cos(Math.toRadians(rotationAngle + 180));
          tickCanvas.relocate(rotationX - tickCanvas.getHeight() * 0.5, rotationY - tickCanvas.getHeight() * 0.5);
          needle.setRotate(rotationAngle);
  
          double canvasCenterX = tickCanvas.getWidth() * 0.5;
          double canvasCenterY = tickCanvas.getHeight() * 0.5;
          double radius        = tickCanvas.getHeight() * 0.372;
          double rotX          = canvasCenterX + radius * Math.sin(Math.toRadians(rotationAngle));
          double rotY          = canvasCenterY - radius * Math.cos(Math.toRadians(rotationAngle));
          clip.setCenterX(rotX);
          clip.setCenterY(rotY);
      }
docs: ******************** Graphics ******************************************