goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 100199
Top-Poster: Johannes_B (5063)

Wir begrüßen unseren neuesten Benutzer pappou.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

tikz Punkt mit kleinster Entfernung bestimmen

 

melondolphin
Forum-Newbie
Forum-Newbie

Beiträge: 2
Anmeldedatum: 14.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2019, 14:26     Titel: tikz Punkt mit kleinster Entfernung bestimmen
  Antworten mit Zitat      
Hallo zusammen,

ich bin gerade dabei mich in die automatisierte Grafikerstellung mit Latex, tikz und R einzuarbeiten.

Ich möchte mit Hilfe von tikz denjenigen von vier Punkten ermitteln, der die geringste Entfernung zu einem fünften Punkt hat.

Die Abstände zwischen den Punkten berechne ich bislang so:

Code

 
\begin{tikzpicture}

\coordinate (North) at (0,5);

\path let
  \p1 = ($(North)-(node_1)$), \n1 = {veclen(\x1,\y1)}
, \p2 = ($(North)-(node_2)$), \n2 = {veclen(\x2,\y2)}
, \p3 = ($(North)-(node_3)$), \n3 = {veclen(\x3,\y3)}
, \p4 = ($(North)-(node_4)$), \n4 = {veclen(\x4,\y4)}
in coordinate (dummy1) at (\x1, \y1)
coordinate (dummy2) at (\x2, \y2)
coordinate (dummy3) at (\x3, \y3)
coordinate (dummy4) at (\x4, \y4);

\end{tikzpicture}

 


Die Punkte node_1 - node_2 werden in vorangehenden Berechnungen ermittelt.

Allerdings komme ich nun nicht weiter, weil ich nicht verstehe ob und wie ich mit den Werten \n1, \x1, \y1... weiterrechnen kann. Meine ursprüngliche Idee war, ein If-Abfrage einzubauen:

if \n1 == min(n1, \n2, \n3,\n4) then coordinate (nearest_to_north) at (node_1)
elseif \n2 == min(n1, \n2, \n3,\n4) then coordinate (nearest_to_north) at (node_2)
elseif...

Ich habe noch nicht herausgefunden, ob das grundsätzlich in tikz/Latex überhaupt möglich ist.

Der ganze Code ist in ein *.Rnw-File eingebettet, ich könnte die Berechnung also auch mit R durchführen, wenn ich wüsste wie man \n1, \x1, \y1 an R übergibt.

Die Syntax von tikz ist noch sehr verwirrend für mich...vielleicht ist mein Ansatz auch kompletter Quatsch. Über Hilfe oder Hinweise auf eine Anleitung würde ich mich sehr freuen. Ich hab selbst im Forum noch kein vergleichbares Problem gefunden, oder bin zu blöd aus den oftmals komplexen Beispielen die Quintessenz für mein Problem rauszufiltern Rolling Eyes...

Ich habe die Frage noch in diesen beiden englischsprachigen Foren gestellt:


https://latex.org/forum/viewtopic.php?f=45&t=32581
https://tex.stackexchange.com/quest.....-closest-to-another-point

Zuletzt bearbeitet von melondolphin am 14.06.2019, 17:10, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen

Buster
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2019, 17:00     Titel: Unerwünscht
  Antworten mit Zitat      
CrosspostingRegeln lesen!

Buster
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2019, 17:08     Titel: Gute Streuung
  Antworten mit Zitat      
Und noch eins.

esdd
Forum-Meister
Forum-Meister

Beiträge: 2475
Anmeldedatum: 07.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2019, 17:36     Titel:
  Antworten mit Zitat      
Eine Möglichkeit von vermutlich vielen

Code
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand{\tempdist}{}
\newcommand{\tempindex
}{}

\begin{document
}
\begin{tikzpicture}
\path [nodes={circle,minimum size=1pt,fill}]
  (0,5) coordinate (North) node[red]{}
  (2,1) coordinate (node_1) node[green]{
}
  (1,0) coordinate (node_2) node[green!75!black]{
}
  (-2,3) coordinate (node_3) node[green!50!black]{
}
  (6,2) coordinate (node_4) node[green!25!black]{
}
;

\def\tempdist{\maxdimen
}
\def\tempindex{0}
\foreach \i in {1,...,4}{
  \path
    let \p1 = ($(North)-(node_\i)$),\n1 = {veclen(\x1,\y1)
}
    in \pgfextra{
      \ifdim \n1<\tempdist \xdef\tempindex{\i
} \xdef\tempdist{\n1}\fi
    };
}
\path
  (node_\tempindex) coordinate[label=above:nearest to north] (nearest_to_north);
;

\end{tikzpicture}
\end{document}


Ergebnis:



Edit: Unter einem Deiner Crossposts sind weitere, vielleicht bessere Vorschläge: tikz, find the point which is closest to another point

gl_nearestnode.png
 Beschreibung:

Download
 Dateiname:  gl_nearestnode.png
 Dateigröße:  2.81 KB
 Heruntergeladen:  67 mal
Private Nachricht senden Benutzer-Profile anzeigen

melondolphin
Forum-Newbie
Forum-Newbie

Beiträge: 2
Anmeldedatum: 14.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2019, 09:57     Titel:
  Antworten mit Zitat      
@esdd: Vielen Dank für die kurze, elegante Lösung

Dein Code macht genau das, wonach ich gesucht habe.
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2019 goLaTeX.de