protected void transformLimitedConic(GeoElement a, GeoElement b) {

    GeoConicPart arc = (GeoConicPart) b;
    if (a instanceof GeoConicPart) {
      GeoConicPart source = (GeoConicPart) a;
      arc.setParameters(0, Kernel.PI_2, true);
      if (pt == null) {
        transformedPoint = new GeoPoint(cons);
        pt = new AlgoClosestPoint(cons, arc, transformedPoint);
        cons.removeFromConstructionList(pt);
      }
      transformedPoint.removePath();
      setTransformedObject(source.getPointParam(0), transformedPoint);
      compute();
      transformedPoint.updateCascade();
      // Application.debug("start"+transformedPoint);
      double d = pt.getP().getPathParameter().getT();
      transformedPoint.removePath();
      setTransformedObject(source.getPointParam(1), transformedPoint);
      compute();
      transformedPoint.updateCascade();
      // Application.debug("end"+transformedPoint);
      double e = pt.getP().getPathParameter().getT();
      // Application.debug(d+","+e);
      arc.setParameters(d * Kernel.PI_2, e * Kernel.PI_2, swapOrientation(source));

      setTransformedObject(a, b);
    }
  }