Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Tikz Abstand zweier Punkte

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.08.2004
    Beiträge
    139

    Tikz Abstand zweier Punkte

    Hallo Ihr "Obertikzer",

    wenn ich ein Blockdiagramm wie das folgende zusammenbauen möchte


    Code:
    ------------------------------------------
    |       Bla1       |      bla2           |
    ------------------------------------------
    |              tralla                    |
    ------------------------------------------

    geht das mit relativ gut. (Klar man kann die beiden Styles auch zusammenfassen)

    Code:
    \documentclass{article}
    \usepackage{tikz}
    
    \begin{document}
    
    \tikzstyle{block}=[draw, minimum width= 6em,text centered,outer sep=0pt]
    \tikzstyle{frame}=[draw, minimum width= 12em,text centered,outer sep=0pt]
    
    \begin{tikzpicture}	
      \node [block] (BLA1) {bla1};
      \node [block,anchor=west] at (BLA1.east)(BLA2){bla2};
      \node [frame,anchor=north west] at (BLA1.south west)(TRALLA){Tralla};
    \end{tikzpicture}
    
    \end{document}
    An diesem Beispiel ist es noch recht übersichtlich, aber in komplexeren Darstellungen wäre es sehr schön, wenn sich die Breite von Tralla automatisch ergeben würde. Ich müsste also für "minimum width" statt der 12em den Abstand von BLA1.west bis BLA2.east hinterlegen? Wie bekomme ich den heraus?

    Grüße, Tausend Dank und ein schönes Wochenende

    Poseidonius

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hallo,

    Du könntest die Let Operation verwenden:

    Code:
    \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \begin{document}
    
    \tikzstyle{block}=[draw, minimum width= #1,text centered,outer sep=0pt]
    
    \begin{tikzpicture}	
      \node [block=6em] (BLA1) {bla1};
      \node [block=6em,anchor=west] at (BLA1.east)(BLA2){bla2};
      \path 
      	let \p1=($(BLA2.east)-(BLA1.west)$),\n1={veclen(\x1,\y1)} in
      	(BLA1.south west) node[block=\n1,anchor=north west](TRALLA){Tralla};
    \end{tikzpicture}
    
    \end{document}
    Gruß
    Elke

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.08.2004
    Beiträge
    139

    Cool !

    Wie immer vielen Dank an esdd!

  4. #4
    Registrierter Benutzer
    Registriert seit
    16.08.2004
    Beiträge
    139
    Nochmal hinterher ...

    Wie müsste der folgende Code ergänzt werden, damit in \dist der Abstand der beiden Kreismittelpunkte steht?

    Code:
    \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \begin{document}
    \begin{tikzpicture}
    
    \node [shape=circle,draw] (Tralla) {Tralla};
    \node at (Tralla.south) [shape=circle,anchor=north, draw] {Trulla};
    
    % Ich hatte mir sowas vorgestellt wie :
    \newlength{\dist}
    \setlength{\dist}{$(Tralla)-(Trulla)$}
    
    \end{tikzpicture}
    \end{document}
    Vielen Dank wie immer und ein schönes Wochenende

    Poseidonius

  5. #5
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    Hallo,

    wenn Du den Abstand nur innerhalb der tikz Umgebung brauchst, dann kannst Du das zum Beispiel so lösen:
    Code:
    \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \newlength\vecx
    \newlength\vecy
    \newlength\dist
    
    \begin{document}
    \begin{tikzpicture}
    	\node[circle,draw] (Tralla) {Tralla};
    	\node[circle,anchor=north, draw] at (Tralla.south) (Trulla) {Trulla};
    	\coordinate(Dist)at($(Tralla)-(Trulla)$);
    	\pgfextractx{\vecx}{\pgfpointanchor{Dist}{center}}
    	\pgfextracty{\vecy}{\pgfpointanchor{Dist}{center}}
    	\pgfmathsetlength\dist{veclen(\vecx,\vecy)}
    	\node at (5,0){Der Abstand betraegt \the\dist};
    \end{tikzpicture}
    
    Ausserhalb der tikz-Umgebung ist der Abstand aber nicht mehr vefuegbar: \the\dist 
    \end{document}
    Gruß
    Elke

Lesezeichen

Berechtigungen

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