AlgoRotate(Construction cons, Rotateable A, NumberValue angle) {
    super(cons);
    this.angle = angle;

    Ageo = A.toGeoElement();
    angleGeo = angle.toGeoElement();

    // create output object
    Bgeo = Ageo.copy();
    B = (Rotateable) Bgeo;
    setInputOutput();

    cons.registerEuclidianViewAlgo(this);

    compute();
  }
 // calc rotated point
 protected final void compute() {
   Bgeo.set(Ageo);
   B.rotate(angle);
 }