如何在 Octave 中绘制隐式曲面?
How to plot an implicit surface in Octave?
我可以使用 fimplicit3 命令在 MATLAB 上绘制隐式曲面 (x^8)(y^2)(z^6) = 0,但我做不到在 Octave 中找到类似的命令。
本着MATLAB和Octave兼容的印象,我将同样的行复制粘贴到Octave中,结果返回了一条错误信息:
"error: 'fimplicit3' undefined near line 1 column 1".
如何在 Octave 上绘制它?
您可以使用 meshX
或 surfX
函数之一绘制曲面
https://www.gnu.org/software/octave/doc/interpreter/Three_002dDimensional-Plots.html
不是等价的函数,但如果您只是想想象由这样的等式 定义的对象在 space 中看起来 的样子,您可以简单地创建一个点网格,并在 0 处获得等值面。即使对于低分辨率网格,这应该也能正常工作。
例如,使用 matlab's fimplicit3 documentation page 中显示的相同示例,即等式:
,在区间 [-5, 5] 中定义 x、y 和 z,我们有:
[x, y, z] = ndgrid(-5:1:5, -5:1:5, -5:1:5);
F = x.^2 + y.^2 - z.^2;
isosurface(F, 0);
您可以玩弄等值面对象的属性,或将其包裹在 patch
对象中,引入 isonormals
,使用 plot3
在顶部绘制曲率线,等等. 事实上,如果这就是 fimplicit3
在 matlab 中所做的事情,我不会感到惊讶。
PS:我使用了 matlab 的示例而不是你的示例,因为你的示例看起来有点微不足道:只要任何单个变量为零,它就微不足道为零。所以它基本上是三个零平面相交。不确定这是故意的还是其他意思
我可以使用 fimplicit3 命令在 MATLAB 上绘制隐式曲面 (x^8)(y^2)(z^6) = 0,但我做不到在 Octave 中找到类似的命令。
本着MATLAB和Octave兼容的印象,我将同样的行复制粘贴到Octave中,结果返回了一条错误信息: "error: 'fimplicit3' undefined near line 1 column 1".
如何在 Octave 上绘制它?
您可以使用 meshX
或 surfX
函数之一绘制曲面
https://www.gnu.org/software/octave/doc/interpreter/Three_002dDimensional-Plots.html
不是等价的函数,但如果您只是想想象由这样的等式 定义的对象在 space 中看起来 的样子,您可以简单地创建一个点网格,并在 0 处获得等值面。即使对于低分辨率网格,这应该也能正常工作。
例如,使用 matlab's fimplicit3 documentation page 中显示的相同示例,即等式:
[x, y, z] = ndgrid(-5:1:5, -5:1:5, -5:1:5);
F = x.^2 + y.^2 - z.^2;
isosurface(F, 0);
您可以玩弄等值面对象的属性,或将其包裹在 patch
对象中,引入 isonormals
,使用 plot3
在顶部绘制曲率线,等等. 事实上,如果这就是 fimplicit3
在 matlab 中所做的事情,我不会感到惊讶。
PS:我使用了 matlab 的示例而不是你的示例,因为你的示例看起来有点微不足道:只要任何单个变量为零,它就微不足道为零。所以它基本上是三个零平面相交。不确定这是故意的还是其他意思