tikz Punkt mit kleinster Entfernung bestimmen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: tikz Punkt mit kleinster Entfernung bestimmen

von melondolphin » Mo 17. Jun 2019, 10:57

@esdd: Vielen Dank für die kurze, elegante Lösung

Dein Code macht genau das, wonach ich gesucht habe.

von esdd » Fr 14. Jun 2019, 18:36

Eine Möglichkeit von vermutlich vielen
\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:

Bild

Edit: Unter einem Deiner Crossposts sind weitere, vielleicht bessere Vorschläge: tikz, find the point which is closest to another point
Dateianhänge
gl_nearestnode.png
gl_nearestnode.png (2.81 KiB) 2836 mal betrachtet

Gute Streuung

von Buster » Fr 14. Jun 2019, 18:08

Unerwünscht

von Buster » Fr 14. Jun 2019, 18:00

CrosspostingRegeln lesen!

tikz Punkt mit kleinster Entfernung bestimmen

von melondolphin » Fr 14. Jun 2019, 15:26

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:
 
\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 :roll:...

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/questions ... ther-point

Nach oben