如何解决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"
照明模型的设计不允许从下面进行适当的照明,因此翻转视点以“向上”看碗的效果不太好。
四个侧面的瑕疵是因为碗面和盒子侧面接触。将框扩展到 +/-(1+epsilon) 看起来会更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。