Gedrehtes Gitternetz erstellen (Tikz)

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Gedrehtes Gitternetz erstellen (Tikz)

von Gast » So 30. Okt 2016, 14:50

Man kann das neue Muster genau wie alle anderen Muster der pattern-Library verwenden, also beispielsweise wie in der gezeigten \draw-Anweisung. Bitte lies wenigstens einmal die Grundlagen von [d]pgf[/d] und dann ggf. auch wie man Figuren füllt, sei es mit Farbe oder mit Muster.

von yoyoba » So 30. Okt 2016, 14:30

Hallo zusammen,

vielen Dank für die super Antworten!

Zu der Frage, was ich letztendlich vorhabe: Ich möchte eine Grafik erstellen in der dieses Muster benötigt wird.

Ich habe mir die weitere Lösung auch einmal angesehen und sie ist genauso richtig wie die bisherigen.

Wenn ich dieses Muster als Datei abspeichere, kann ich es über input einfügen, aber wie kann ich dessen genaue Positionierung angeben? Ich stelle mir einfach vor, dass dieses Modul nur ein kleiner Teil einer Grafik ist. Ist dies einmal fertig (ist es ja) kann der Code aus dem gesamtcode herausfliegen und einfach importiert werden. Wie gesagt ich frage mich wie ich nun dessen genaue Positionierung angeben kann?

Danke, und ein schönes Restwochenende noch.

Grüße
Yoyoba

von Gast » So 30. Okt 2016, 13:18

yoyoba hat geschrieben:Eine abschließende Frage hätte ich aber noch. Wenn ich mir dieses Gitternetz einmal erstellt habe, kann ich dies als Vorlage in dem aktuellen, oder in einem externen Dokument speichern... Z.B. unter dem Namen "Gitternetz" und es bei späterer Verwendung dann einfach mit Hllfe des Namens einfügen um nicht jedesmal den Code komplett einfügen zu müssen?
Vielleicht könntest du einfach einmal erklären, was du damit eigentlich vor hast?

Für mich riecht das stark danach, dass du eigentlich ein Füllmuster haben willst. Das geht mit der patterns-Library (siehe [d]pgf[/d]-Anleitung, Kapitel 60) eigentlich ganz einfach. Problem dabei ist allenfalls, dass es zwar Füllmuster für diagonale Linien gibt, aber immer nur für eine Richtung. Natürlich könnte man einfach zweimal die gleiche Figure (bei dir ein Quadrat) zeichnen und einmal in Nordwest- und einmal in Nordost-Richtung schraffieren. Man kann aber auch einfach ein neues Füllmuster definieren:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

% Neues Füllmuster als Vereinigung von north east lines und north west lines:
\pgfdeclarepatternformonly{cross lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}
  \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{-0.1pt}}
  \pgfusepath{stroke}
}

\begin{document}
\begin{tikzpicture}
\draw[pattern=cross lines,ultra thick] (0,0) rectangle (2,2);
\end{tikzpicture}

\end{document}
Kopiert man einfach
% Neues Füllmuster als Vereinigung von north east lines und north west lines:
\pgfdeclarepatternformonly{cross lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}
  \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{-0.1pt}}
  \pgfusepath{stroke}
}
in eine neue Datei meinfuellmuster.tex, kann man diese Datei natürlich in der Dokumentpräambel mit \input{meinfuellmuster.tex} laden.

Etwas schlauer ist, wenn man die Datei gleich pgflibrarycrosslinepattern.code.tex nennt und darin auch gleich die patterns-Library lädt. Dann kann man das neue Muster einfach als Library laden. Hier einmal wie in Minimalbeispiel erklärt mit filecontents-Umgebung realisiert:
\begin{filecontents*}{pgflibrarycrosslinepattern.code.tex}
% pgflibrarycrosslinepattern.code.tex
% See <http://golatex.de/gedrehtes-gitternetz-erstellen-tikz-t18199.html>
\ProvidesFile{pgflibrarycrosslinepattern.code.tex}[2016/10/30 v0.1 combination
of north east and north west lines]
\usetikzlibrary{patterns}
\pgfdeclarepatternformonly{cross lines}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{4pt}{4pt}}{\pgfqpoint{3pt}{3pt}}%
{
  \pgfsetlinewidth{0.4pt}
  \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{3.1pt}}
  \pgfpathmoveto{\pgfqpoint{0pt}{3pt}}
  \pgfpathlineto{\pgfqpoint{3.1pt}{-0.1pt}}
  \pgfusepath{stroke}
}
\end{filecontents*}

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{crosslinepattern}

\begin{document}
\begin{tikzpicture}
\draw[pattern=cross lines,ultra thick] (0,0) rectangle (2,2);
\end{tikzpicture}

\end{document}
Wenn du das laufen lässt, bekommst du auch gleich die entsprechende Datei. Wenn du diese wie unter »Wie kann ich Klassen oder Pakete verwenden, die nur als einzelne Datei bereitgestellt werden?« erklärt installierst, funktioniert die Zeile \usetikzlibrary{crosslinepattern} auch in anderen Dokumenten.

Nun könnte man das Ganze natürlich noch beliebig weiter treiben und beispielsweise für die Liniendicke und den Linienabstand Optionen definieren. Wenn du das willst, solltest du ggf. zuerst eine ausführliche LaTeX-Einführung studieren und dann in der [d]pgf[/d]-Anleitung nachlesen, wie das mit den Optionen funktioniert. Natürlich musst du darin dann auch unbedingt die für oben die Pattern-Definition verwendeten Anweisungen nachlesen. Das versteht sich ja von selbst.

Aber vielleicht täusche ich mich ja auch und es geht gar nicht um ein Füllmuster. Deshalb wäre es eben so wichtig gewesen, von Anfang an zu erklären, worum es eigentlich geht.

Re: Und, weiter?

von Gast » So 30. Okt 2016, 11:22

Stamm- hat geschrieben:Ach, ja? Und wo? Lässt sich diese Vermutung mit einem Zitat aus der Fragestellung untermauern? Die geäußerten Wünsche waren jedenfalls nicht konkret.
yoyoba hat geschrieben:der äußere Rand/äußere Begrenzung sollte zudem dicker sein als die Linien innerhalb des Kästchens...
Für mich ist das ziemlich sehr deutlich. ;-)

von Beinschuss » So 30. Okt 2016, 06:05

Geht einfach mit den Befehlen
\include
oder
\input
. Die Unterschiede werden hier erklärt: http://texwelt.de/wissen/fragen/32/was- ... -and-input.

von yoyoba » Sa 29. Okt 2016, 21:40

Danke für die Nächträge. Sieht wirklich gut aus.
Das die Linien innen dünner sind ist natürlich nicht schwer...
\documentclass[11pt,border=2pt]{standalone} 
\usepackage[T1]{fontenc} 
\usepackage{tikz} 

\begin{document} 
  \begin{tikzpicture}[thick] 
    \clip[draw] (-2,-2) rectangle (2,2); 
    \draw[thin][rotate=45,step=4mm] (-3,-3) grid (3,3); 
  \end{tikzpicture} 
\end{document}
Eine abschließende Frage hätte ich aber noch. Wenn ich mir dieses Gitternetz einmal erstellt habe, kann ich dies als Vorlage in dem aktuellen, oder in einem externen Dokument speichern... Z.B. unter dem Namen "Gitternetz" und es bei späterer Verwendung dann einfach mit Hllfe des Namens einfügen um nicht jedesmal den Code komplett einfügen zu müssen?

Besten Dank!

Und, weiter?

von Stamm- » Sa 29. Okt 2016, 20:58

Anonymous hat geschrieben:[…] Ist zwar kürzer, aber die Begrenzungslinien außen sind dabei nicht dicker als die Gitterlinien. […]
Sowohl die Breite der Begrenzungs- als auch der Gitterlinien sind leicht anpassbar. Und der Umfang des Beispiels wurde mit dem meines Vorhergehenden verglichen.
Anonymous hat geschrieben:[…] Das war aber IMHO explizit gewünscht …
Ach, ja? Und wo? Lässt sich diese Vermutung mit einem Zitat aus der Fragestellung untermauern? Die geäußerten Wünsche waren jedenfalls nicht konkret.

von Gast » Sa 29. Okt 2016, 20:26

@Stamm-Gast: Ist zwar kürzer, aber die Begrenzungslinien außen sind dabei nicht dicker als die Gitterlinien. Das war aber IMHO explizit gewünscht …

Abkürzung

von Stamm- » Sa 29. Okt 2016, 20:20

Hier nochmal ein kürzer gehaltener Ansatz mit dem schon vorgeschlagenen grid.
\documentclass[11pt,border=2pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}[thick]
    \clip[draw] (-2,-2) rectangle (2,2);
    \draw[rotate=45,step=2mm] (-3,-3) grid (3,3);
  \end{tikzpicture}
\end{document}

von Gast » Sa 29. Okt 2016, 20:18

Mit Clipping-Magie ginge wohl auch so etwas:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \clip(0,0) rectangle (10,10);
  \draw[step=1,gray,rotate=45](-20,-20)grid(20,20);
  \draw[ultra thick](0,0) rectangle (10,10);
\end{tikzpicture}
\end{document}

Nach oben