geom3d projection 3D vers 2D après une instruction de dessin 3D

## Séquence d'appel

    [x,y]=geom3d(x1,y1,z1)

## Paramètres

x1,y1,z1

  vecteur réels de même taille (points 3D).

x,y

  vecteurs réels de même taille que `x1`, `y1` et `z1`.

## Description

Après l'utilisation d'une instruction de dessin 3D du type `plot3d`, `plot3d1` ou `param3d`, `geom3d` permet de faire la correspondance entre un point de l'espace 3D `(x1(i),y1(i),z1(i))` et le point correspondant `(x(i),y(i))` dans le plan projeté 2D. On peut ainsi utiliser les primitives graphiques avec `(x,y)` pour superposer des dessins.

## Exemples

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

deff("[z]=surface(x,y)","z=sin(x)*cos(y)") t=%pi*(-10:10)/10; fplot3d(t,t,surface,35,45,"X@Y@Z") [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," "," "," ");

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," "," "," ");