在立方体的各面上绘制透视图

在立方体的各面上绘制透视图

我正在寻找一种解决方案,可以在立方体的表面上(或具有透视的类似 3d 平面)进行绘制,最好使用tikz。基础知识在Tikz:使用 png 图像纹理立方体表面但这并不能解决图像扭曲的问题。我 100% 肯定,我在网上看到过这样的解决方案,95% 是在 SE 上,一张脸上有 Tux,但我再也找不到了,因此如果你能引导我找到这个问题或解决方案,那就太好了!

答案1

这只是为了澄清问题。透视投影和正交投影之间是有区别的。对于后者,将图片投影到立方体上几乎是微不足道的。

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{perspective,3d}
\tikzset{pics/perspective cuboid/.style={code={
    \tikzset{perspective cuboid/.cd,#1}%
    \def\pv##1{\pgfkeysvalueof{/tikz/perspective cuboid/##1}}% 
    \draw (tpp cs:x=-\pv{a},y=-\pv{a},z=-\pv{a})
     -- (tpp cs:x=\pv{a},y=-\pv{a},z=-\pv{a})
     -- (tpp cs:x=\pv{a},y=\pv{a},z=-\pv{a})
     -- (tpp cs:x=-\pv{a},y=\pv{a},z=-\pv{a}) -- cycle
     (tpp cs:x=-\pv{a},y=-\pv{a},z=\pv{a}) edge (tpp cs:x=-\pv{a},y=-\pv{a},z=-\pv{a})
     -- (tpp cs:x=\pv{a},y=-\pv{a},z=\pv{a}) edge (tpp cs:x=\pv{a},y=-\pv{a},z=-\pv{a})
     -- (tpp cs:x=\pv{a},y=\pv{a},z=\pv{a}) edge (tpp cs:x=\pv{a},y=\pv{a},z=-\pv{a})
     -- (tpp cs:x=-\pv{a},y=\pv{a},z=\pv{a}) edge (tpp cs:x=-\pv{a},y=\pv{a},z=-\pv{a})     
     -- cycle;     
    }},perspective cuboid/.cd,a/.initial=1}
\begin{document}
\begin{tikzpicture}[3d view,perspective]
  \pic{perspective cuboid};
\end{tikzpicture}

\begin{tikzpicture}[3d view]
  \pic{perspective cuboid};
  \begin{scope}[canvas is xz plane at y=-1,transform shape]
   \node{\includegraphics[width=2cm,height=2cm]{example-image-duck}};
  \end{scope}
\end{tikzpicture}

\end{document}

在此处输入图片描述

可以使用库将图像投影到第一个立方体的面上,该立方体以透视投影方式绘制perspective?是的,可以。一些相关帖子如下

如您所见,它们都不是微不足道的,对于复杂的图像,编译将需要一段时间。因此,我恳请您将问题说得更精确一些,这样就不会有人花大量时间去做这件事,结果却听到“哦,这不是我想要的”。

相关内容