020_3dContour.mw

3次元空間の等高線プロット

イントロダクション

このワークシートでは、plottools パッケージを使用し、2次元等高線プロットを3次元に変換します。

> restart:

dropshadowplot プログラム

> dropshadowplot := proc(F::algebraic, r1::name=range, r2::name=range, r3::name=range)
 local minz, p2, p3, coption, opts, f,g,x,y;

 opts := [args[5..nargs]];
 if not hasoption(opts,'contours',coption,'opts')
   then coption :=8;
 end if;

 if type(r3,range) then
   minz := lhs(r3);
 else
   minz := lhs(rhs(r3));
 end if;
 minz := evalf(minz);

 p3 := plots[contourplot3d](F,r1,r2,'contours'=coption,op(opts));
 p2 := plots[contourplot](F,r1,r2,'contours'=coption,op(opts));

 g := unapply([x,y,minz],x,y);
 f := plottools[transform](g);
 plots[display]([f(p2),p3]);
end proc:

> expr := -5*x/(x^2+y^2+1);

expr := -5*x/(x^2+y^2+1)

> dropshadowplot(expr, x=-3..3, y=-3..3, z=-4..3, filled=true, contours=6, axes=frame);

[Plot]