渐近线方法

渐近线方法

我需要在其中绘制 3D RGB 立方体asymptote

我能找到一个例子吗?我在这里看到了一些例子http://www.piprime.fr/files/asymptote/odoc/index.html,但我无法想象如何绘制 RGB 立方体。(下图只是一个例子。我需要一个 3d 模型,我可以将其转换为 pdf 文件)

在此处输入图片描述

答案1

渐近线方法

我画了三张脸。希望你能完成剩下的。

import three;

int n=5;
int L=5;

for (int i=0;i<=n;++i){
    for (int j=0;j<=n;++j){
        pen p=rgb(i/n,j/n,0);
        path3 q=scale3(L/n)*shift(i,j,0)*plane((1,0,0),(0,1,0),(0,0,0));
        draw(surface(q),p,nolight);
    }
}

for (int i=0;i<=n;++i){
    for (int j=0;j<=n;++j){
        pen p=rgb(i/n,0,j/n);
        path3 q=scale3(L/n)*shift(i,0,j)*plane((1,0,0),(0,0,1),(0,0,0));
        draw(surface(q),p,nolight);
    }
}

for (int i=0;i<=n;++i){
    for (int j=0;j<=n;++j){
        pen p=rgb(0,i/n,j/n);
        path3 q=scale3(L/n)*shift(0,i,j)*plane((0,1,0),(0,0,1),(0,0,0));
        draw(surface(q),p,nolight);
    }
}

pgfplots 方法

说实话,我不知道 Asymptote 是否可以做到这一点。但肯定可以使用的补丁。

\documentclass[border=9,tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\definecolor{000}{rgb}{0,0,0}
\definecolor{001}{rgb}{0,0,1}
\definecolor{010}{rgb}{0,1,0}
\definecolor{011}{rgb}{0,1,1}
\definecolor{100}{rgb}{1,0,0}
\definecolor{101}{rgb}{1,0,1}
\definecolor{110}{rgb}{1,1,0}
\definecolor{111}{rgb}{1,1,1}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[axis equal]
            \addplot3[surf,shader=interp,patch,patch type=rectangle,mesh/color input=explicit]
                coordinates{
                    (0,-.01,1)[color=001](1,-.01,1)[color=101]
                    (1,-.01,0)[color=100](0,-.01,0)[color=000]

                    (1.01,0,1)[color=101](1.01,1,1)[color=111]
                    (1.01,1,0)[color=110](1.01,0,0)[color=100]

                    (0,1,1.01)[color=011](1,1,1.01)[color=111]
                    (1,0,1.01)[color=101](0,0,1.01)[color=001]
                }
            ;
        \end{axis}
    \end{tikzpicture}
\end{document}

答案2

我的另一个解决方案

        import three;
        size(500);

        draw(surface((0,0,0)--(0,1,0)--(1,1,0)--(1,0,0)--cycle, new pen[] {black,blue,cyan,green}));
        draw(surface((1,1,0)--(0,1,0)--(0,1,1)--(1,1,1)--cycle, new pen[] {cyan,blue,magenta,white}));
        draw(surface((0,0,1)--(0,1,1)--(0,1,0)--(0,0,0)--cycle, new pen[] {red,magenta,blue,black}));
        draw(surface((0,0,1)--(0,1,1)--(1,1,1)--(1,0,1)--cycle, new pen[] {red,magenta,white,yellow}));
        draw(surface((1,0,1)--(0,0,1)--(0,0,0)--(1,0,0)--cycle, new pen[] {yellow,red,black,green}));
        draw(surface((1,0,1)--(1,1,1)--(1,1,0)--(1,0,0)--cycle, new pen[] {yellow,white,cyan,green}));

相关内容