Barny.G
16-05-2012, 13:22
Hallo und moin moin,
nach einiger Bastelei und immer noch keiner Lösung versuche ich mal das Problem ein wenig breitzutreten. Vielleicht wird es dadurch dünner...
Ich habe mir eine schöne Grafik erstellt und alles möglichst variabel gehalten. Nun möchte ich am unteren Ende gern eine Fläche füllen, deren Ecken durch "nodes" gekennzeichnet sind.
Was mir schon aufgefallen ist, die Fläche ist (an den Linien kann man es sehen) nicht geschlossen. Wahrscheinlich funktioniert es deswegen nicht. Allerdings habe ich noch keine Abhilfe gefunden...
Gern möchte ich direkten Zahlenkontakt vermeiden und auch weiterhin nur mit Variablen arbeiten. Wie kann ich TIKZ dazu verleiten um die nodes nix mehr freizustellen, sondern die "echte" Koordinate unter dem jeweiligen Namen zu speichern?
Hier mein kleines Beispiel:
\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}{5}
\newcommand{\CircRad}{2}
%Schichtdicken
\newcommand{\sda}{5}
\newcommand{\sdb}{2}
\newcommand{\sdc}{3}
\newcommand{\sdd}{5}
%Oberflaeche
\coordinate[] (Ovl) at (0,0); %\coordinate[label=left:$vl$]
\coordinate[] (Ohl) at ($(Ovl)+(45:\ModBreite/2)$);
\coordinate[] (Ovr) at ($(Ovl)+(0:\ModBreite)$);
\coordinate[] (Ohr) at ($(Ovr)+(45:\ModBreite/2)$);
%Oberfläche zeichnen
\def \Obfl{(Ovl) -- (Ohl) -- (Ohr) -- (Ovr) -- cycle}
\draw \Obfl;
\fill[color=gray,fill opacity=0.2] \Obfl;
%Sender Tx
\coordinate[label=left:$Tx$] (Tx) at ($(Ovl)+(\ModBreite/2,0)+(45:\ModBreite/4)$);
\fill[red] (Tx) circle (\CircRad pt);
%Empfänger Rx
\coordinate[label=right:$Rx$] (Rx) at ($(Tx)+(\ModBreite/4,-\sda*0.8)$);
\fill[orange] (Rx) circle (\CircRad pt);
%erste Schicht
\draw (Ovl) -- ++(-90:\sda) node[inner sep=0] (Ovlsda){};
\draw (Ohl) -- ++(-90:\sda) node[inner sep=0] (Ohlsda){};
\draw (Ovr) -- ++(-90:\sda) node[inner sep=0] (Ovrsda){};
\draw (Ohr) -- ++(-90:\sda) node[inner sep=0] (Ohrsda){};
\def \ObFlsda{(Ovlsda) -- (Ohlsda) -- (Ohrsda) -- (Ovrsda) -- (Ovlsda)}
\draw[gray, dashed] \ObFlsda;
\fill[color=green,fill opacity=0.1] \ObFlsda; %funktioniert nicht!!!!
%Anschrieb
\draw[latex-] ($(Ovr) + (0,-\sda/2) + (45:\ModBreite/4)$) --++ (-15:\ModBreite/5) node[right]{$\sigma_1$};
\draw ($(Ohr)+(0,-\sda/2)$) node[right]{$h_1$};
%Strahlweg
\draw [-latex,outer sep=2pt] (Tx) -- (Rx);
\end{tikzpicture}
\end{center}
\endpgfgraphicnamed
\end{figure}
\end{document}
Tut mir Leid, aber weniger geht nicht (bei mir) :o
Wenn man schön auf eine untere Ecke zoomt, dann ist gut zu sehen, was ich meine...
Viele Grüße
Thomas
nach einiger Bastelei und immer noch keiner Lösung versuche ich mal das Problem ein wenig breitzutreten. Vielleicht wird es dadurch dünner...
Ich habe mir eine schöne Grafik erstellt und alles möglichst variabel gehalten. Nun möchte ich am unteren Ende gern eine Fläche füllen, deren Ecken durch "nodes" gekennzeichnet sind.
Was mir schon aufgefallen ist, die Fläche ist (an den Linien kann man es sehen) nicht geschlossen. Wahrscheinlich funktioniert es deswegen nicht. Allerdings habe ich noch keine Abhilfe gefunden...
Gern möchte ich direkten Zahlenkontakt vermeiden und auch weiterhin nur mit Variablen arbeiten. Wie kann ich TIKZ dazu verleiten um die nodes nix mehr freizustellen, sondern die "echte" Koordinate unter dem jeweiligen Namen zu speichern?
Hier mein kleines Beispiel:
\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}{5}
\newcommand{\CircRad}{2}
%Schichtdicken
\newcommand{\sda}{5}
\newcommand{\sdb}{2}
\newcommand{\sdc}{3}
\newcommand{\sdd}{5}
%Oberflaeche
\coordinate[] (Ovl) at (0,0); %\coordinate[label=left:$vl$]
\coordinate[] (Ohl) at ($(Ovl)+(45:\ModBreite/2)$);
\coordinate[] (Ovr) at ($(Ovl)+(0:\ModBreite)$);
\coordinate[] (Ohr) at ($(Ovr)+(45:\ModBreite/2)$);
%Oberfläche zeichnen
\def \Obfl{(Ovl) -- (Ohl) -- (Ohr) -- (Ovr) -- cycle}
\draw \Obfl;
\fill[color=gray,fill opacity=0.2] \Obfl;
%Sender Tx
\coordinate[label=left:$Tx$] (Tx) at ($(Ovl)+(\ModBreite/2,0)+(45:\ModBreite/4)$);
\fill[red] (Tx) circle (\CircRad pt);
%Empfänger Rx
\coordinate[label=right:$Rx$] (Rx) at ($(Tx)+(\ModBreite/4,-\sda*0.8)$);
\fill[orange] (Rx) circle (\CircRad pt);
%erste Schicht
\draw (Ovl) -- ++(-90:\sda) node[inner sep=0] (Ovlsda){};
\draw (Ohl) -- ++(-90:\sda) node[inner sep=0] (Ohlsda){};
\draw (Ovr) -- ++(-90:\sda) node[inner sep=0] (Ovrsda){};
\draw (Ohr) -- ++(-90:\sda) node[inner sep=0] (Ohrsda){};
\def \ObFlsda{(Ovlsda) -- (Ohlsda) -- (Ohrsda) -- (Ovrsda) -- (Ovlsda)}
\draw[gray, dashed] \ObFlsda;
\fill[color=green,fill opacity=0.1] \ObFlsda; %funktioniert nicht!!!!
%Anschrieb
\draw[latex-] ($(Ovr) + (0,-\sda/2) + (45:\ModBreite/4)$) --++ (-15:\ModBreite/5) node[right]{$\sigma_1$};
\draw ($(Ohr)+(0,-\sda/2)$) node[right]{$h_1$};
%Strahlweg
\draw [-latex,outer sep=2pt] (Tx) -- (Rx);
\end{tikzpicture}
\end{center}
\endpgfgraphicnamed
\end{figure}
\end{document}
Tut mir Leid, aber weniger geht nicht (bei mir) :o
Wenn man schön auf eine untere Ecke zoomt, dann ist gut zu sehen, was ich meine...
Viele Grüße
Thomas