public void zeichneFigur()
    {
      double lHMin, lHMax, lVMin, lVMax, lX0, lY0;
      
      hatBildschirm.loescheAlles();
      // Zeichnung zunaechst nur abfahren, dabei Dimension der Zeichnung merken
      zProbelauf = true;
      hatStift.hoch();
      hatStift.bewegeBis(00);
      zHMin = 0;
      zHMax = 0;
      zVMin = 0;
      zVMax = 0;
      zSchritt = 1;
      zeichneAxiom();
      zProbelauf = false;
      lHMin = 5// Rand
      lHMax = this.bildschirm().breite() 5;
      lVMin = 5;
      lVMax = this.bildschirm().hoehe() 5;
      if((lHMax - lHMin(zHMax - zHMin(lVMax - lVMin(zVMax - zVMin)) 
      {
        // links und rechts im Zeichnungsfenster bleibt ein Streifen frei
        zSchritt = (lVMax - lVMin(zVMax - zVMin);
        lHMin = lHMin + ((lHMax - lHMin)  (zHMax - zHMin* zSchritt2.0;
        lHMax = lHMin + (zHMax - zHMin);
      }
      else
      {
        // oben und unten im Zeichnungsfenster bleibt ein Streifen frei
        zSchritt = (lHMax - lHMin(zHMax - zHMin);
        lVMin = lVMin + ((lVMax - lVMin(zVMax - zVMin* zSchritt2.0;
        lVMax = lVMin + (zVMax - zVMin);
      }
      lX0 = lHMin - zSchritt * zHMin; // zHMin ist <= 0 !
      lY0 = lVMin - zSchritt * zVMin; // zVMin ist <= 0 !
      hatStift.bewegeBis(lX0, lY0);
      hatStift.runter();
      zeichneAxiom();
    }
    
    private void zeichneAxiom()
    {  
      int lPosition;
      
      lPosition = 1;

      hatStift.dreheBis(90);
      while(lPosition <= hatTW.laenge(lAxiom))
      {
        switch(hatTW.zeichenAn(lAxiom, lPosition))
        {
          case 'F':
            if(zIterationsTiefe == 0
            {
              hatStift.bewegeUm(zSchritt);
              if(zProbelauf
              {
                if(hatStift.hPosition() < zHMin)
                  zHMin = hatStift.hPosition();
                if(hatStift.hPosition() > zHMax)
                  zHMax = hatStift.hPosition();
                if(hatStift.vPosition() < zVMin)
                  zVMin = hatStift.vPosition();
                if(hatStift.vPosition() > zVMax)
                  zVMax = hatStift.vPosition();
              }
            }
            else 
              zeichneRekursiv(zIterationsTiefe - 1);
            break;
          case '+':
            hatStift.dreheUm(zWinkel);
            break;
          case '-':
            hatStift.dreheUm(-zWinkel);
            break;
          case '[':
            hatStapel.legeAuf(new Stiftzustand(hatStift));
            break;
          case ']':
            ((Stiftzustand)hatStapel.oberstes()).wiederherstellen(hatStift);
            hatStapel.entferneOberstes();
            break;
        }
        lPosition++;
      }
      hatStift.hoch();
    }      
    
    private void zeichneRekursiv(int pIterationsTiefe)
    {
      int lPosition;
      
      lPosition = 1;

      while(lPosition <= hatTW.laenge(zErsetzung))
      {
        switch(hatTW.zeichenAn(zErsetzung, lPosition))
        {
          case 'F':
            if(pIterationsTiefe == 0)
            {
              hatStift.bewegeUm(zSchritt);
              if(zProbelauf
              {
                if(hatStift.hPosition() < zHMin)
                  zHMin = hatStift.hPosition();
                if(hatStift.hPosition() > zHMax)
                  zHMax = hatStift.hPosition();
                if(hatStift.vPosition() < zVMin)
                  zVMin = hatStift.vPosition();
                if(hatStift.vPosition() > zVMax)
                  zVMax = hatStift.vPosition();
              }
            }
            else 
              zeichneRekursiv(pIterationsTiefe - 1);
            break;
          case '+':
            hatStift.dreheUm(zWinkel);
            break;
          case '-':
            hatStift.dreheUm(-zWinkel);
            break;
          case '[':
            hatStapel.legeAuf(new Stiftzustand(hatStift));
            break;
          case ']':
            ((Stiftzustand)hatStapel.oberstes()).wiederherstellen(hatStift);
            hatStapel.entferneOberstes();
            break;
        }
        lPosition++;
      }
    }      
    
Java2html