# geom3d

3次元プロットの後に3次元から2次元へ投影する

## 呼び出し手順

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

## 引数

x1,y1,z1

  同じ大きさの実数ベクトル (3次元の点).

x,y

  `x1`, `y1` および `z1`と同じ 大きさの実数ベクトル.

## 説明

`geom3d`は, `plot3d`,`plot3d1` または `param3d` のような3次元プロット関数の後に使用され, 3次元空間`(x1(i),y1(i),z1(i))` における点と投影された二次元平面上の対応する点`(x(i),y(i))` の間のマッピングを行ないます. この後,`(x,y)`に行う全ての2次元グラフィックプリミティブを この3次元プロット上への重ね合わせるために使用できます.

## 例

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

## 例

    deff("[z]=surface(x,y)","z=sin(x)*cos(y)")
    t=%pi*(-10:10)/10;
    // 曲面の3次元プロット
    fplot3d(t,t,surface,35,45,"X@Y@Z")
    // ここで, (t,t,sin(t).*cos(t))は曲面上の曲線で,
    // geom3d および 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," "," "," ");