PSTricks 3D 도면 - 매개변수 조정

PSTricks 3D 도면 - 매개변수 조정

다음 코드를 고려해보세요.

\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

  1. 지면과 평행한 선의 소실점은 눈높이에 있으므로 개체 z의 위치는 의 값 point과 동일해야 합니다 .zviewpoint
  2. 수평 각도를 가리키는 선의 소실점은 theta에 있습니다. x=tan(theta)*yv + xv여기서 yv및 는 의 및 구성 요소 xv입니다 .xyviewpoint
  3. 소실점은 에 있는 수평선에 있습니다 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}

관련 정보