Dibujo 3D de PSTricks: ajuste de parámetros

Dibujo 3D de PSTricks: ajuste de parámetros

Considere el siguiente código:

\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}

producción

¿Alguien puede ayudarme a modificar los parámetros para que cada par de líneas grises discontinuas queden perfectamente una encima de la otra?

Lo he intentado durante mucho tiempo pero estoy en la oscuridad.:(

Debo señalar que los parámetros en cuestión son args = 15.5 3 7.3, args = -55 2 3.5y a = 6.0, b = 6.0, c = 6.5, RotZ = -15. (Los valores de a, b, cy RotZdeben ser los mismos para los dos objetos).

Respuesta1

  1. Los puntos de fuga de las líneas paralelas al suelo se encuentran al nivel de los ojos, por lo que la zposición de los pointobjetos debe ser igual al zvalor de viewpoint.
  2. Los puntos de fuga de las líneas que apuntan en un ángulo horizontal thetase encuentran en x=tan(theta)*yv + xv, donde yvy xvson los componentes xy yde viewpoint.
  3. Los puntos de fuga se encuentran en la línea del horizonte, que está en y=0.

Entonces, para un punto de vista 15 -30 11y una rotación del cuboide de -15 degrees, los puntos de fuga se encuentran en 23.04 0 11y -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}

información relacionada