PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TikZ: Kreise - Linie: überzeichnet / zu weit gezeichnet



Barny.G
17-05-2012, 19:43
Hallo liebe Gemeinde,

ein kleines Problem mit der sog. Freistellung von Flächen.

Zunächst einmal habe ich Koordinaten für Kreismittelpunkte berechnet und danach zwei Kreise gezeichnet, die ich mit einem Pfeil verbinden möchte. Nehme ich nun die Koordinaten der Mittelpunkte, so macht LaTeX folgerichtig diese auch zum Anfangs- und Endpunkt der Linie / des Pfeiles.

Jetzt könnte ich recht kompliziert die Schnittpunkte der Geraden zwischen den Punkten und dem jeweiligen Kreis berechnen und danach erst den Pfeil zeichnen. Jedoch erscheint mir das Ganze ein wenig zu kompliziert. Ich denke, dass ich nicht der Erste bin, der dieses Problem hat und es wahrscheinlich schon wesentlich eleganter gelöst wurde...

Hier mein Beispielcode:

\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{graphicx}
\usepackage{float}
%\usepackage{psfrag}
%\usepackage{pstool}

\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathrsfs}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc,fit ,intersections}


\begin{document}

\begin{figure}
\beginpgfgraphicnamed{Modell_der_Leitfaehigkeiten}
\begin{center}
\begin{tikzpicture}[scale=1]
\newcommand{\ModBreite}{10}
\newcommand{\CircRad}{2}
\newcommand{\sda}{5}
\coordinate[] (Ovl) at (0,0); %\coordinate[label=left:$vl$]

\coordinate[label=left:$Tx$] (Tx) at ($(Ovl)+(\ModBreite/2,0)+(45:\ModBreite/4)$);
\fill[red] (Tx) circle (\CircRad pt);

\coordinate[label=right:$Rx$] (Rx) at ($(Tx)+(\ModBreite/4,-\sda*0.8)$);
\fill[orange] (Rx) circle (\CircRad pt);

%Strahlweg
\draw [-latex,outer sep=2pt] (Tx) -- (Rx);

\end{tikzpicture}
\end{center}
\endpgfgraphicnamed
\end{figure}

\end{document}


Kann mir jemand helfen? Bei Herrn Tantau habe ich gesucht und leider nichts gefunden - obwohl ich mir immer noch sicher bin, dass er dieses Problem schon gelöst hat... ;)

Viele Grüße

Thomas

Barny.G
18-05-2012, 07:50
Um auch Andere an meiner Problemlösung teilhaben zu lassen hier der code:

\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{graphicx}
\usepackage{float}
%\usepackage{psfrag}
%\usepackage{pstool}

\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathrsfs}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc,fit ,intersections}


\begin{document}

\begin{figure}
\beginpgfgraphicnamed{Modell_der_Leitfaehigkeiten}
\begin{center}
\begin{tikzpicture}[scale=1]
\newcommand{\ModBreite}{10}
\newcommand{\CircRad}{2}
\newcommand{\sda}{5}
\coordinate[] (Ovl) at (0,0); %\coordinate[label=left:$vl$]
\coordinate[label=left:$Tx$] (Tx) at ($(Ovl)+(\ModBreite/2,0)+
(45:\ModBreite/4)$);

\fill[red] (Tx) circle (\CircRad pt);
\coordinate[label=right:$Rx$] (Rx) at ($(Tx)+(\ModBreite/4,-\sda*0.8)$);
\fill[orange] (Rx) circle (\CircRad pt);

%Knotenerzeugung
\node[inner sep=\CircRad pt] (TxSW) at (Tx) {};
\node[inner sep=\CircRad pt] (RxSW) at (Rx) {};

%Strahlweg
\draw [-latex] (TxSW) -- (RxSW);

\end{tikzpicture}
\end{center}
\endpgfgraphicnamed
\end{figure}
\end{document}

Also ich habe einfach an der Stelle der Koordinaten einen Knoten (\node) gesetzt und den mit "inner sep=xx pt" auf einen Freistellungskreis um diese Koordinate gebracht. Mit dem neuen Knotennamen kann nun die Linie gezeichnet werden - ohne dass sie die Kreise übermalt...

Viel Spass auch weiterhin!

Thomas