我找到了一张庞加莱球图。我需要提交一个尽可能与图中相似的时间表。需要
每个球体延伸轴,
在剖面上画一个圆弧,
做出正确的预测,
使圆弧的可见部分成为实线,
正确设置角落并签名。
到目前为止已经成功实现了这一点:
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows,calc,math,angles,quotes}
\usepackage{blochsphere}
\usepackage{braket}
\begin{document}
%%%% Измените эти параметры, чтобы изменить положение P или размер / вращение сферы.
\def\rotationSphere{-100}
\def\radiusSphere{2cm}
\def\psiLat{60} % Повород вектора по элевации
\def\psiLon{45} % Повород вектора по азимуту
\begin{blochsphere}[radius=\radiusSphere,opacity=0,rotation=\rotationSphere]
% \drawBallGrid[style={opacity=.3}]{30}{45} % Рисует медианы и параллели
% Рисуем сферу:
\drawLongitudeCircle[]{\rotationSphere} % нарисуйте долготу, которая смотрит на нас, чтобы ограничить сферу
% Рисуем экватор:
\drawLatitudeCircle[style={dashed}]{0}
% Определите различные точки на шариковой сфере
\labelLatLon{ket0}{90}{0}; % точка Z
\labelLatLon{ket1}{-90}{0};
\labelLatLon{ketminus}{0}{180};
\labelLatLon{ketplus}{00}{0}; % точка x
\labelLatLon{ketpluspi2}{0}{-90}; % Долгота, кажется, определена в "неправильном" направлении, отсюда минус
\labelLatLon{ketplus3pi2}{0}{-270};
\labelLatLon{psi}{\psiLat}{-\psiLon};
% Рисуем и подписываем оси:
%\draw[-latex] (0,0) -- (ket0) node[above,inner sep=.5mm] at (ket0) {\footnotesize $z$};
\draw[-latex] (0,0) -- (ket0) node[above,inner sep=.5mm] at (ket0) {\footnotesize $z$};
\draw[-latex] (0,0) -- (ketplus) node[below,inner sep=.5mm] at (ketplus) {\footnotesize$x$};
\draw[-latex] (0,0) -- (ketpluspi2) node[below,inner sep=.5mm] at (ketpluspi2) {\footnotesize $y$};
%\draw (-2,0) arc (180:360:2 and 0.6); % Нарисовать переднюю часть сферы.
%\draw[dashed] (2,0) arc (0:180:2 and 0.6);
\fill[fill=black] (0,0) circle (1pt);
% Draw |psi>
\draw[-latex] (0,0) -- (psi) node[above]{\footnotesize $P$};
% Draw the angles
\coordinate (origin) at (0,0);
{
% Will draw the angle/projection one the equatorial plane
\setDrawingPlane{0}{0}
% Draw the projection: cos is used to compute the length of the projection
\draw[current plane,dashed] (0,0) -- (-90+\psiLon:{cos(\psiLat)*\radiusSphere}) coordinate (psiProjectedEquat) -- (psi);
% Draw the angle
\pic[current plane, draw,fill=orange!50,fill opacity=.5, text opacity=1,"\footnotesize $\phi$", angle eccentricity=2.2]{angle=ketplus--origin--psiProjectedEquat};
}
{ \setLongitudinalDrawingPlane{\psiLon}
% Draw the angle
\pic[current plane, draw,fill=orange!50,fill opacity=.5, text opacity=1,"\footnotesize $\theta$", angle eccentricity=1.5]{angle=psi--origin--ket0};
}
\end{blochsphere}
\end{document}
答案1
嗯,我不知道你到底需要什么,但你可以继续这样做:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles,quotes}
\usepackage{blochsphere}
\begin{document}
%%%% Измените эти параметры, чтобы изменить положение P или размер / вращение сферы.
\def\rotationSphere{-100}
\def\radiusSphere{2cm}
\def\psiLat{60} % Повород вектора по элевации
\def\psiLon{45} % Повород вектора по азимуту
\begin{blochsphere}[radius=\radiusSphere,opacity=0,rotation=\rotationSphere]
% \drawBallGrid[style={opacity=.3}]{30}{45} % Рисует медианы и параллели
% Рисуем сферу:
\drawLongitudeCircle[]{\rotationSphere} % нарисуйте долготу, которая смотрит на нас, чтобы ограничить сферу
% Рисуем экватор:
% \drawLatitudeCircle[style={dashed}]{0}
{ \setDrawingPlane{0}{0}
}
% Определите различные точки на шариковой сфере
\labelLatLon{ket0}{90}{0}; % точка Z
\labelLatLon{ket1}{-90}{0};
\labelLatLon{ketminus}{0}{180};
\labelLatLon{ketplus}{0}{0}; % точка x
\labelLatLon{ketpluspi2}{0}{-90}; % Долгота, кажется, определена в "неправильном" направлении, отсюда минус
\labelLatLon{ketplus3pi2}{0}{-270};
\labelLatLon{psi}{\psiLat}{-\psiLon};
% Рисуем и подписываем оси:
\draw[-latex, shorten >=-.5cm] (0,0) -- (ket0) node[above right] {\footnotesize $z$};
\draw[-latex, shorten >=-.5cm] (0,0) -- (ketplus) node[below right] {\footnotesize$x$};
\draw[-latex, shorten >=-.5cm] (0,0) -- (ketpluspi2) node[below right] {\footnotesize $y$};
%\draw (-2,0) arc (180:360:2 and 0.6); % Нарисовать переднюю часть сферы.
%\draw[dashed] (2,0) arc (0:180:2 and 0.6);
\fill[fill=black] (0,0) circle (1pt);
% Draw |psi>
\draw[-latex] (0,0) -- (psi) node[above]{\footnotesize $P$};
% Draw the angles
\coordinate (origin) at (0,0);
{
% Will draw the angle/projection one the equatorial plane
\setDrawingPlane{0}{0}
% Draw the projection: cos is used to compute the length of the projection
\draw[current plane,dashed] (0,0) -- (-90+\psiLon:{cos(\psiLat)*\radiusSphere}) coordinate (psiProjectedEquat) -- (psi);
% Draw the angle
\pic[current plane, draw,fill=orange!50,fill opacity=.5, text opacity=1,"\footnotesize $\psi$", angle eccentricity=2.2]{angle=ketplus--origin--psiProjectedEquat};
% Custom latitude circle
\draw[current plane, dashed, red] (0:2) arc (0:180:2);
\draw[current plane, red] (180:2) arc (180:360:2);
}
{ \setLongitudinalDrawingPlane{\psiLon}
% Arc on psi pane
\draw[current plane,red] (0:2) arc (0:90:2);
\draw[current plane,densely dashed,red] (psi) -- (psi -| 0,0);
% Draw the angle
\pic[current plane, draw,fill=orange!50,fill opacity=.5, text opacity=1,"\footnotesize $\theta$", angle eccentricity=1.5]{angle=psi--origin--ket0};
}
\end{blochsphere}
\end{document}
我用红色标记了添加的路径,并将你的序言精简为这个例子真正需要的内容。