![TikZ:带有 Bloch Sphere 的 Z 索引](https://linux22.com/image/399981/TikZ%EF%BC%9A%E5%B8%A6%E6%9C%89%20Bloch%20Sphere%20%E7%9A%84%20Z%20%E7%B4%A2%E5%BC%95.png)
这是关于这。我改进了发布的答案,但仍然不完全满意。我的输出现在如下所示:
期望的(经过 Photoshop 处理的)输出是:
提前致谢!
\documentclass[border= 5pt]{standalone}
\usepackage{blochsphere} % also loads tikz package
\usepackage{tikz-3dplot}
\begin{document}
\begin{blochsphere}[ radius = 1.5 cm, tilt = 15, rotation = -45, opacity = 0.20]
% Drawing the equatorial plane
\tdplotsetmaincoords{105}{45}
\tdplotsetrotatedcoords{0}{0}{0}
% Red half (the problem is here)
\begin{scope}[tdplot_main_coords,canvas is xy plane at z=0,on layer=back]
\fill[red!40,opacity=0.5](-2.5,-2.5)--(-135:1.5)arc(-135:45:1.5)--(2.5,2.5)--(6,-6);
\end{scope}
% Draw the sphere and grid
\drawBallGrid[style={opacity=0.5, color = blue, loosely dashed}]{180}{180}
% Axes (X, Y, Z)
\drawStatePolar[axisarrow = true, statewidth = 0.5, scale = 1.50]{x}{90}{90}
\drawStatePolar[axisarrow = true, statewidth = 0.5, scale = 1.50]{y}{90}{00}
\drawStatePolar[axisarrow = true, statewidth = 0.5, scale = 1.15]{z}{00}{00}
% Blue half
\begin{scope}[tdplot_main_coords,canvas is xy plane at z=0,on layer=front]
\fill[blue!40,opacity=0.5](-2.5,-2.5)--(225:1.5)arc(225:45:1.5)--(2.5,2.5)--(-6,6);
\end{scope}
\end{blochsphere}
\end{document}
答案1
您可以reverseclip
使用这里我不会扭曲正方形,而只会改变坐标。
\documentclass[border= 5pt]{standalone}
\usepackage{blochsphere} % also loads tikz package
\usepackage{tikz-3dplot}
\tikzset{reverseclip/.style={insert path={(current bounding box.south west) rectangle
(current bounding box.north east)} }}
\begin{document}
\begin{blochsphere}[ radius = 1.5 cm, tilt = 15, rotation = -45, opacity = 0.20]
% Drawing the equatorial plane
\tdplotsetmaincoords{105}{45}
\tdplotsetrotatedcoords{0}{0}{0}
\begin{scope}[tdplot_main_coords,canvas is xy plane at z=0]
\path (-3.5,-3.5) rectangle (3.5,3.5);
\end{scope}
\begin{scope}[tdplot_screen_coords]
\clip (0,0) circle[radius=1.5cm] [reverseclip];
\begin{scope}[tdplot_main_coords,canvas is xy plane at z=0]
\fill[red!40,opacity=0.5](-3.5,-3.5)--(3.5,3.5) -- (3.5,-3.5);
\end{scope}
\end{scope}
% Draw the sphere and grid
\drawBallGrid[style={opacity=0.5, color = blue, loosely dashed}]{180}{180}
% Axes (X, Y, Z)
\drawStatePolar[axisarrow = true, statewidth = 0.5, scale = 1.50]{x}{90}{90}
\drawStatePolar[axisarrow = true, statewidth = 0.5, scale = 1.50]{y}{90}{00}
\drawStatePolar[axisarrow = true, statewidth = 0.5, scale = 1.15]{z}{00}{00}
% Blue half
\begin{scope}[tdplot_main_coords,canvas is xy plane at z=0,on layer=front]
\fill[blue!40,opacity=0.5](-3.5,-3.5)--(225:1.5)arc(225:45:1.5)--(3.5,3.5)
-- (-3.5,3.5);
\end{scope}
\end{blochsphere}
\end{document}