Рассмотрим следующий код:
\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}