关于Matlab:如何在Octave中绘制隐式曲面?

How to plot an implicit surface in Octave?

我可以使用fimplicit3命令在MATLAB上绘制隐式曲面(x ^ 8)(y ^ 2)(z ^ 6)= 0,但是在Octave中找不到类似的命令。

在使MATLAB和Octave兼容的印象下,我将相同的行复制粘贴到Octave中,并返回了一条错误消息:
"错误:'fimplicit3'在第1行第1列附近未定义"。

如何在Octave音阶上绘制?


不是等效函数,但是如果您只是想直观地看待由该等式定义的对象在空间中的外观,则可以简单地创建一个点网格,并获得等值面为0。这应该很好,即使对于低分辨率网格也是如此。

例如,使用matlab的fimplicit3文档页面中显示的相同示例,即等式:



,在x,y和z的间隔[-5,5]中定义,我们有:

1
2
3
[x, y, z] = ndgrid(-5:1:5, -5:1:5, -5:1:5);
F = x.^2 + y.^2 - z.^2;
isosurface(F, 0);

您可以使用等值面对象的属性,或将其package在patch对象中,引入isonormals,使用plot3在顶部绘制曲率线,等等。事实上,我不会如果这是fimplicit3在matlab的后台进行的操作,则感到惊讶。

PS:我使用的是matlab的示例,而不是您的示例,因为您的示例似乎有些琐碎:只要任何单个变量为零,它就几乎为零。所以基本上是三个零平面相交。不知道这是否是故意的,还是您有其他意思


您可以使用meshXsurfX函数之一来绘制表面

https://www.gnu.org/software/octave/doc/interpreter/Three_002dDimensional-Plots.html