漸近線方法

漸近線方法

我需要在 中繪製 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}));

相關內容