我画了两个棱柱,代码设置高度一样,但是输出结果不一样,这是为什么?
\documentclass{standalone}
\usepackage[3d]{luadraw}
\usepackage[svgnames]{xcolor}
\begin{document}
\begin{luadraw}{name=prism}
local ld = luadraw
local pt3d = ld.pt3d
local M,Mc=pt3d.M,pt3d.Mc
local g = ld.graph3d:new{
window={-2,5,-1,7},
bbox=false,
viewdir={"yz",0.5,45}
}
local A,B,C=Mc(1,-120*ld.deg,0),Mc(1,0*ld.deg,0), Mc(1,120*ld.deg,0)
local base={A,B,C}
local prism = ld.prism(base, M(2,0,3))
g:Dpoly(prism,{mode=ld.mWireframe,hiddenstyle="dashed"})
local A1,B1,C1=A+M(2,0,3),B+M(2,0,3),C+M(2,0,3)
local base1={A1,B1,C1}
local prism1 = ld.prism(base1, M(-2,0,3))
g:Dpoly(prism1,{mode=ld.mWireframe,hiddenstyle="dashed"})
local V = prism.vertices
g:Dlabel3d("$A$",V[1],{pos="W", node_options="xshift=-0cm"})
g:Dlabel3d("$B$",V[2],{pos="S", node_options="xshift=0cm"})
g:Dlabel3d("$C$",V[3],{pos="E", node_options="xshift=0cm"})
g:Dlabel3d("$A_1$",V[4],{pos="W",node_options="xshift=0cm"})
g:Dlabel3d("$B_1$", V[5],{pos="SE"})
g:Dlabel3d("$C_1$", V[6],{pos="E"})
g:Show()
\end{luadraw}
\end{document}
上面的答案是正确的,我们可以考虑调整角度来说明这一点,下面的代码使用与z轴成90度的「平行方向」来看这个几何体,我们可以看到他们是「对称等高」的:
\documentclass[border=5pt]{standalone}
\usepackage[3d]{luadraw}
\usepackage[svgnames]{xcolor}
\begin{document}
\begin{luadraw}{name=prism}
local ld = luadraw
local pt3d = ld.pt3d
local Origin, vecK = pt3d.Origin, pt3d.vecK
local M,Mc=pt3d.M,pt3d.Mc
local g = ld.graph3d:new{
window3d={-5,5,-5,5,-5,5},
window={-5,5,-5,5},
bbox=false,
-- adjust2d = true,
viewdir={"yz",0.5,45}
}
local A1,B1,C1=Mc(1,-120*ld.deg,0),Mc(1,0,0), Mc(1,120*ld.deg,0)
local prism1 = ld.prism({A1,B1,C1}, M(-2,0,3))
g:Dpoly(prism1,{mode=ld.mWireframe,hiddenstyle="dashed"})
local prism = ld.sym3d(prism1, {Origin,vecK})
g:Dpoly(prism,{mode=ld.mWireframe,hiddenstyle="dashed"})
local V = prism.vertices
g:Dlabel3d(
"$A$",V[1],{pos="W"},
"$B$",V[2],{pos="S"},
"$C$",V[3],{pos="E"},
"$A_1$",V[4],{pos="W"},
"$B_1$", V[5],{pos="SE"},
"$C_1$", V[6],{pos="E"}
)
g:Show()
\end{luadraw}
\end{document}
另外,如果我是你,我可能不会考虑这样的构造,我会想办法让「两个棱柱相交的那个面」在「xoy平面」上:
\documentclass[border=5pt]{standalone}
\usepackage[3d]{luadraw}
\usepackage[svgnames]{xcolor}
\usepackage{fourier-otf}
\begin{document}
\begin{luadraw}{name=prism}
local ld = luadraw
local pt3d = ld.pt3d
local Origin, vecK = pt3d.Origin, pt3d.vecK
local M,Mc=pt3d.M,pt3d.Mc
local g = ld.graph3d:new{
window3d={-5,5,-5,5,-5,5},
window={-5,5,-5,5},
bbox=false,
-- adjust2d = true,
viewdir={"yz",0.5,45}
}
local A1,B1,C1=Mc(1,-120*ld.deg,0),Mc(1,0,0), Mc(1,120*ld.deg,0)
local prism1 = ld.prism({A1,B1,C1}, M(-2,0,3))
g:Dpoly(prism1,{mode=ld.mWireframe,hiddenstyle="dashed"})
local prism = ld.sym3d(prism1, {Origin,vecK})
g:Dpoly(prism,{mode=ld.mWireframe,hiddenstyle="dashed"})
local V = prism.vertices
g:Dlabel3d(
"$A_1$",V[1],{pos="W"},
"$B_1$", V[2],{pos="SE"},
"$C_1$", V[3],{pos="E"},
"$A$",V[4],{pos="W"},
"$B$",V[5],{pos="S"},
"$C$",V[6],{pos="E"}
)
g:Show()
\end{luadraw}
\end{document}
我对你的代码做了一下简化:
0*ld.deg 这里的0就没必要乘了node_options="xshift=-0cm" 默认就不移动,不需要这么改,一般改距离可以直接用dist=0.1g:Dlabel3d一个命令可以同时画六个点的坐标ld.sym3d,这可以简化你的不少坐标...