private static void paint(final Graphics2D g2d, final float size) {

    final Path2D.Float path = new Path2D.Float();

    for (float angle = 1f / 3f; angle <= 90f; angle += 1f) {
      double angRad = Math.toRadians(angle);

      double cos = Math.cos(angRad);
      double sin = Math.sin(angRad);

      path.reset();

      path.moveTo(5f * cos, 5f * sin);
      path.lineTo(size * cos, size * sin);

      g2d.draw(path);
    }
  }
 private void loop() {
   speed = Math.min(speed + DELAY / 1000d / RAMP, targetPower);
   if (Math.abs(angleError(targetAngle)) > Math.PI) System.out.println(angleError(targetAngle));
   if (Math.abs(angleError(targetAngle)) > Math.PI / 2) {
     steer.set(
         Math.max(
             -STEER_CAP, Math.min(STEER_CAP, STEER_GAIN * angleError(targetAngle - Math.PI))));
     drive.set(-speed);
   } else {
     steer.set(Math.max(-STEER_CAP, Math.min(STEER_CAP, STEER_GAIN * angleError(targetAngle))));
     drive.set(speed);
   }
   if (driveEncoder != null) {
     double enc = driveEncoder.get();
     double angle = getAngle() - gyro.getAngle() * Math.PI / 180 + Math.PI / 2;
     x += (enc - encLast) * Math.cos(angle);
     y += (enc - encLast) * Math.sin(angle);
     encLast = enc;
   }
   try {
     Thread.sleep(DELAY);
   } catch (Exception e) {
   }
 }