如何使用 pgfplots 根据先前定义的坐标创建 3d 补丁图

如何使用 pgfplots 根据先前定义的坐标创建 3d 补丁图

我想在轴环境中用先前定义的坐标绘制 3d 面片图。

这是一个虚拟示例来说明我想要做的事情:

\begin{figure}
    \begin{tikzpicture}
        \begin{axis}
        \coordinate (a) at (0, 0, 0);
        \coordinate (b) at (1, 0, 0);
        \coordinate (c) at (0, 1, 0);
        \addplot3 [patch,table/row sep=\\,patch table={
        0 1 2\\
        }] table {
        0 0 0\\ % I would like to extract (a) coordinates here instead
        1 0 0\\ % (b) here
        0 1 0\\ % (c) here
        };
        \end{axis}
    \end{tikzpicture}
\end{figure}

我想要这样做的原因是我打算在 3d 面片图中使用的坐标是在一些复杂的宏中以编程方式定义的。

答案1

由于无法正常完成,您可能需要考虑查看sagetex软件包和文档这里可以处理。该软件包为您提供了一个名为 Sage 的计算机代数系统,并可以访问 Python 编程语言。编译分为 3 步。第一次运行 LaTeX 时必须没有问题。下次运行 Sage。最后一步是将 Sage 的结果/计算放入文档中。由于您的代码依赖于 Sage 必须使用的坐标,因此输出将放入字符串中。第一遍将是一个空文档。第二遍使用 Sage 获取您想要的坐标。它创建一个字符串,即您想要的图片代码。处理的最后一步是将字符串放入文档中,从而得到图片。在下面的代码中,%d是整数的占位符;%f是浮点数,%s是字符串。代码的这部分%(c1[0],c1[1],c1[2])告诉 Sage 在%d它之前的 3 个参数中是什么。是原始字符串,它让我们可以毫无问题地r""使用有问题的文本,例如。\

\documentclass[11pt,border=1mm]{article}
\usepackage{sagetex,tikz,pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{sagesilent}
def MyPatch(c1,c2,c3):
    output = r""
    output += r"\begin{figure}"
    output += r"\begin{tikzpicture}"
    output += r"\begin{axis}"
    output += r"\coordinate (a) at (%d, %d, %d);"%(c1[0],c1[1],c1[2])
    output += r"\coordinate (b) at (%d, %d, %d);"%(c2[0],c2[1],c2[2])
    output += r"\coordinate (c) at (%d, %d, %d);"%(c3[0],c3[1],c3[2])
    output += r"\addplot3 [patch,table/row sep=\\,patch table={"
    output += r"0 1 2\\"
    output += r"}] table {"
    output += r"%d %d %d\\"%(c1[0],c1[1],c1[2])
    output += r"%d %d %d\\"%(c2[0],c2[1],c2[2])
    output += r"%d %d %d\\"%(c3[0],c3[1],c3[2])
    output += r"};"
    output += r"\end{axis}"
    output += r"\end{tikzpicture}"
    output += r"\end{figure}"

    return output

a1=[0,0,0]
a2=[1,0,0]
a3=[0,1,0]
pic = MyPatch(a1,a2,a3)
\end{sagesilent}
\sagestr{pic}
\end{document}

在此处输入图片描述

代码设置定义了一个函数来处理您的问题。您可以将a1a2、更改a3为其他坐标(每个分量一个整数)重新编译并获取更新的图片。

智者不属于 LaTeX 发行版。最简单的入门方法是通过免费的可钙帐户。通过将 Sage 下载到您的计算机并使其与您的 LaTeX 发行版配合使用,可以避免这种情况。这可能很容易,但在某些情况下也可能很困难。使用 Cocalc,您可以在 5 分钟内启动并运行。

相关内容