geom3d
projection from 3D on 2D after a 3D plot
Syntax
[x,y]=geom3d(x1,y1,z1)
Arguments
- x1,y1,z1
real vectors of the same size (points in 3D).
- x,y
real vectors of the same size as
x1
,y1
andz1
.
Description
After having used a 3D plot function such as plot3d
,
plot3d1
or param3d
, geom3d
gives
the mapping between a point in 3D space (x1(i),y1(i),z1(i))
and the corresponding point (x(i),y(i))
in the projected 2D
plan. Then all the 2D graphics primitives working on (x,y)
can be used for superposition on the 3D plot.
Examples
deff("[z]=surface(x,y)","z=sin(x)*cos(y)") t=%pi*(-10:10)/10; // 3D plot of the surface fplot3d(t,t,surface,35,45,"X@Y@Z") // now (t,t,sin(t).*cos(t)) is a curve on the surface // which can be drawn using geom3d and xpoly [x,y]=geom3d(%pi/2,0,surface(%pi/2,0))
my_plot_desc = "plot3d and use of geom3d"; r = (%pi):-0.01:0; x = r.*cos(10*r); y = r.*sin(10*r); deff("[z]=Surf(x,y)","z=sin(x)*cos(y)"); t=%pi*(-10:10)/10; // Plot the surface' fplot3d(t,t,Surf,35,45,"X@Y@Z",[19,2,3]); // Add 2d graphics on 3d graphic' z=(sin(x).*cos(y)); [x1,y1] = geom3d(x,y,z); xpoly(x1,y1,"lines"); // Adjust some plotting parameters' BackgroundColorId = color(70,174,255); current_axe = gca(); plot_3d = current_axe.children(2); plot_3d.hiddencolor = 32; polyline = current_axe.children(1)';; polyline.foreground = 8; current_axe.rotation_angles = [70,47]; current_axe.background = BackgroundColorId; // A second 2d graphics' [x1,y1] = geom3d([0,0],[0,0],[5,0]); xsegs(x1,y1); xstring(x1(1),y1(1),"The point (0,0,0)"); xtitle(my_plot_desc," "," "," ");
Report an issue | ||
<< genfac3d | 3d_plot | mesh >> |