Hi, ich bin ganz neu hier und hoffe, ihr könnt mir helfen. Ich möchte folgendes Gitter mit dem tikz Package erstellen:

alt text

Bild von Wikipedia (Creative Commons Attribution-Share Alike 3.0 Unported)

Ich habe versucht das Gitter durch linerare Funktionen darzustellen, aber es gibt bestimmt bessere Wege. Das Gitter ist bei meiner Methode vor der x- und y-Achse, sollte aber besser dahinter liegen. Ich weiß nicht wie das geht :( gibt es ne elegante Methode?

Danke!!

gefragt 18 Mär '14, 18:29

pittersen's gravatar image

pittersen
80335
Akzeptiert-Rate: 0%

bearbeitet 19 Mär '14, 10:04

esdd's gravatar image

esdd
17.8k274256

Willkommen auf der TeXwelt :)

(18 Mär '14, 20:24) cgnieder
1

Es ist immer eine gute Idee zu zeigen, was man selbst bisher gemacht hat. Bitte füge ein Minimalbeispiel von Deinen bisherigen Versuchen ein und nimm uns etwas Arbeit ab das ganze selbst aufzusetzen.

(18 Mär '14, 21:34) Henri

Eine Idee wäre, ein entprechendes Koordinatensystem (cs) zu verwenden. Dann könnte man mit grid schon mal zwei drittel des Netzes zeichnen.

Open in writeLaTeX
\begin{tikzpicture}[
    cm={1,0,-.5,.5*sqrt(3),(0,0)} , % Koordinatentransformation
    dot/.style={draw,fill,circle,inner sep=1pt} , % Darstellung der Punkte
    gridlines/.style={dotted} % Gitterstil
  ]
  % Größe des gezeigten Bereichs:
  \def\xmin{-3.6}\def\xmax{3.6}
  \def\ymin{-1.3}\def\ymax{3.3}
  % Gitter:
  \draw[gridlines]
    (\xmin,\ymin) grid (\xmax,\ymax) ;
\end{tikzpicture}

alt text

Damit ein rechteckiger Ausschnitt entsteht, schneide ich mit clip im Original-cs ein Rechteck aus. Damit ausßerdem im Rechteck keine Lücken enstehen, füge ich zum Gitter-Ausschnitt noch einen Pufferbereich hinzu. Die nötige Größe lässt sich durch ausprobieren mit einem genügend großen Wert finden. Damit zusätzlich die Linien, die noch fehlen, später bequem gezeichnet werden können, berechne ich die Gitter-Werte durch runden:

Open in writeLaTeX
\begin{tikzpicture}[
    cm={1,0,-.5,.5*sqrt(3),(0,0)} , % Koordinatentransformation
    dot/.style={draw,fill,circle,inner sep=1pt} , % Darstellung der Punkte
    gridlines/.style={dotted} % Gitterstil
  ]
  % Größe des gezeigten Bereichs:
  \def\xmin{-3.6}\def\xmax{3.6}
  \def\ymin{-1.3}\def\ymax{3.3}
  % überstehender Bereich des Gitters, damit keine Lücken enstehen:
  \def\deltagrid{5}
  % Berechnung des gezeichneten Bereichs:
  \pgfmathsetmacro\xgridmin{round(\xmin-\deltagrid)}
  \pgfmathsetmacro\xgridmax{round(\xmax+\deltagrid)}
  \pgfmathsetmacro\ygridmin{round(\ymin-\deltagrid)}
  \pgfmathsetmacro\ygridmax{round(\ymax+\deltagrid)}
  % clip Rechteck mit Original-cs:
  \clip[reset cm] (\xmin,\ymin) rectangle (\xmax,\ymax) ;
  % Gitter:
  \draw[gridlines]
    (\xgridmin,\ygridmin) grid (\xgridmax,\ygridmax) ;
\end{tikzpicture}

alt text

Jetzt fehlen noch ein paar Linien. Die können mit einer for-Schleife gezeichnet werden, bei der ich eine weitere Transformation des cs vornehme. (Achtung: es ist eine Transformation des aktuellen, schon transformierten cs).

Open in writeLaTeX
  \foreach \x in {\xgridmin,...,\xgridmax}
    {
      \show\x
      \draw[gridlines,cm={1,0,1,1,(0,0)}]
        (\x,\ygridmin) -- (\x,\ygridmax) ;
    }

alt text

Jetzt fehlen noch die Achsen (im ursprünglichen cs) und die Punkte. Die Punkte können jetzt einfach mit (x,omega) angegeben werden.

Open in writeLaTeX
\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[
    cm={1,0,-.5,.5*sqrt(3),(0,0)} , % Koordinatentransformation
    dot/.style={draw,fill,circle,inner sep=1pt} , % Darstellung der Punkte
    gridlines/.style={dotted} % Gitterstil
  ]
  % Größe des gezeigten Bereichs:
  \def\xmin{-4.6}\def\xmax{3.6}
  \def\ymin{-3.3}\def\ymax{3.3}
  % überstehender Bereich des Gitters, damit keine Lücken enstehen:
  \def\deltagrid{5}
  % Berechnung des gezeichneten Bereichs:
  \pgfmathsetmacro\xgridmin{round(\xmin-\deltagrid)}
  \pgfmathsetmacro\xgridmax{round(\xmax+\deltagrid)}
  \pgfmathsetmacro\ygridmin{round(\ymin-\deltagrid)}
  \pgfmathsetmacro\ygridmax{round(\ymax+\deltagrid)}
  % clip Rechteck mit Original-cs:
  \clip[reset cm] (\xmin,\ymin) rectangle (\xmax,\ymax) ;
  % Gitter:
  \draw[gridlines]
    (\xgridmin,\ygridmin) grid (\xgridmax,\ygridmax) ;
  \foreach \x in {\xgridmin,...,\xgridmax}
    {
      \show\x
      \draw[gridlines,cm={1,0,1,1,(0,0)}]
        (\x,\ygridmin) -- (\x,\ygridmax) ;
    }
  % Achsen im Original-cs:
  \draw[-latex]
    (\xmin,0) -- (\xmax,0)
    node[below left,inner xsep=0pt] {Re} ;
  \draw[-latex,reset cm]
    (0,\ymin) -- (0,\ymax)
    node[below left,inner ysep=0pt] {Im};
  % Punkte im neuen cs:
  \node[dot,label={below left:$0$}] at (0,0) {};
  \node[dot,label={below:$1$}] at (1,0) {};
  \node[dot,label={above left:$\omega$}] at (0,1) {};
  \node[dot,label={above right:$3 + 2\omega$}] at (3,2) {};
  \node[dot,label={above right:$-4 - 2\omega$}] at (-4,-2) {};
\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 19 Mär '14, 14:34

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 19 Mär '14, 19:45

Hier ist noch ein Vorschlag mit TikZ, bei dem das Gitter in einem Makro definiert wird und deshalb mehrmals verwendet werden kann. Das Gitter selbst wird aus kleinen pic (erfordert mind. die tikz Version 3.0) zusammen gesetzt.

Open in writeLaTeX
gitter/.pic={\draw(1,0)--++(120:2)--+(1,0)--(0,0)(0,0|-60:1)--+(1,0);}

Ein einzelnes pic sieht damit so aus

alt text

Diese Gitterelemente werden in einer Schleife eingefügt, so dass sie den gesamten Hintergrund des Koordinatensystems füllen. Bei jeder Verwendung eines pic können die Eigenschaften der Linien, wie Farbe und Strichstärke bzw. Zeichenart (durchgezogen, gepunktet oder gestrichelt) neu eingestellt werden.

Für das Eintragen der Punkte habe ich die Idee mit der Koordinatentransformation aus der Antwort von @Clemens übernommen, so dass sie hier ebenfalls einfach mit (x,omega) angegeben werden können.

Open in writeLaTeX
\documentclass[tikz,margin=5mm]{standalone}
\usetikzlibrary{calc}

\tikzset{
  dot/.style={draw,fill,circle,inner sep=1pt},% Stil für Punkte
  gitter/.style={dotted},% Stil für das Gitter
  % Gitterelement als pic:
  gitter/.pic={\draw(1,0)--++(120:2)--+(1,0)--(0,0)(0,0|-60:1)--+(1,0);}
}

\newcommand\Dreiecksgitter[5][]{%
  % Größe des gezeigten Bereichs:
  \def\xmin{#2}\def\ymin{#3}
  \def\xmax{#4}\def\ymax{#5}
  % Gitter einfügen
  \begin{scope}
    % Gitterbereich beschneiden (lokal, da in scope):
    \clip (\xmin,\ymin) rectangle (\xmax,\ymax);
    % ganzzahlige Grenzen für die Schleife (lokal, da in scope)
    \pgfmathsetmacro\xmin{floor(\xmin)};\pgfmathsetmacro\ymin{floor(\ymin/(sqrt(3))};
    \pgfmathsetmacro\xmax{ceil(\xmax)};\pgfmathsetmacro\ymax{ceil(\ymax/sqrt(3))};
    % Einfügen der Gitterelement in Schleife
    \pic foreach \x in {\xmin,...,\xmax} foreach \y in {\ymin,...,\ymax}
      [gitter,#1] at (\x,{\y*sqrt(3)}){gitter};
  \end{scope}
%
% Achsen  und Ursprung einzeichnen
  \draw[-latex] (\xmin,0) -- (\xmax,0) node[below left,inner xsep=0pt] {Re};
  \draw[-latex] (0,\ymin) -- (0,\ymax) node[below left,inner ysep=0pt] {Im};
}

\begin{document}
\begin{tikzpicture}
% Gitter mit Achsen einfügen
  \Dreiecksgitter[blue]{-3.6}{-1}{3.6}{3}
% Eintragen der Punkte mit Koordinatentransformation
  \begin{scope}[
      cm={1,0,-0.5,{sqrt(3)/2},(0,0)}, % Koordinatentransformation
      every node/.style={dot}
    ]
    \node[label={below left:$0$}] at (0,0) {};
    \node[label={below:$1$}] at (1,0) {};
    \node[label={above left:$\omega$}] at (0,1) {};
    \node[label={above right:$3 + 2\omega$}] at (3,2) {};
    \node[label={above right:$-2 - \omega$}] at (-2,-1) {};
  \end{scope}
\end{tikzpicture}

\begin{tikzpicture}
% Gitter mit Achsen einfügen
  \Dreiecksgitter[red]{-3.6}{-3}{8.6}{10.2}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 19 Mär '14, 02:12

esdd's gravatar image

esdd
17.8k274256
Akzeptiert-Rate: 62%

bearbeitet 20 Mär '14, 16:45

Ich mag TikZ!

Open in writeLaTeX
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[dot/.style={draw,fill,circle,inner sep=1pt}]
    \draw[->] (-3,0) -- (4,0) node[below] {$\mathop{\mathrm{Re}}$};
    \draw[->] (0,-1) -- (0,4) node[left] {$\mathop{\mathrm{Im}}$};
    \begin{scope}
        \clip (-3,-1) rectangle (4,4);
        \foreach \i in {-5,-4,...,5} {
            \draw[dotted] (\i,0) +(-120:2) -- +(60:6);
        }
        \foreach \i in {-5,-4,...,5} {
            \draw[dotted] (\i,0) +(-60:2) -- +(120:6);
        }
        \foreach \i in {-2,-1,...,4} {
            \draw[dotted] (-4,{\i/2*sqrt(3)}) -- (4,{\i/2*sqrt(3)});
        }
    \end{scope}
    \node[dot,label={below left:$0$}] at (0,0) {};
    \node[dot,label={below:$1$}] at (1,0) {};
    \node[dot,label={above left:$\omega$}] at (-.5,{1/2*sqrt(3)}) {};
    \node[dot,label={above right:$3 + 2\omega$}] at (2,{sqrt(3)}) {};
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 18 Mär '14, 21:49

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×2

gestellte Frage: 18 Mär '14, 18:29

Frage wurde gesehen: 11,866 Mal

zuletzt geändert: 21 Mär '14, 08:44