Anzeige:
Ergebnis 1 bis 7 von 7

Thema: TikZ: Kreis, von dem eine Hälfte ausgemalt ist?

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

    TikZ: Kreis, von dem eine Hälfte ausgemalt ist?

    Hallo,

    ich möchte ich gerne einen Kreis mit TikZ malen. Der Kreis an sich ist kein Problem:

    Code:
    \documentclass[a4paper, 12pt]{article}
    
    \usepackage[utf8]{inputenc}                                                  
    \usepackage[T1]{fontenc}                                                      
    \usepackage[ngerman,english]{babel}                                                                                        
    \usepackage{tikz}
    
    \begin{document}
    \begin{tikzpicture}
    	\draw [line width=0.05em] (0,0) circle [radius=0.34em];
    \end{tikzpicture}
    \end{document}
    Aber von diesem Kreis nun die Hälfte ausgemalt, bekomme ich nicht hin. Es soll so aussehen, wie in diesem Bild: http://de.freepik.com/freie-ikonen/halb-gefullten-kreis_744822.htm

    Ich dachte, man könne evtl. einfach den ganzen Kreis nehmen und einen Halbkreis direkt drüber zeichnen, damit man dann mit "rotate" das ausgemalte Stück entsprechend drehen kann. Denn insgesamt brauche ich das ganze 4 Mal, nämlich das ausgemalte Stück immer um 90 Grad weiter gedreht.

    Wie bekomme ich das hin?

    Grüße
    Mac

    PS: Hoffe alle hatten schöne Weihnachten...

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Eine Möglichkeit wäre

    Code:
    \documentclass{standalone}
    \usepackage{tikz}
    \newcommand\startwinkel{40}
    
    \begin{document}
    \begin{tikzpicture} 
      %\begin{scope}
      \clip [preaction={draw,line width=0.05em}] (0,0) circle [radius=.34em];
      \fill (1,0)--+(\startwinkel:.34em)arc[start angle=\startwinkel,delta angle=180,radius=.34em];
      %\end{scope}
    \end{tikzpicture}
    \end{document}
    Das Clippen ist dabei nötig, weil arc die Bounding Box vergrößern kann. Wird noch mehr in der gleichen tikzpicture Umgebung gezeichnet, muss man das Clippen mit einem scope lokal halten.

    Da Du mehrere Halbkreise brauchst, könnte man auch ein pic definieren:

    Code:
    \documentclass{standalone}                                                                                
    \usepackage{tikz}
    \tikzset{
      halbkreis/.pic={
        \clip [preaction={draw,line width=0.05em}] (0,0) circle [radius=.34em];
        \fill (0,0)--+(#1:.34em)arc[start angle=#1,delta angle=180,radius=.34em];
      }
    }
    
    \begin{document}
    \begin{tikzpicture}
    \foreach \i in {0,...,3}
      \pic at ({\i*1em},0) {halbkreis={\i*90}}; 
    \end{tikzpicture}
    \end{document}
    Gruß
    Elke
    Geändert von esdd (09-01-2016 um 22:17 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.07.2015
    Beiträge
    9
    Hallo Elke,

    entschuldige bitte meine späte Antwort. Feiertage/Familie und so...

    Ich habe mich für das zweite Minimalbeispiel entschieden, in dem du den Halbkreis definierst. Könntest du mir das bitte noch erklären?
    Ich verstehe die Definition nicht ganz, warum dort ein Halbkreis herauskommt. Also das "tikzset"

    Im tikzpicture ist mir klar, dass "foreach" eine Schleife ist und den Halbkreis entsprechend dreht. Warum sieht aber die Zeile "\pic at ({\i*1em},0) {halbkreis={\i*90}};" so aus, wie sie aussieht?

    Wahrscheinlich ganz doofe fragen, aber TikZ ist noch nicht so gut bei mir angekommen...

    Danke und Grüße

    PS: Hoffe, du bist gut über die Feiertage ins neue Jahr gekommen...?

  4. #4
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Für das in \tikzset definierte halbkreis/.pic habe ich im Prinzip den gleichen Code, wie im ersten Beispiel verwendet. Lediglich der Winkel muss nun als Argument übergeben werden.

    Code:
    \foreach \i in {0,...,3}
      \pic at ({\i*1em},0) {halbkreis={\i*90}};
    Das ist eine Schleife, die das pic mit seinem Ursprung am Punkt ({\i*1em},0} der Zeichnung einfügt. Als pic Code wird der mit \tikzset definierte verwendet, wobei diesem das geforderte Argument, also der Winkel übergeben wird.

    Wenn Du nur einen einzelnen Halbkreis brauchst, kannst Du das mit \pic at (){halbkreis={}; oder aber \path (}; tun.

    Gruß
    Elke

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.07.2015
    Beiträge
    9
    Ah, vielen Dank dafür.

    Was mir noch nicht ganz klar ist:

    Code:
    \fill (0,0)--+(#1:.34em)arc[start angle=#1,delta angle=180,radius=.34em];
    "fill" macht mir das dann folgende ausgefüllt. Das ist klar
    (0,0) ist wohl der Ursprung in Polarkoordinaten? Das ist wie bei "meinem" Kreis.

    "Arc" steht für Bogen, der Rest sind irgendwelche Koordinaten. Ab "--+" verstehe ich nichts mehr. Was bedeutet z.B. "#1"? Oder wofür ist das "delta"?

    Grüße
    Mac

  6. #6
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Bitte lies Dir im pgfmanual das Kapitel 13 "Specifying Coordinates" und den Abschnitt 14.7 "The Arc Operation" durch.

    #1 ist der übliche Platzhalter für das übergebene (erste) Argument. Beim Ausführen wird #1 automatisch durch den als Argument übergebenen Winkel ersetzt.

  7. #7
    Registrierter Benutzer
    Registriert seit
    25.07.2015
    Beiträge
    9
    Ah, super danke sehr. Hat geholfen!

Stichworte

Lesezeichen

Berechtigungen

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