(* :Title: GrCont3D *) (* :Author: Miroslava Dubcova, VSCHT *) (* :Summary: Program zobrazi trirozmerny graf, vrstevnice v zadanych bodech a promitne vrstevnice do roviny z=z0. Parametry jsou funkce f[x,y], hranice pro promennou x ve tvaru {x,xmin,xmax}, hranice pro promennou y ve tvaru {y,ymin,ymax}, seznam z-tovych souradnic pro vrstevnice, z0, parametry pro trirozmerny graf (nemusi byt zadany). *) (* :Context: Mirka`GrCont3D` *) (* :Package Version: 1.0 *) (* :Mathematica Version: 2.2 3.0*) (* :Copyright: Copyright Miroslava Dubcova *) (* :History: *) (* :Keywords: GrCont3D *) (* :Warning: *) BeginPackage["Mirka`GrCont3D`"] GrCont3D::usage= "GrCont3D[funkce,{x,xmin,xmax},{y,ymin,ymax},list,z0,param] 3Dgraf plus jeho vrstevnice promitnute do roviny z=z0, list je seznam bodu, v kterych bude proveden rez, param je nepovinny parametr pro graf" Begin["`Private`"] ZTG[d_List, z_] := Map[ ZTG[#, z]& , d ]; ZTG[Point[{x_, y_}], z_] := Point[{x, y,z}]; ZTG[Line[d:{{_,_}...}], z_] := Line[ Map[Insert[#, z, 3]&, d] ]; ZTG[Polygon[d:{{_,_}...}], z_] := Polygon[ Map[Insert[#, z, 3]&,d]]; ZTG[Text[d_String, {x_, y_}, dd___], z_] := Text[d,{x,y,z},dd]; ZTG[expr_, z_] := expr; Graph2DTo3D[Graphics[primitives_,options___],z_] := Graphics3D[ZTG[primitives, z], BoxRatios->{1,1,1}, Axes->{True, True, True}, PlotRange->{Automatic, Automatic, Automatic} ]; g1[Fce_,xm_List,ym_List,zl_List]:=ContourPlot[Fce,xm,ym, Contours->zl, ContourShading->False,DisplayFunction->Identity,PlotPoints->40]; gc1[Fce_,xm_List,ym_List,zl_List]:=Table[ContourPlot[Fce,xm,ym, Contours->{zl[[i]]}, ContourShading->False,DisplayFunction->Identity,PlotPoints->40],{i,Length[zl]}]; g2[Fce_,xm_List,ym_List]:=Plot3D[Fce,xm,ym,Mesh->False, DisplayFunction->Identity,PlotPoints->{40,40}]; gc[Fce_,xm_List,ym_List,zl_List]:= Table[Graph2DTo3D[Graphics[gc1[Fce,xm,ym,zl][[i]]],zl[[i]]], {i,Length[zl]}]; g[Fce_,xm_List,ym_List,zl_List,z_]:= Graph2DTo3D[Graphics[g1[Fce,xm,ym,zl]],z]; GrCont3D[Fce_,xm_List,ym_List,zl_List,z_,param___]:= Show[{g[Fce,xm,ym,zl,z],g2[Fce,xm,ym],gc[Fce,xm,ym,zl]},param]; End[] EndPackage[]