@Override
  public final void compute() {
    // bugfix Michael Borcherds
    // undefined unless A is a point on f
    if (!f.isOnPath(A, Kernel.MIN_PRECISION)) {
      circle.setUndefined();
      return;
    }

    double radius = 1 / Math.abs(curv.getValue());
    double r2 = radius * radius;
    double x = r2 * v.x;
    double y = r2 * v.y;

    R.setCoords(A.inhomX + x, A.inhomY + y, 1.0);
    circle.setCircle(R, A);
  }