@u444 代码要尽量给完整,不要只给一个片段,同时要放在代码块内。
注意到原图其实是想表达3D的角度,原图的展示不符合实际情况,你在评论区中给出的图又完全是2D的,也似乎不完全符合实际情况。
以下是基于luadraw的一个可能方案,可以解决「但是代码不够好看以及视角不够灵活等缺点」,需要自行安装并用lualatex编译:
\documentclass{standalone}
\usepackage[3d]{luadraw}
\usepackage[svgnames]{xcolor}
\usepackage{fourier}
\begin{document}
\begin{luadraw}{name=axis_vector}
local g = graph3d:new{
window3d={-1,9,-1,9,-1,9},
window = {-6,8,-5,8},size={12,12},
viewdir=perspective("xy",0.8,60),
pictureoptions="every node/.append style={scale=1.5}"
}
local O,delta,P = Origin,-3, M(6.5, 6, 4)
local Pxz = pxz(P)
local Px,Pz,Py = px(Pxz), pz(Pxz), py(P)
local t1, t2, t3 = M(delta, 0, P.z), M(delta,0, 0), M(delta, P.y, 0)
g:Dpolyline3d({{O, 7*vecI}, {O, 7*vecJ}, {O, 7*vecK}}, "-Stealth,solid,black, line width=1pt")
g:Dlabel3d(
"$x$", 7*vecI, {pos="N",dist=0.1},
"$y$", 7*vecJ, {pos="W"},
"$z$", 7*vecK, {pos="E"}
)
g:Dpolyline3d({{P,Py}, {P,Pxz}, {Pxz,Px}, {Pxz,t1},{O,Pxz}}, "dashed,blue,thick")
g:Dpolyline3d({{O,t2}, {Py,t3}}, "dashed,black,thick")
g:Dpolyline3d({{t1,t2}, {t2,t3}, {Pxz,Pz}}, "Stealth-Stealth,dashed,magenta,thick")
g:Dlabel3d(
"$z$", (t1+t2)/2, {pos="NW",node_options="text=magenta"},
"$y$", (t2+t3)/2, {pos="W"},
"$x$", (Pxz+Pz)/2, {pos="S"}
)
g:Dseg3d({O, P}, "-latex,PaleVioletRed,line width=4pt")
g:Dpolyline3d({{O, 2.5*vecI}, {O, 2.5*vecJ}, {O, 2.5*vecK}}, "-latex,cyan,line width=3pt")
g:Dlabel3d("$\\vec{i}$", 2.5*vecI, {pos="S",node_options="text=cyan"}, "$\\vec{j}$", 2.5*vecJ, {pos="W"}, "$\\vec{k}$", 2.5*vecK, {})
g:Ddots3d({P}, "PaleVioletRed,scale=4", 1.5)
g:Dlabel3d("$P$", P, {pos="NE"},"$\\vec{r}$", P, {pos="W",dist=0.35,node_options="text=PaleVioletRed"})
for _,i in ipairs({Px, Py, Pz}) do
g:Ddots3d({i}, "blue", 1.5)
end
local configs = {
{pt=Px, col="blue"},
{pt=Py, col="green"},
{pt=Pz, col="violet"}
}
for _, item in ipairs(configs) do
g:Dpath3d({item.pt, O, P, 3.75, 1, "ca", O, "l"}, "draw=none,opacity=0.2,fill=" .. item.col)
g:Darc3d(item.pt, O, P, 3.75, 1, "-Stealth,thick," .. item.col .. ",ultra thick")
end
g:Dlabel(
"$\\alpha$",Z(3.25,1), {node_options="text=blue"},
"$\\beta$", Z(1.5,3), {node_options="text=green"},
"$\\gamma$", Z(0.5,-1.2), {node_options="text=violet"}
)
g:Show()
\end{luadraw}
\end{document}




















问 请问 Tikz 如何画出矢量和三个坐标轴的夹角?