Maxima 填充 3D 对象

问题描述

我尝试使用 Maxima 绘制 3D 表面,我确实使用以下代码实现了

load(draw);

draw3d(xlabel="x",ylabel="y",zlabel="z",proportional_axes=xyz,enhanced3d=true,colorBox=false,xtics=0.5,ytics=0.5,ztics=0.5,implicit(x^2+y^2+z^2<=1,x,-2,2,y,z,1)
);

上面的代码绘制了一个半球

注意:这是一个空心的半球

我的问题是是否可以绘制除半球以外的所有内容,并填充其周围的所有区域。或者甚至绘制一个填充的半球而不是空心的半球。

我的目标是绘制函数 y >= x^2; z >= 0

到目前为止我得到的是这个

draw3d(
implicit(y=x^2,-4,4,4)
);

另外,在 2D 平面上有一些看起来像我想要的东西,实际上我无法让它在 3D 空间上工作

draw2d(
key="y >= x^2",fill_color = blue,filled_func = x^2,explicit(0,4),user_preamble="set key at 0.5,15"
)$

我接受可以实现我想要的其他软件的建议。

解决方法

gnuplot 5.4 版(当前)

set xyplane 0
set pm3d depthorder lighting spec 0.5
  
set angle degrees

set xrange [-1:1]
set yrange [-1:1]
set zrange [ 1:0]
set view equal xyz
set view 300,24,1.4
unset border
unset key
unset colorbox
set sample 100; set isosample 100
set palette cubehelix negative

set zlabel "Z"
set ztics 1; unset xtics; unset ytics

set walls x0 fillstyle solid 1.0 fillcolor "gray"
set walls x1 fillstyle solid 1.0 fillcolor "gray"
set walls y0 fillstyle solid 1.0 fillcolor "gray"
set walls y1 fillstyle solid 1.0 fillcolor "gray"

# First draw the surface of the hemisphere
# Then draw the part of the plane z=0 that is outside of it
# and finally the other sides of the box
splot sample [u=0:90:3][v=0:360:5] '++' \
            using (cos($1)*cos($2)) : (cos($1)*sin($2)) : (sin($1)) with pm3d,\
      [u=-1:1][v=-1:1] '++' \
            using 1:2:($1*$1+$2*$2>=1 ? 0.0 : NaN) with pm3d fc "gray55",\
 [u=-1:1][v=-1:1] '++' using 1:2:( 1.0 ) with pm3d fc "gray55",\
  [u=-1:1][v=0:1] '++' using 1:(-1):2 with pm3d fc "gray55",\
  [u=-1:1][v=0:1] '++' using 1:( 1):2 with pm3d fc "gray55",\
  [u=-1:1][v=0:1] '++' using ( 1):1:2 with pm3d fc "gray55",\
  [u=-1:1][v=0:1] '++' using (-1):1:2 with pm3d fc "gray55"

enter image description here

照明模型的设计不允许从下面进行适当的照明,因此翻转视点以“向上”看碗的效果不太好。

四个侧面的瑕疵是因为碗面和盒子侧面接触。将框扩展到 +/-(1+epsilon) 看起来会更好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...