Anzeige:
Ergebnis 1 bis 2 von 2

Thema: wiederkehrendes Muster mittels Schleife

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.01.2011
    Beiträge
    9

    wiederkehrendes Muster mittels Schleife

    Hallo zusammen!

    Ich möchte gerne eine Grafik mit PSTricks erstellen. Da es sich um ein wiederkehrendes Muster (Sechseck) handelt, frage ich mich, ob man dies auch in einer Schleife automatisieren kann. Ich hab es schon mit \multido versucht, was allerdings nicht funktioniert hat. Und \forloop hatte bei mir erst gar keinen Effekt bzw. hat zu einer Fehlermeldung geführt. Vielleicht hab ich das aber auch alles nicht richtig angewandt.

    Hier mal mein Code:

    Code:
    \documentclass{scrreprt}
    
    \usepackage{pstricks,pst-pdf}
    
    \begin{document}
    
       \psset{xunit=0.866cm,yunit=1cm}
       \begin{pspicture}(0,0)(17,16)
    
          %einzelnes Sechseck
          \psline[linewidth=1pt]{-}(1,0)(2,0.5)(2,1.5)(1,2)(0,1.5)(0,0.5)(1,0)
          
          %die folgenden Sechsecke
          \psline[linewidth=1pt]{-}(3,0)(4,0.5)(4,1.5)(3,2)(2,1.5)(2,0.5)(3,0)
          \psline[linewidth=1pt]{-}(5,0)(6,0.5)(6,1.5)(5,2)(4,1.5)(4,0.5)(5,0)
    		
       \end{pspicture}
    			
    \end{document}
    Jetzt wäre es schön, wenn ich die Koordinaten der folgenden Sechsecke nicht von Hand eingeben müsste.
    Wäre nett, wenn jemand eine Idee hat, womit ich das umgesetzt bekomme.

    Vielen Dank im Voraus

    Gruß
    Zig

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Code:
    \documentclass{scrreprt}
    
    \usepackage{pstricks,multido}
    \makeatletter
    \define@boolkey[psset]{}[Pst@]{HRInnen}[true]{}
    %\psset{HRInnen=false,unit=0.7}% unit nur wegen Buch
    \def\psHexagon{\pst@object{psHexagon}}
    \def\psHexagon@i{\@ifnextchar({\psHexagon@ii}{\psHexagon@ii(0,0)}}% MP angegeben?
    \def\psHexagon@ii(#1)#2{%
      \begin@ClosedObj%                       closed object
        \pst@@getcoor{#1}%                     hole Mittelpunkt
        \pssetlength\pst@dimc{#2}%             setze Radius auf pt
        \addto@pscode{%                        PostScript
          \pst@coor T %                        xM yM neuer Ursprung
          \psk@dimen CLW mul %                 Liniendicke setzen
          /Radius \pst@number\pst@dimc\space % Radius speichern
            \ifPst@HRInnen\space 3 sqrt 2 div div \fi def % innen?
          /angle \ifPst@HRInnen 30 \else 0 \fi def % Anfangswinkel
          Radius angle PtoC moveto %           gehe zum ersten Punkt
          6 {/angle angle 60 add def %         alpha := alpha+60
             Radius angle PtoC L %             Linie zum naechsten Punkt
          } repeat %                           Wiederhole
          closepath }%                         closed object / end pscode
        \def\pst@linetype{3}%                  Linientyp festlegen
        \showpointsfalse%                      keine Stuetzpunkte zeigen
      \end@ClosedObj\ignorespaces}%            Spaces schlucken
    \makeatother
    \begin{document}
    
       \psset{xunit=1cm,yunit=1cm,HRInnen=true}
       \begin{pspicture}(0,0)(17,16)
         \multido{\iA=1+2}{4}{%
           \rput(\iA,1){\psHexagon[linecolor=red,]{1}}}
       \end{pspicture}
    
    \end{document}
    Marco

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •