Pfad-Verfolgung Thema ist als GELÖST markiert

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Pfad-Verfolgung

Beitrag von esdd »

    • Möchtest Du tatsächlich P_1? Das geht mit P\_1. Falls Du P₁ haben willst, dann nimm P\textsubscript{1}.

    • Um den Node zu verschieben, kannst Du einen anderen anchor festlegen und/oder die Optionen xshift, yshift oder shift verwenden. Ein Beispiel wäre

      ... node [below,anchor=75,yshift=-1mm] {P\textsubscript{1}} ...
  1. Ich weiß nicht, was Du mit "Freistellung" meinst und welche Eigenschaften Du beeinflussen möchtest.

  2. Wenn Du eine einzelne Zeichnung ohne großen Rand erstellen willst, dann kannst Du die standalone Klasse verwenden und das Paket geometry weglassen. Im optionalen Argument dieser Klasse kannst Du auch einen kleinen Rand einstellen. Beispiel:

    \documentclass[margin=5pt]{standalone}

    Du kannst Dir aber auch die TikZ-Bibliothek external und \tikzexternalize anschauen. Infos dazu findest Du in der Paketdoku.
    Eine weitere Alternative ist das preview Paket.
    Zu beachten ist, dass auch Pfade, die nicht gezeichnet werden, Einfluss auf die Bounding Box haben können. Das muss man dann gegebenenfalls gezielt verhindern oder die Box wieder korrigieren.

  3. Hat Gast schon beantwortet.

  4. Da verstehe ich leider auch nicht, was Du suchst/möchtest.


TheMrFeedback
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: So 27. Dez 2020, 15:11

Re: Pfad-Verfolgung

Beitrag von TheMrFeedback »

  1. Es ging um P\textsubscript{1}. Danke.

  2. Gelöst habe ich das Ganze über eine Linien-"Erweiterung" mit Weiß-Schwarz-Weiß (Double):

    \draw [fill=white, draw=white, double=black] (S) +(90:1mm) -- +(-150:1mm) -- +(-30:1mm) -- cycle;

    Dadurch sieht es so aus, als würde der gezeichnete Pfad (hier: Dreieck) Freistehen. Den Äußeeren Rand von Double würde ich gern beeinflussen - also den Abstand vom Dreieck, bis zu einer abgehende, schwarze Linie von (S) aus zu sehen ist.

  3. standalone ist genau das, was ich hier brauche.

  4. Ein Dank auch an den Gast.

  5. Es gibt da Tikz-Bibliotheken mit Speziellen Nodes, z. B. für Elektrotechnik (Schaltpläne).
    Auch in der Vermessung gibt es ein Paar spezielle Zeichen, Bögen, Linienarten. Hatte gehofft, dass hier einer spezielleren Wissen hat, als das ich über googlen mir aneignen kann.


TheMrFeedback
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: So 27. Dez 2020, 15:11

Re: Pfad-Verfolgung

Beitrag von TheMrFeedback »

Die bisherigen foreach-Schleifen erwarten exakt ein Argument, nämlich den Namen der node (wenn ich es richtig verstanden habe) und dann wird das gezeichnet, was im style definiert wurde.
Stand der Dinge:

\documentclass[margin=0pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, angles, arrows.meta}

\begin{document}
\begin{tikzpicture}[
  % Innenpunkt für TP wird definiert
  TPdot/.style={circle, fill, inner sep=0pt, minimum size=.4mm},
  % Symbol für PPs wird definiert
  PP/.style={circle, fill=white, draw=white, double=black, inner sep=0pt, minimum size=1mm},
  % Symbol für TPs wird definiert
  TP/.pic={% ein pic wird immer mit seinem Ursprung am aktuellen Punkt eingefügt
    \draw [fill=white, draw=white, double=black] (90:1mm) -- (-150:1mm) -- (-30:1mm) -- cycle;
    \node [TPdot]{};
  }
]
  % Linien Zeichnen und Punkte setzen
  \path (0,0) coordinate (S) node [below left] {S} -- +(70:5.2cm) coordinate (A) node [above left] {A};
  \draw (S) -- ($(S)!0.5!(A)$);
  \draw [dash pattern=on 10pt off 3pt] ($(S)!0.5!(A)$) -- (A);
  \draw (S) 
        -- +(30:3.2cm) coordinate (P1) node [below, anchor=north east, xshift=3mm, yshift=-2mm] {P\textsubscript{1}}
        -- ([turn]-88:1.5cm) coordinate (N) node [below right] {N}
  ;
  
% Brechungswinkel einzeichnen \pic[arrows=Latex-, draw=black,<-,angle radius=7mm]{angle = P1--S--A}; \pic[draw=black,<-,angle radius=4mm]{angle = N--P1--S};
% Symbole auf Punkte legen \path foreach \p in {S,A} {(\p) pic {TP}} foreach \p in {P1,N} {(\p) node [PP] {}} ; \end{tikzpicture} \end{document}

Was ich jetzt suche wäre eine Schleife mit 2 Argumenten - Pseudocode:

Meine Eingabe: {#1,#2} (z.B. {S,P1})
Tikz: Starte von #1 aus, gehe dann zu ($(S)!0.1!(A)$) und führe dann einen draw-Befehl aus

Der Path muss? in #1 starten, denn der draw-Befehl ist abhängig von dieser Richtung.


esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Pfad-Verfolgung

Beitrag von esdd »

TheMrFeedback hat geschrieben:
Di 29. Dez 2020, 07:53

Gelöst habe ich das Ganze über eine Linien-"Erweiterung" mit Weiß-Schwarz-Weiß (Double):

\draw [fill=white, draw=white, double=black] (S) +(90:1mm) -- +(-150:1mm) -- +(-30:1mm) -- cycle;

Dadurch sieht es so aus, als würde der gezeichnete Pfad (hier: Dreieck) Freistehen. Den Äußeeren Rand von Double würde ich gern beeinflussen - also den Abstand vom Dreieck, bis zu einer abgehende, schwarze Linie von (S) aus zu sehen ist.

Dafür ist es vermutlich sinnvoller die Node-Option outer sep zu nutzen und die Nodes vor den Linien einzufügen. Dann müsste aber auch das pic für die dreieckige Markierung durch einen Node ersetzt werden:

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{shapes.geometric}

\begin{document}
\begin{tikzpicture}[
  mark outer sep/.style={outer sep=1mm},
  dot mark/.style={circle, fill=black, inner sep=0pt, minimum size=0.4mm},
  circle mark/.style={circle, draw=black, fill=white,
    inner sep=0pt, minimum size=1mm, mark outer sep
  },
  triangle mark/.style={regular polygon, regular polygon sides=3,
    draw=black, preaction={fill=white}, path picture={\node[dot mark]{};},
    inner sep=0pt, minimum size=2mm, mark outer sep
  },
  mark label distance/.style={label distance=-1mm}
]

  \path [mark label distance]
    (10,0) node [triangle mark, label=below left:S] (S) {}
    +(68:5.2cm) node [triangle mark, label=above left:A] (A) {}
  ;
  \draw (S) -- ($(S)!0.5!(A)$);
  \draw [dash pattern=on 10pt off 3pt] ($(S)!0.5!(A)$) -- (A);

  \path [mark label distance] (S) 
        -- +(19:3.2cm) node [circle mark,label={[shift={(-.1,-.2)}]below:P\textsubscript{1}}] (P1){}
        -- ([turn]-79:1.5cm) node [circle mark,label=below right:N] (N){}
  ;
  \draw (S) -- (P1) -- (N);

\end{tikzpicture}
\end{document}
gl_outersep.png
gl_outersep.png (6.66 KiB) 4581 mal betrachtet

Oder "übersetzt" auf dein letztes Beispiel:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, shapes.geometric, angles, arrows.meta}

\begin{document}
\begin{tikzpicture}[
  mark outer sep/.style={outer sep=1mm},
  % Innenpunkt für TP wird definiert
  TPdot/.style={circle, fill, inner sep=0pt, minimum size=.4mm},
  % Symbol für PPs wird definiert
  PP/.style={circle, draw=black, fill=white,
    inner sep=0pt, minimum size=1mm, mark outer sep
  },
  % Symbol für TPs wird definiert
  TP/.style={regular polygon, regular polygon sides=3,
    draw=black, preaction={fill=white}, path picture={\node[TPdot]{};},
    inner sep=0pt, minimum size=2mm, mark outer sep
  },
  mark label distance/.style={label distance=-1mm}
]
  % Punkte setzen und Linien zeichnen
  \path [mark label distance]
    (0,0) node [TP, label=below left:S] (S) {}
    +(68:5.2cm) node [TP, label=above left:A] (A) {}
  ;
  \draw (S) -- ($(S)!0.5!(A)$);
  \draw [dash pattern=on 10pt off 3pt] ($(S)!0.5!(A)$) -- (A);

  \path [mark label distance] (S) 
        -- +(19:3.2cm) node [PP, label={[shift={(-.1,-.2)}]below:P\textsubscript{1}}] (P1){}
        -- ([turn]-79:1.5cm) node [PP, label=below right:N] (N){}
  ;
  \draw (S) -- (P1) -- (N);

  % Brechungswinkel einzeichnen
  \pic[arrows=Latex-, draw=black,<-,angle radius=7mm]{angle = P1--S--A};
  \pic[draw=black,<-,angle radius=4mm]{angle = N--P1--S};

\end{tikzpicture}
\end{document}
gl_outersep2.png
gl_outersep2.png (7.25 KiB) 4580 mal betrachtet

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Pfad-Verfolgung

Beitrag von esdd »

TheMrFeedback hat geschrieben:
Di 29. Dez 2020, 17:06

Was ich jetzt suche wäre eine Schleife mit 2 Argumenten - Pseudocode:

Meine Eingabe: {#1,#2} (z.B. {S,P1})
Tikz: Starte von #1 aus, gehe dann zu ($(S)!0.1!(A)$) und führe dann einen draw-Befehl aus

Der Path muss? in #1 starten, denn der draw-Befehl ist abhängig von dieser Richtung.

Die Syntax wäre beispielsweise

\foreach \s/\t in {S/P1, A/P2} {\draw (\s) -- ($(\s)!.1!(\t)$);}

Bitte lies dazu das Kapitel »Repeating Things: The Foreach Statement« in der Doku.

Beispiel:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \draw[dotted,nodes={circle,fill,inner sep=1pt}]
    (0,0) node [label=above:S] (S){}
      -- (4,2) node [label=below right:P\textsubscript{1}] (P1){}
    (3,0.5) node [label=above:A] (A){}
      -- (5,1) node [label=below right:P\textsubscript{2}] (P2){}
  ;
  \foreach \s/\t in {S/P1, A/P2} {\draw (\s) -- ($(\s)!.1!(\t)$);}
\end{tikzpicture}
\end{document}
gl_foreach.png
gl_foreach.png (6.04 KiB) 4580 mal betrachtet

TheMrFeedback
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: So 27. Dez 2020, 15:11

Re: Pfad-Verfolgung

Beitrag von TheMrFeedback »

Das sind alles sehr hilfreiche Hinweise von euch. Ich werde sie beherzigen. Riesen Dank erst einmal.

Hier mal das "Originalbild", wo man hoffentlich sieht, dass ich fast fertig bin:

Bild_2020-12-30_194256.png

Aber jetzt habe ich noch irgendwo einen Bug in den "Querstrichen" (Zeile 48/49) eingebaut und ich weis nicht was das Problem ist.
Ziel:

Pseudocode:
Gehe 20% von \s nach \t und mache einen Strich 1mm nach Links und 1mm nach Rechts;

Kann mir jemand helfen?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{
  calc, 
  shapes.geometric, 
  angles, 
  arrows.meta
}

\begin{document}
\begin{tikzpicture}[
  % Definition der Pfeil-Optik
=Latex,
  % Freistellungsabstand eistellen
  mark outer sep/.style={outer sep=1mm},
  % Innenpunkt für TP wird definiert
  TPdot/.style={circle, fill, inner sep=0pt, minimum size=.4mm},
  % Symbol für PPs wird definiert
  PP/.style={circle, draw=black, fill=white,
    inner sep=0pt, minimum size=1mm, mark outer sep
  },
  % Symbol für TPs wird definiert
  TP/.style={regular polygon, regular polygon sides=3,
    draw=black, preaction={fill=white}, path picture={\node[TPdot]{};},
    inner sep=0pt, minimum size=2mm, mark outer sep
  },
  mark label distance/.style={label distance=-1mm}
]
  % Punkte setzen und Linien zeichnen
  \path [mark label distance]
    (0,0) node [TP, label=below left:S] (S) {}
    +(68:5.2cm) node [TP, label=above left:A] (A) {}
  ;
%  \draw (S) -- ($(S)!0.5!(A)$);
%  \draw [dash pattern=on 10pt off 3pt] ($(S)!0.5!(A)$) -- (A);

  \path [mark label distance] (S) 
        -- +(19:3.2cm) node [PP, label={[shift={(-.1,-.2)}]below:P\textsubscript{1}}] (P1){}
        -- ([turn]-79:1.5cm) node [PP, label=below right:N] (N){}
  ;
%  \draw (S) -- (P1) -- (N);

  % Brechungswinkel einzeichnen
%  \pic[draw=black, <-, angle radius=7mm]{angle = P1--S--A};
%  \pic[draw=black, <-, angle radius=4mm]{angle = N--P1--S};
  
% Messungsmarkierungen einfügen \foreach \s/\t in {S/P1, P1/S, P1/N} {\draw (\s) -- ($(\s)!.2!(\t)$) -- ([turn]90:1mm) -- ([turn]180:2mm);} % \foreach \s/\t in {S/P1, P1/S, P1/N} {\draw (\s) ($(\s)!.2!(\t)$) -- ([turn]90:1mm) -- ([turn]180:2mm);} \end{tikzpicture} \end{document}

Danke.


esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Pfad-Verfolgung

Beitrag von esdd »

Ich verstehe die Frage nicht. Bekommst Du eine Fehlermeldung? Ich bekomme keine, würde allerdings eher etwas wie

\foreach \s/\t in {S/P1, P1/S, P1/N} {
  \draw ($(\s)!.2!(\t)!1mm!90:(\t)$) -- ($(\s)!.2!(\t)!-1mm!90:(\t)$);
}

Oder ist nur das Ergebnis falsch? In der Skizze sieht es allerdings so aus, als ob die Abstände von den Punkten einheitlich sein sollen. Dann müsste man 0.2 durch eine Längenangabe ersetzen, beispielsweise

\foreach \s/\t in {S/P1, P1/S, P1/N} {
  \draw ($(\s)!3mm!(\t)!1mm!90:(\t)$) -- ($(\s)!3mm!(\t)!-1mm!90:(\t)$);
}

TheMrFeedback
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: So 27. Dez 2020, 15:11

Re: Pfad-Verfolgung

Beitrag von TheMrFeedback »

Hatte mal wieder das sprichwörtliche Brett vor dem Kopf.
Vielen Dank.


Antworten