(tikz) intersections als Koordinaten verwenden

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) intersections als Koordinaten verwenden

von pointloma » Mo 8. Mai 2017, 11:30

Ich danke euch beiden wahnsinnig! Das hilft mir enorm weiter. Wenn es euch interessiert, werde ich den fertigen Code dann noch hochladen.

von Bartman » Fr 5. Mai 2017, 10:17

Das Beispiel von markusv hat mich zu weiteren Änderungen inspiriert:
\documentclass[tikz, border=10pt]{standalone}

\usetikzlibrary{angles, intersections}

\begin{document}
\begin{tikzpicture}
\newcommand*{\rad}{4cm}
\coordinate (O) at (0,0);
\coordinate (N) at (0,\rad);

%Atmosphäre
\filldraw[color=gray!10, name path=atmo] (O) circle [radius=\rad+1cm];
%Erde
\filldraw[color=blue!20, name path=earth] (O) circle [radius=\rad];
%Äquator
\draw [dashed] (\rad,0) arc [
	start angle=0,
	end angle=180,
	x radius=\rad,
	y radius=5mm
];

\draw (\rad,0) arc [
	start angle=0,
	end angle=-180,
	x radius=\rad,
	y radius=5mm
];
 
%Solarstrahlung
\renewcommand*{\angle}{180}
\newcommand*{\width}{9cm}

\path (\angle:9cm) coordinate (light)  ++(\angle+90:0.5*\width) -- +(\angle-90:\width) ;

\foreach \x in {-4,...,4} {
	\path[name path=ray,overlay] (light) ++(\angle+90:\x*\width/9) 
		coordinate (start) -- +(180+\angle:10cm);
	\path[name intersections={of=atmo and ray, sort by=ray}] (intersection-1) 
		coordinate (atmoray\x);% <- eingefügt
	\draw[->, name intersections={of=earth and ray, sort by=ray}] (start) -- (intersection-1) 
		coordinate (earthray\x);
}
\begin{scope}[
	anglestyle/.style={
		angle eccentricity=1.5, 
		draw, 
		angle radius=\rad
	},
	thick,
	bend angle=10% <- eingefügt
]
\draw [red] pic [anglestyle] {angle = earthray-4--O--earthray-3};
\draw [orange] pic [anglestyle] {angle = earthray-1--O--earthray0};
\draw [red] (earthray-4) to[bend left] (earthray-3);
\draw [orange] (earthray-1) to[bend left] (earthray0);
\draw [->, red] (atmoray-4) -- (earthray-4);% <- geändert
\draw [->, orange] (atmoray-1) -- (earthray-1);% <- geändert
\end{scope}
\end{tikzpicture}
\end{document}

Re: (tikz) intersections als Koordinaten verwenden

von markusv » Do 4. Mai 2017, 12:30

pointloma hat geschrieben: Mit viel Trial and Error (und Code von anderen übernehmen)
Habe mich auch mal auf diesen Pfad begeben und ein wenig dazu geschmissen.

Die Kreisbögen auf der "Erdoberfläche" sind soweit klar, die Bögen zurück sind zumindest an den Punkten ausgerichtet.

Bei den Pfeilen und vor allem der Pfeillänge bin ich noch ein wenig unklar.
Am besten wäre es, die Schnittpunkte mit der Atmosphäre als Koordinaten zu haben, allerdings fehlen mir dazu gerade die Werkzeuge bzw. der nötige Grips, um es zu berechnen!

Evtl. hilft es ja als weiterer Ansatz.
\documentclass[12pt,a4paper]{scrreprt}

\usepackage[utf8]{inputenc} %Eingabekodierung
\usepackage[ngerman]{babel} %deutscher Sprachraum
\usepackage[T1]{fontenc} %Ausgabefonts

\usepackage{tikz}
    \usetikzlibrary{plotmarks} %ergänzt
    \usetikzlibrary{angles} %ergänzt
    \usetikzlibrary{intersections}

\begin{document}

\begin{tikzpicture}
\def\rad{4cm}
\coordinate (O) at (0,0); 
\coordinate (N) at (0,\rad); 

%Atmosphäre
\filldraw[color=gray!10, name path=atmo] (O) circle [radius=\rad+1cm];
%Erde
\filldraw[color=blue!20, name path=earth] (O) circle [radius=\rad];
%Äquator
\draw[dashed] 
  (\rad,0) arc [start angle=0,end angle=180,x radius=\rad,y radius=5mm];
\draw
  (\rad,0) arc [start angle=0,end angle=-180,x radius=\rad,y radius=5mm];
  
  %Solarstrahlung
  \def\angle{180}
  \def\width{9cm}

  \path (\angle:9cm) coordinate(light)  ++(\angle+90:0.5*\width) -- +(\angle-90:\width) ;
        
  \foreach \x in {-4,...,4} {
   \path[name path=ray,overlay] (light) ++(\angle+90:\x*\width/9) coordinate(start) -- +(180+\angle:10cm);
   \draw[->, name intersections={of=earth and ray, sort by=ray}]  (start) -- (intersection-1) coordinate(strahl\x);
   ;
   }
   \tikzset{anglestyle/.style={angle eccentricity=1.5, draw, angle radius=\rad}}
   \draw [red] pic [anglestyle] {angle = strahl-4--O--strahl-3};
   \draw [orange] pic [anglestyle] {angle = strahl-1--O--strahl0};
   \draw [red] (strahl-4) to[bend left] (strahl-3);
   \draw [orange] (strahl-1) to[bend left] (strahl0);
   \draw[<-, red] (strahl-4) --++(-3,0);
   \draw[<-, orange] (strahl-1) --++(-1,0);
\end{tikzpicture}
\end{document}

(tikz) intersections als Koordinaten verwenden

von pointloma » Mi 3. Mai 2017, 15:13

Liebes Forum,

ich fühle mich ein wenig schlecht, weil ich hier immer nur nach Hilfe fragen, ohne selbst großartig zu etwas beitragen zu können. Ich hoffe ihr nehmt mir das nicht übel.

Mit viel Trial and Error (und Code von anderen übernehmen) bin ich zu folgendem Code gekommen, der soweit auch funktioniert, wie ich das gerne hätte.


\documentclass[12pt,a4paper]{scrreprt}

\usepackage[utf8]{inputenc} %Eingabekodierung
\usepackage[german]{babel} %deutscher Sprachraum
\usepackage[T1]{fontenc} %Ausgabefonts

\usepackage{tikz}
\usetikzlibrary{intersections}

\begin{document}

\begin{tikzpicture}
\def\rad{4cm}
\coordinate (O) at (0,0); 
\coordinate (N) at (0,\rad); 

%Atmosphäre
\filldraw[color=gray!10, name path=atmo] (O) circle [radius=\rad+1cm];
%Erde
\filldraw[color=blue!20, name path=earth] (O) circle [radius=\rad];
%Äquator
\draw[dashed] 
  (\rad,0) arc [start angle=0,end angle=180,x radius=\rad,y radius=5mm];
\draw
  (\rad,0) arc [start angle=0,end angle=-180,x radius=\rad,y radius=5mm];
  
  %Solarstrahlung
  \def\angle{180}
  \def\width{9cm}

  \path (\angle:9cm) coordinate(light)  ++(\angle+90:0.5*\width) -- +(\angle-90:\width) ;
        
  \foreach \x in {-4,...,4} {
   \path[name path=ray,overlay] (light) ++(\angle+90:\x*\width/9) coordinate(start) -- +(180+\angle:10cm);
   \draw[->, name intersections={of=earth and ray, sort by=ray}]  (start) -- (intersection-1);
   }
   
\end{tikzpicture}
\end{document}
Im Anhang ist ein Bild, mit dem, was mir noch fehlt und was ich nicht hinbekomme. Auch mit der Dokumentation bin ich nicht weiter gekommen. Alle meine Versuche sind bisher gescheitert, weswegen ich mich nun an euch wende.

Danke für die Hilfe!
Dateianhänge
Minimalbeispiel.pdf
(64.37 KiB) 297-mal heruntergeladen

Nach oben