다음 코드를 고려해보세요.
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\psset{viewpoint = 15 -30 11, Decran = 10}
\begin{pspicture}[solidmemory](-8.25,-1)(5.3,2.05)
\psSolid[object = point, args = 15.5 3 7.3, name = L]
\psSolid[object = point, args = -55 2 3.5, name = R]
\psSolid[object = line, linecolor = red!50, linestyle = dashed, linewidth = 2pt, args = R L]
\psSolid[object = parallelepiped, a = 6.0, b = 6.0, c = 6.5, RotZ = -15, fillcolor = blue!50, name = parallelepipedum, action = draw*](0 0 1.5)
\multido{\iA = 0+1}{8}{%
\psSolid[object = point, linecolor = black, definition = solidgetsommet, args = parallelepipedum \iA, name = C\iA]
\psset{object = line, linecolor = darkgray!50, linestyle = dotted}
\psSolid[args = L C\iA]
\psSolid[args = R C\iA]
}
\psSolid[object = parallelepiped, a = 6.0, b = 6.0, c = 6.5, RotZ = -15, name = parallelipipidum, action = draw](0 0 1.5)
\multido{\iB = 0+1}{4}{%
\psSolid[object = point, definition = solidgetsommet, args = parallelipipidum \iB, name = Top\iB, action = none]
}
\psSolid[object = line, args = Top0 Top2]
\psSolid[object = line, args = Top1 Top3]
\psSolid[object = point, definition = solidcentreface, args = parallelipipidum 0]
\end{pspicture}
\end{document}
회색 점선의 각 쌍이 서로 완벽하게 겹쳐지도록 매개변수를 조정하는 데 도움을 줄 수 있는 사람이 있습니까?
나는 오랫동안 노력했지만 어둠 속에 있습니다.:(
문제의 매개변수는 args = 15.5 3 7.3
, args = -55 2 3.5
및 입니다 a = 6.0, b = 6.0, c = 6.5, RotZ = -15
. ( a
, b
, c
및 의 값은 RotZ
두 개체에 대해 동일해야 합니다.)
답변1
- 지면과 평행한 선의 소실점은 눈높이에 있으므로 개체
z
의 위치는 의 값point
과 동일해야 합니다 .z
viewpoint
- 수평 각도를 가리키는 선의 소실점은
theta
에 있습니다.x=tan(theta)*yv + xv
여기서yv
및 는 의 및 구성 요소xv
입니다 .x
y
viewpoint
- 소실점은 에 있는 수평선에 있습니다
y=0
.
따라서 의 관점 15 -30 11
과 직육면체의 회전에 대해 -15 degrees
소실점은 23.04 0 11
및 에 있습니다 -96.96 0 11
.
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\psset{viewpoint = 15 -30 11, Decran = 6}
\begin{pspicture}[solidmemory](-8.25,-1)(5.3,2.05)
\psSolid[object = point, args = 23.04 0 11, name = L]
\psSolid[object = point, args = -96.96 0 11, name = R]
\psSolid[object = line, linecolor = red!50, linestyle = dashed, linewidth = 2pt, args = R L]
\psSolid[object = parallelepiped, a = 8.0, b = 8.0, c = 8.5, RotZ = -15, fillcolor = blue!50, name = parallelepipedum, action = draw*](0 0 1.5)
\multido{\iA = 0+1}{8}{%
\psSolid[object = point, linecolor = black, definition = solidgetsommet, args = parallelepipedum \iA, name = C\iA]
\psset{object = line, linecolor = darkgray!50, linestyle = dotted}
\psSolid[args = L C\iA]
\psSolid[args = R C\iA]
}
\psSolid[object = parallelepiped, a = 8.0, b = 8.0, c = 8.5, RotZ = -15, name = parallelipipidum, action = draw](0 0 1.5)
\multido{\iB = 0+1}{4}{%
\psSolid[object = point, definition = solidgetsommet, args = parallelipipidum \iB, name = Top\iB, action = none]
}
\psSolid[object = line, args = Top0 Top2]
\psSolid[object = line, args = Top1 Top3]
\psSolid[object = point, definition = solidcentreface, args = parallelipipidum 0]
\end{pspicture}
\end{document}