Rephrased post
My goal is, that I would like to plot the visible coastlines of the continents depending on the defined viewing angle using tikz like you can see in this example:
My approach is, that I have a text file with the coordinates of the coastlines in the format lat, lon. I can plot these using the xyz spherical cs command of the tikz-3dplot package
e.g. xyz spherical cs:radius=10,latitude=30.736,longitude=-32.199
My problem is, that the xyz spherical cs command plots the entire polygon and not just the area visible from the defined viewing angle.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary {3d}
\usepackage{tikz-3dplot}
\usepackage{tikz-3dplot-circleofsphere}
\begin{document}
\centering
\def\r{10}
\tdplotsetmaincoords{70}{170}
\begin{tikzpicture}[tdplot_main_coords]
\draw[tdplot_screen_coords,thin,black!30] (0,0,0) circle (\r);
\foreach \a in {-75,-60,...,75}
{\tdplotCsDrawLatCircle[thin,black!30]{\r}{\a}}
\foreach \a in {0,15,...,165}
{\tdplotCsDrawLonCircle[thin,black!30]{\r}{\a}}
\tdplotCsDrawLatCircle%
[thick,tdplotCsFill/.style={opacity=0.05}]{\r}{0}
\draw (xyz spherical cs:radius=10,latitude=31.531,longitude=-31.919)
-- (xyz spherical cs:radius=10,latitude=30.736,longitude=-32.199)
-- (xyz spherical cs:radius=10,latitude=26.683,longitude=-34.069)
-- (xyz spherical cs:radius=10,latitude=24.615,longitude=-35.204)
-- (xyz spherical cs:radius=10,latitude=22.922,longitude=-36.166)
-- (xyz spherical cs:radius=10,latitude=21.604,longitude=-36.927)
-- (xyz spherical cs:radius=10,latitude=19.150,longitude=-37.863)
-- (xyz spherical cs:radius=10,latitude=16.315,longitude=-39.331)
-- (xyz spherical cs:radius=10,latitude=12.895,longitude=-42.640)
-- (xyz spherical cs:radius=10,latitude=11.911,longitude=-42.870)
-- (xyz spherical cs:radius=10,latitude=11.006,longitude=-44.764)
-- (xyz spherical cs:radius=10,latitude=11.012,longitude=-46.508)
-- (xyz spherical cs:radius=10,latitude=11.175,longitude=-47.967)
-- (xyz spherical cs:radius=10,latitude=11.707,longitude=-50.337)
-- (xyz spherical cs:radius=10,latitude=10.534,longitude=-50.975)
-- (xyz spherical cs:radius=10,latitude=7.227,longitude=-49.434)
-- (xyz spherical cs:radius=10,latitude=2.771,longitude=-45.641)
-- (xyz spherical cs:radius=10,latitude=0.405,longitude=-43.478)
-- (xyz spherical cs:radius=10,latitude=-1.514,longitude=-41.557)
-- (xyz spherical cs:radius=10,latitude=-5.873,longitude=-39.478)
-- (xyz spherical cs:radius=10,latitude=-6.862,longitude=-39.348)
-- (xyz spherical cs:radius=10,latitude=-7.815,longitude=-39.326)
-- (xyz spherical cs:radius=10,latitude=-8.923,longitude=-39.515)
-- (xyz spherical cs:radius=10,latitude=-10.559,longitude=-40.205)
-- (xyz spherical cs:radius=10,latitude=-13.562,longitude=-40.626)
-- (xyz spherical cs:radius=10,latitude=-16.439,longitude=-38.548)
-- (xyz spherical cs:radius=10,latitude=-18.756,longitude=-36.158)
-- (xyz spherical cs:radius=10,latitude=-19.879,longitude=-35.028)
-- (xyz spherical cs:radius=10,latitude=-22.566,longitude=-35.395)
-- (xyz spherical cs:radius=10,latitude=-25.278,longitude=-33.390)
-- (xyz spherical cs:radius=10,latitude=-27.115,longitude=-32.781)
-- (xyz spherical cs:radius=10,latitude=-29.791,longitude=-31.019)
-- (xyz spherical cs:radius=10,latitude=-32.942,longitude=-26.928)
-- (xyz spherical cs:radius=10,latitude=-33.460,longitude=-24.742)
-- (xyz spherical cs:radius=10,latitude=-34.113,longitude=-20.586)
-- (xyz spherical cs:radius=10,latitude=-33.514,longitude=-18.670)
-- (xyz spherical cs:radius=10,latitude=-32.352,longitude=-18.350)
-- (xyz spherical cs:radius=10,latitude=-25.939,longitude=-15.575)
-- (xyz spherical cs:radius=10,latitude=-18.897,longitude=-12.716)
-- (xyz spherical cs:radius=10,latitude=-14.196,longitude=-13.141)
-- (xyz spherical cs:radius=10,latitude=-10.845,longitude=-13.248)
-- (xyz spherical cs:radius=10,latitude=-9.617,longitude=-13.320)
-- (xyz spherical cs:radius=10,latitude=-6.945,longitude=-12.735)
-- (xyz spherical cs:radius=10,latitude=-5.393,longitude=-12.090)
-- (xyz spherical cs:radius=10,latitude=-2.285,longitude=-9.777)
-- (xyz spherical cs:radius=10,latitude=-0.571,longitude=-9.403)
-- (xyz spherical cs:radius=10,latitude=-0.044,longitude=-9.720)
-- (xyz spherical cs:radius=10,latitude=0.343,longitude=-9.589)
-- (xyz spherical cs:radius=10,latitude=0.943,longitude=-9.493)
-- (xyz spherical cs:radius=10,latitude=2.911,longitude=-9.639)
-- (xyz spherical cs:radius=10,latitude=3.360,longitude=-9.736)
-- (xyz spherical cs:radius=10,latitude=3.729,longitude=-9.732)
-- (xyz spherical cs:radius=10,latitude=3.835,longitude=-9.473)
-- (xyz spherical cs:radius=10,latitude=4.386,longitude=-8.853)
-- (xyz spherical cs:radius=10,latitude=4.597,longitude=-8.411)
-- (xyz spherical cs:radius=10,latitude=4.629,longitude=-7.476)
-- (xyz spherical cs:radius=10,latitude=4.584,longitude=-7.010)
-- (xyz spherical cs:radius=10,latitude=4.542,longitude=-6.831)
-- (xyz spherical cs:radius=10,latitude=4.376,longitude=-6.376)
-- (xyz spherical cs:radius=10,latitude=5.273,longitude=-5.568)
-- (xyz spherical cs:radius=10,latitude=5.520,longitude=-5.458)
-- (xyz spherical cs:radius=10,latitude=5.795,longitude=-5.318)
-- (xyz spherical cs:radius=10,latitude=6.065,longitude=-4.811)
-- (xyz spherical cs:radius=10,latitude=6.426,longitude=-3.964)
-- (xyz spherical cs:radius=10,latitude=5.943,longitude=-1.327)
-- (xyz spherical cs:radius=10,latitude=5.304,longitude=--2.172)
-- (xyz spherical cs:radius=10,latitude=5.150,longitude=--4.148)
-- (xyz spherical cs:radius=10,latitude=4.781,longitude=--7.266)
-- (xyz spherical cs:radius=10,latitude=5.785,longitude=--9.248)
-- (xyz spherical cs:radius=10,latitude=7.176,longitude=--11.671)
-- (xyz spherical cs:radius=10,latitude=8.180,longitude=--12.660)
-- (xyz spherical cs:radius=10,latitude=8.845,longitude=--13.111)
-- (xyz spherical cs:radius=10,latitude=9.486,longitude=--13.477)
-- (xyz spherical cs:radius=10,latitude=9.848,longitude=--13.966)
-- (xyz spherical cs:radius=10,latitude=10.690,longitude=--14.705)
-- (xyz spherical cs:radius=10,latitude=11.148,longitude=--15.275)
-- (xyz spherical cs:radius=10,latitude=11.396,longitude=--15.154)
-- (xyz spherical cs:radius=10,latitude=11.791,longitude=--15.136)
-- (xyz spherical cs:radius=10,latitude=11.878,longitude=--15.700)
-- (xyz spherical cs:radius=10,latitude=11.987,longitude=--16.026)
-- (xyz spherical cs:radius=10,latitude=12.286,longitude=--16.398)
-- (xyz spherical cs:radius=10,latitude=12.448,longitude=--16.309)
-- (xyz spherical cs:radius=10,latitude=12.985,longitude=--16.627)
-- (xyz spherical cs:radius=10,latitude=13.317,longitude=--16.033)
-- (xyz spherical cs:radius=10,latitude=13.609,longitude=--16.392)
-- (xyz spherical cs:radius=10,latitude=14.936,longitude=--16.770)
-- (xyz spherical cs:radius=10,latitude=17.861,longitude=--16.477)
-- (xyz spherical cs:radius=10,latitude=21.134,longitude=--16.925)
-- (xyz spherical cs:radius=10,latitude=23.178,longitude=--16.115)
-- (xyz spherical cs:radius=10,latitude=23.932,longitude=--15.509)
-- (xyz spherical cs:radius=10,latitude=25.862,longitude=--14.319)
-- (xyz spherical cs:radius=10,latitude=26.909,longitude=--13.618)
-- (xyz spherical cs:radius=10,latitude=28.457,longitude=--11.395)
-- (xyz spherical cs:radius=10,latitude=30.331,longitude=--10.188)
-- (xyz spherical cs:radius=10,latitude=32.732,longitude=--8.275)
-- (xyz spherical cs:radius=10,latitude=35.089,longitude=--6.288)
-- (xyz spherical cs:radius=10,latitude=35.295,longitude=--4.234)
-- (xyz spherical cs:radius=10,latitude=35.139,longitude=--2.745)
-- (xyz spherical cs:radius=10,latitude=36.496,longitude=-1.989)
-- (xyz spherical cs:radius=10,latitude=36.827,longitude=-5.041)
-- (xyz spherical cs:radius=10,latitude=37.092,longitude=-8.108)
-- (xyz spherical cs:radius=10,latitude=36.996,longitude=-10.154)
-- (xyz spherical cs:radius=10,latitude=35.891,longitude=-10.737)
-- (xyz spherical cs:radius=10,latitude=33.628,longitude=-11.297)
-- (xyz spherical cs:radius=10,latitude=32.822,longitude=-13.774)
-- (xyz spherical cs:radius=10,latitude=32.110,longitude=-14.758)
-- (xyz spherical cs:radius=10,latitude=30.896,longitude=-17.648)
-- (xyz spherical cs:radius=10,latitude=32.235,longitude=-20.592)
-- (xyz spherical cs:radius=10,latitude=32.294,longitude=-22.585)
-- (xyz spherical cs:radius=10,latitude=31.229,longitude=-27.401)
-- (xyz spherical cs:radius=10,latitude=31.473,longitude=-30.567)
-- (xyz spherical cs:radius=10,latitude=31.531,longitude=-31.919)
;
\draw (xyz spherical cs:radius=10,latitude=-38.697,longitude=-146.230)
-- (xyz spherical cs:radius=10,latitude=-38.389,longitude=-145.259)
-- (xyz spherical cs:radius=10,latitude=-38.056,longitude=-145.058)
-- (xyz spherical cs:radius=10,latitude=-38.245,longitude=-142.444)
-- (xyz spherical cs:radius=10,latitude=-36.935,longitude=-140.352)
-- (xyz spherical cs:radius=10,latitude=-36.287,longitude=-139.777)
-- (xyz spherical cs:radius=10,latitude=-35.768,longitude=-138.716)
-- (xyz spherical cs:radius=10,latitude=-34.716,longitude=-138.368)
-- (xyz spherical cs:radius=10,latitude=-35.101,longitude=-137.459)
-- (xyz spherical cs:radius=10,latitude=-34.953,longitude=-137.345)
-- (xyz spherical cs:radius=10,latitude=-34.050,longitude=-137.688)
-- (xyz spherical cs:radius=10,latitude=-33.127,longitude=-137.751)
-- (xyz spherical cs:radius=10,latitude=-34.419,longitude=-136.400)
-- (xyz spherical cs:radius=10,latitude=-34.559,longitude=-135.638)
-- (xyz spherical cs:radius=10,latitude=-33.392,longitude=-134.616)
-- (xyz spherical cs:radius=10,latitude=-32.202,longitude=-132.776)
-- (xyz spherical cs:radius=10,latitude=-32.632,longitude=-126.800)
-- (xyz spherical cs:radius=10,latitude=-33.610,longitude=-122.533)
-- (xyz spherical cs:radius=10,latitude=-34.714,longitude=-118.434)
-- (xyz spherical cs:radius=10,latitude=-34.036,longitude=-115.891)
-- (xyz spherical cs:radius=10,latitude=-32.815,longitude=-115.839)
-- (xyz spherical cs:radius=10,latitude=-30.388,longitude=-115.156)
-- (xyz spherical cs:radius=10,latitude=-27.430,longitude=-113.996)
-- (xyz spherical cs:radius=10,latitude=-26.334,longitude=-113.737)
-- (xyz spherical cs:radius=10,latitude=-26.227,longitude=-114.018)
-- (xyz spherical cs:radius=10,latitude=-23.595,longitude=-113.849)
-- (xyz spherical cs:radius=10,latitude=-22.448,longitude=-114.368)
-- (xyz spherical cs:radius=10,latitude=-21.132,longitude=-116.482)
-- (xyz spherical cs:radius=10,latitude=-20.042,longitude=-119.450)
-- (xyz spherical cs:radius=10,latitude=-18.172,longitude=-121.541)
-- (xyz spherical cs:radius=10,latitude=-17.453,longitude=-122.899)
-- (xyz spherical cs:radius=10,latitude=-17.257,longitude=-123.583)
-- (xyz spherical cs:radius=10,latitude=-16.852,longitude=-123.641)
-- (xyz spherical cs:radius=10,latitude=-16.539,longitude=-124.000)
-- (xyz spherical cs:radius=10,latitude=-16.400,longitude=-124.440)
-- (xyz spherical cs:radius=10,latitude=-16.054,longitude=-124.545)
-- (xyz spherical cs:radius=10,latitude=-15.558,longitude=-124.564)
-- (xyz spherical cs:radius=10,latitude=-15.364,longitude=-124.868)
-- (xyz spherical cs:radius=10,latitude=-15.007,longitude=-125.163)
-- (xyz spherical cs:radius=10,latitude=-14.648,longitude=-125.653)
-- (xyz spherical cs:radius=10,latitude=-14.267,longitude=-126.031)
-- (xyz spherical cs:radius=10,latitude=-14.175,longitude=-126.448)
-- (xyz spherical cs:radius=10,latitude=-13.952,longitude=-127.045)
-- (xyz spherical cs:radius=10,latitude=-14.923,longitude=-127.823)
-- (xyz spherical cs:radius=10,latitude=-15.276,longitude=-128.174)
-- (xyz spherical cs:radius=10,latitude=-14.969,longitude=-128.373)
-- (xyz spherical cs:radius=10,latitude=-15.109,longitude=-128.929)
-- (xyz spherical cs:radius=10,latitude=-15.096,longitude=-129.358)
-- (xyz spherical cs:radius=10,latitude=-14.620,longitude=-129.522)
-- (xyz spherical cs:radius=10,latitude=-13.717,longitude=-129.994)
-- (xyz spherical cs:radius=10,latitude=-12.961,longitude=-130.452)
-- (xyz spherical cs:radius=10,latitude=-12.678,longitude=-130.740)
-- (xyz spherical cs:radius=10,latitude=-12.294,longitude=-131.032)
-- (xyz spherical cs:radius=10,latitude=-12.222,longitude=-132.005)
-- (xyz spherical cs:radius=10,latitude=-11.624,longitude=-132.066)
-- (xyz spherical cs:radius=10,latitude=-11.628,longitude=-132.764)
-- (xyz spherical cs:radius=10,latitude=-11.930,longitude=-133.745)
-- (xyz spherical cs:radius=10,latitude=-12.121,longitude=-134.731)
-- (xyz spherical cs:radius=10,latitude=-12.122,longitude=-135.487)
-- (xyz spherical cs:radius=10,latitude=-12.296,longitude=-135.891)
-- (xyz spherical cs:radius=10,latitude=-12.218,longitude=-136.603)
-- (xyz spherical cs:radius=10,latitude=-12.876,longitude=-136.497)
-- (xyz spherical cs:radius=10,latitude=-13.374,longitude=-136.138)
-- (xyz spherical cs:radius=10,latitude=-15.040,longitude=-136.226)
-- (xyz spherical cs:radius=10,latitude=-16.758,longitude=-138.615)
-- (xyz spherical cs:radius=10,latitude=-16.113,longitude=-140.639)
-- (xyz spherical cs:radius=10,latitude=-13.789,longitude=-141.514)
-- (xyz spherical cs:radius=10,latitude=-12.580,longitude=-141.815)
-- (xyz spherical cs:radius=10,latitude=-11.230,longitude=-142.253)
-- (xyz spherical cs:radius=10,latitude=-13.218,longitude=-143.336)
-- (xyz spherical cs:radius=10,latitude=-14.321,longitude=-144.637)
-- (xyz spherical cs:radius=10,latitude=-16.138,longitude=-145.489)
-- (xyz spherical cs:radius=10,latitude=-18.869,longitude=-147.324)
-- (xyz spherical cs:radius=10,latitude=-21.554,longitude=-149.145)
-- (xyz spherical cs:radius=10,latitude=-22.116,longitude=-149.822)
-- (xyz spherical cs:radius=10,latitude=-22.368,longitude=-150.449)
-- (xyz spherical cs:radius=10,latitude=-23.480,longitude=-151.195)
-- (xyz spherical cs:radius=10,latitude=-26.000,longitude=-152.609)
-- (xyz spherical cs:radius=10,latitude=-29.189,longitude=-153.095)
-- (xyz spherical cs:radius=10,latitude=-31.566,longitude=-152.635)
-- (xyz spherical cs:radius=10,latitude=-33.702,longitude=-151.261)
-- (xyz spherical cs:radius=10,latitude=-35.043,longitude=-150.602)
-- (xyz spherical cs:radius=10,latitude=-37.062,longitude=-148.974)
-- (xyz spherical cs:radius=10,latitude=-37.732,longitude=-148.093)
-- (xyz spherical cs:radius=10,latitude=-38.456,longitude=-146.696)
;
\end{tikzpicture}
\end{document}
So far I could only find a solution for a parametric definition of a circle on a spherical surface, but no further approach for the case that a polygon is to be plotted. I have te boundary condition, that it has to be plotted with tikz, because it is only the start of a bigger picture.
Every help and hint is very much appreciated.
initial post
I am using tikz to create a plot of a 3D worldmap similiar to the pst-geo-package. That is because I have to use tikz (pgf) and that only as this is only one part of a larger image I want to plot consinstenly in tikz.
What I did until now is to use the package tikz-3dplot-circleofsphere to create the sphere. Based on the GSHHG I extraced the coastlines as a polygon and plot them with the package tikz-3dplot as spherical coordinates. Up till this point it all goes well.
The problem I need help with is to plot the polygons out of sight in a little different colour. In case of parametric curves solutions can be found by this thread. In case of non parametric curves like the mentioned polygon I am not able to find a working solution.
Would someone please be so kind and help me on this? Every help is very much appreciated. MWE is attached.
Edit: removed typos
Edit2: rephraising