Anzeige:
Ergebnis 1 bis 5 von 5

Thema: TIKZ Gerade durch 2 Punkte

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.09.2011
    Beiträge
    10

    TIKZ Gerade durch 2 Punkte

    Hallo,

    ich möchte ein Bild in TIKZ zeichnen, bei dem 2 Punkte durch eine Gerade verbunden werden sollen, also es um den Punkt noch etwas weiter geht und nicht nur von Punkt zu Punkt. Habe beim Suchen das hier gefunden, das zumindest schonmal Rechenarbeit erspart:
    http://www.golatex.de/viewtopic,p,30674.html#30674
    geht soweit sehr schön.

    Nun habe ich aber die Punkte als Koordinaten am Anfang eingegeben und würde das der Übersichtlichkeit wegen auch gern so lassen.

    Gibt es eine TIKZ-Funktion, mit der man auf eine Koordinaten eines Punktes zugreifen kann? Dann wäre es ja gelaufen.

    Code:
    \documentclass{article}
    
      \usepackage[ngerman]{babel}   %Dokumentensprache Deutsch
      \usepackage{color}            %Farben benutzbar machen
      \usepackage{scalefnt}         %TiKZ skalierbar
      \usepackage{graphicx, tikz}   %TiKZ nutzbar
      \usepackage{amsmath,amsthm,amssymb, mathtools}  %Diverse mathematische Symbole
    
    
    
      \usetikzlibrary{arrows}  
      \usetikzlibrary{snakes}     %fuer geschweifte Klammern   
      \usetikzlibrary{calc}
    
      
      
      \newcommand\ZeichneGerade[6]{%
      \coordinate (Punkt1) at (#1,#2);
      \coordinate (Punkt2) at (#3,#4);
      \pgfmathsetmacro\m{(#4-#2)/(#3-#1)}%
      \pgfmathsetmacro\n{#2-\m*#1}%
      \draw plot[domain=#5:#6] (\x,{\m*\x+\n});
    }
    %Syntax: \ZeichneGerade{x1}{y1}{x2}{y2}{anfang plotbereich}{ende plotbereich} 
    
    
    \begin{document}
    
    \begin{tikzpicture}[scale=2]
    
      \coordinate (A) at (0,0);
      \coordinate (B) at (2,0);
      \coordinate[label=45:$C$] (C) at (2,2);
      \coordinate[label=135:$D$] (D) at (0,2);
    
      \coordinate[label=0:$A'$] (A') at (2,1);
      \coordinate[label=90:$B'$] (B') at (1,2);
      \coordinate (C') at (0,0);
      \coordinate (D') at (2,0);
    
      \fill (A) circle (0.05em) node[below] {$A=C'$};
      \fill (B) circle (0.05em) node[below] {$B=D'$};
      \fill (C) circle (0.05em);
      \fill (D) circle (0.05em);
      \fill (A') circle (0.05em);
      \fill (B') circle (0.05em);
    
      \draw (A)--(B)--(C)--(D) -- cycle; %V-Eck ABCD
    
      \draw[red] (A')--(B')--(C')--(D') -- cycle; %V-Eck A'B'C'D'
    
        \ZeichneGerade{0}{0}{2}{2}{-0.5}{2.5}; 
    
    \end{tikzpicture}
    
    
    
    \end{document}
    Wobei ich dann das Trennen der Koordinaten im Makro ZeichneGerade machen würde, sodass man dann nur noch
    Code:
    \ZeichneGerade{(A)}{(B)}{-0.5}{2.5};
    oder so eingeben müsste.


    Wenn ich dann im Weiteren
    Code:
     \coordinate[label=90:$1'u$] (1'u) at (intersection of B'--A' and A--B);
    schreibe, so ergibt das einen gültigen Punkt, also müsste man nur irgendwie TIKZ davon überzeugen können, dass an den Koordinaten nicht Schluss ist - ist das Möglich?

    Vielen Dank für Antworten
    serverone
    Geändert von serverone (03-01-2012 um 15:14 Uhr)

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hi,

    entschuldige bitte meine Nachfrage, aber was genau meinst du. DU hast doch mittels \zeichneGerade die Punkte Punkt1 und Punkt2.

    Gruß
    Marco

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.09.2011
    Beiträge
    10
    Also ZeichneGerade braucht die x und y Koordinaten der jeweiligen Punkte einzeln. An die möchte ich rankommen. Hab dazu inzwischen über http://mrunix.de/forums/showpost.php...32&postcount=5

    Code:
    \pgfextractx, \pgfextracty
    gefunden.

    Leider funktioniert das irgendwie nicht. Der Abstand ist zunächst einmal im pt angegeben und ändert sich manchmal nicht, wenn ich die Koordinaten ändere. Ich habe außerdem das Gefühl, dass er die absoluten Koordinaten auf der Seite benutzt, was mir nichts bringt) Bsp:

    Code:
    \documentclass{article}
    
      \usepackage[ngerman]{babel}   %Dokumentensprache Deutsch
      \usepackage{color}            %Farben benutzbar machen
      \usepackage{scalefnt}         %TiKZ skalierbar
      \usepackage{graphicx, tikz}   %TiKZ nutzbar
      \usepackage{amsmath,amsthm,amssymb, mathtools}  %Diverse mathematische Symbole
    
    
    
      \usetikzlibrary{arrows}  
      \usetikzlibrary{snakes}     %fuer geschweifte Klammern   
      \usetikzlibrary{calc}
    
    
    
      
      
      \newcommand\ZeichneGerade[6]{%
      \coordinate (Punkt1) at (#1,#2);
      \coordinate (Punkt2) at (#3,#4);
      \pgfmathsetmacro\m{(#4-#2)/(#3-#1)}%
      \pgfmathsetmacro\n{#2-\m*#1}%
      \draw plot[domain=#5:#6] (\x,{\m*\x+\n});
    }
    %Syntax: \ZeichneGerade{x1}{y1}{x2}{y2}{anfang plotbereich}{ende plotbereich} 
    
    
    \newlength\vecx
    \newlength\vecy
    \newlength\dist
    
    
    \begin{document}
    
    
    
    \begin{tikzpicture}
    
    \coordinate (A) at (2,2);
    \fill (A) circle (0.25em) node[below] {$A$};
    %\coordinate (B) at (1,0);
    %\fill (B) circle (0.25em) node[below] {$B$};
    
    \pgfextractx{\vecx}{A};
    
    \node at (5,0){Der Abstand betraegt \the\vecx};
    
    
    \end{tikzpicture}
    
    
    
    
    \end{document}
    Vorhin hatte ich folgende Idee:
    Ich fasse einen Punkt P als komplexe Zahl auf und bastle ein Makro, das mir jeweils Re(P) und Im(P) liefert, was ja genau x und y von P sind. Problem war dabei, dass ich dazu P komplex konjugiert brauche.
    Meine Idee dazu: ich spiegele P an der x-Achse. Da ich zum Spiegeln nichts gefunden habe, wohl aber zum Drehen: Suche den Punkt, wo eine senkrechte Gerade durch P die x-Achse schneidet ( mit dem |- oder -| Operator geht das wohl) und drehe P um 180° um diesen Punkt, es entsteht P'. Dann ist P' P komplex konjugiert und ich erhalte die Koordinaten durch (P +/- P')/2.

    Alles doch irgendwie etwas kompliziert.

    Bin noch über den Operator "let" gestolpert, was macht der?

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

    reicht es dir , wenn du die Verbindung von A und C an beiden Enden um einen bestimmten Betrag (z.B. 3mm) verlängerst?
    Code:
    \documentclass{article}
    
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \begin{document}
    \begin{tikzpicture}[scale=2]
    
      \coordinate (A) at (0,0);
      \coordinate (B) at (2,0);
      \coordinate[label=0:$C$] (C) at (2,2);
      \coordinate[label=180:$D$] (D) at (0,2);
    
      \coordinate[label=0:$A'$] (A') at (2,1);
      \coordinate[label=90:$B'$] (B') at (1,2);
      \coordinate (C') at (0,0);
      \coordinate (D') at (2,0);
    
      \fill (A) circle (0.05em) node[left] {$A=C'$};
      \fill (B) circle (0.05em) node[right] {$B=D'$};
      \fill (C) circle (0.05em);
      \fill (D) circle (0.05em);
      \fill (A') circle (0.05em);
      \fill (B') circle (0.05em);
    
      \draw (A)--(B)--(C)--(D) -- cycle; %V-Eck ABCD
      \draw[red] (A')--(B')--(C')--(D') -- cycle; %V-Eck A'B'C'D'
    
      \draw($(A)!-3mm!(C)$)--($(C)!-3mm!(A)$);% Gerade durch die Punkte A und C
    
    \end{tikzpicture}
    \end{document}
    Gruß
    Elke

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.09.2011
    Beiträge
    10
    1000-Dank essd,

    genau sowas hab ich gesucht - es kann doch so einfach sein

    serverone

Stichworte

Lesezeichen

Berechtigungen

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