# 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`

and`z1`

.

### 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 >> |