1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
\documentclass[tikz]{standalone}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{lmodern}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows}
\usetikzlibrary{intersections}
\usetikzlibrary{math}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{shapes.misc}
\usetikzlibrary{calc}
\begin{document}
\tdplotsetmaincoords{60}{130}
\pgfmathsetmacro{\l}{2}
\begin{tikzpicture}[
>=latex,
tdplot_main_coords,
dot/.style = {
black, fill = black, circle,
outer sep = 0, inner sep = 0,
minimum size = .8mm
},
round/.style = {
draw = orange, thick, circle,
minimum size = 1mm,
inner sep = 0pt, outer sep = 0pt,
},
cross/.style = {
cross out, draw = magenta, thick,
minimum size = 1mm,
inner sep = 0pt, outer sep = 0pt
},
]
% origin
\coordinate (O) at (0,0,0);
% poles
\coordinate (NP) at (0,0,\l);
\coordinate (SP) at (0,0,-\l);
% \draw (SP) node[dot, gray] {};
% \draw (NP) node[dot, gray] {};
% gray unit circle
\tdplotdrawarc[gray]{(O)}{\l}{0}{360}{}{};
\draw[gray, dashed] (-\l, 0, 0) to (\l, 0, 0);
\draw[gray, dashed] (0, -\l, 0) to (0, \l, 0);
% axis
\draw[->] (O) -- ++(1.25*\l,0,0) node[left] {\(\mathbf{\hat{x}}\)};
\draw[->] (O) -- ++(0,1.25*\l,0) node[right] {\(\mathbf{\hat{y}}\)};
\draw[->] (O) -- ++(0,0,1.25*\l) node[above] {\(\mathbf{\hat{z}}\)};
% meridians
\foreach \phi in {0, 30, 60, ..., 150}{
\tdplotsetrotatedcoords{\phi}{90}{0};
\tdplotdrawarc[lightgray, densely dotted, tdplot_rotated_coords]{(O)}{\l}{0}{360}{}{};
}
% dot above and its projection
\pgfmathsetmacro{\phi}{120}
\pgfmathsetmacro{\theta}{40}
\pgfmathsetmacro{\px}{cos(\phi)*sin(\theta)*\l}
\pgfmathsetmacro{\py}{sin(\phi)*sin(\theta)*\l}
\pgfmathsetmacro{\pz}{cos(\theta)*\l})
% point A
\coordinate (A) at (\px,\py,\pz);
\coordinate (Ap) at (\px,\py, 0);
% lines
\draw[red!80!black, ->] (O) -- (A);
\draw[red!80!black, densely dashed] (O) -- (Ap) -- (A)
node[above right] {\(\mathbf{\hat{r}}\)};
% arcs
\tdplotdrawarc[blue!80!black, ->]{(O)}{.8\l}{0}{\phi}{}{};
\node[below right, blue!80!black] at (.8\l,0,0) {\(\bm{\hat{\varphi}}\)};
\tdplotsetrotatedcoords{\phi-90}{-90}{0};
\tdplotdrawarc[blue!80!black, ->, tdplot_rotated_coords]{(O)}{.95\l}{0}{\theta}{}{};
\node[above right = 1mm, blue!80!black] at (0,0,.8\l) {\(\bm{\hat{\vartheta}}\)};
% dots
\draw (O) node[dot] {};
\draw (A) node[dot, fill = red!80!black] {};
\end{tikzpicture}
\end{document}
% vim:ts=2 sw=2 et:
|