[metapost] Questions sur 3d

Jean-Michel Boucart <[email protected]> Thu, 23 Jun 2005 18:23:42 +0200
Newsgroups gmane.comp.tex.metafont
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------030005000000050908030307
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by nef2.ens.fr id j5NGNw0J085076

Bonjour,

Je m'initie au package 3d. J'ai du mal bien mais je pers=E9v=E8re car le=20
package m'int=E9resse vraiment. Alors voici quelques questions auquelles=20
peut-=EAtre quelqu'un r=E9pondra.

1) En dehors des docs qui sont sur CTAN, y a-t-il d'autres explications=20
? J'ai par exemple eu bien du mal =E0 trouver dans la doc, la mani=E8re d=
e=20
tracer une droite en pointill=E9s. J'ai fini par trouver en consultant de=
s=20
exemples mais il y a bien d'autres questions que je me pose pae exemple=20
sur la notion de face.

2) Quel est le moyen, en perspective cavali=E8re, de fixer le plan de=20
projection ?

3) Dans le fichier joint, j'ai une erreur que je n'arrive pas =E0 lever=20
malgr=E9 des heures de recherche :  je souhaite d=E9terminer sur la droit=
e =20
(1,16)  l'intersection visuelle avec  la droite (14,6).  L'abscisse =20
calcul=E9e (xval) de cette  intersection me donne un nombre n=E9gatif, ce=
=20
qui est pratiquement impossible.  Or, cette information d'abscisse m'est=20
indispensable pour d=E9terminer des trac=E9s de pointill=E9s.




--------------030005000000050908030307
Content-Type: text/plain;
 name="repere.mp"
Content-Disposition: inline;
 filename="repere.mp"
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by nef2.ens.fr id j5NGNw0J085076

%% repere.mp

boolean c;
input 3dgeom;
drawing_scale:=3D5cm;



vardef def_Repere(expr inst)=3D
  new_obj_points(inst,21);
  set_Repere_points(inst);
enddef;

vardef set_Repere_points(expr inst)=3D
set_point(1)(1,1,0);set_point(2)(-1,1,0);set_point(3)(-1,-1,0);set_point(=
4)(1,-1,0);
  set_point(5)(1,0,1);set_point(6)(1,0,-1);set_point(7)(-1,0,-1);set_poin=
t(8)(-1,0,1);
  set_point(9)(0,1,1);set_point(10)(0,1,-1);set_point(11)(0,-1,-1);set_po=
int(12)(0,-1,1);
  set_point(13)(0,0,0);
  set_point(14)(1,0,0);set_point(15)(-1,0,0);
  set_point(16)(0,1,0);set_point(17)(0,-1,0);
  set_point(18)(0,0,1);set_point(19)(0,0,-1);

  c:=3Ddef_visual_inter(20)(14,6,1,16);
  c:=3Ddef_visual_inter(21)(16,1,14,6);
enddef;

vardef draw_Repere(expr inst)=3D
%% Observateur dans les coordonn=E9es positives.
%%=20
%% Tri=E8dre de premier plan
  draw_lines(13,14,1,16,13);
  draw_lines(13,18,5,14,13);
  draw_lines(13,16,9,18,13);
=20
  if (zval(20)<-1) : message "c en dessous" ;  draw_line(14,6);
  else : message "c au dessus" ;  draw_line(14,6);fi;=20
  if (xval(21)>1) : message  "bsup1"; ; draw_line(14,6);
  else : message "binf1" ; draw_line(14,6);fi;
  if (xval(21)<0) : message "PROBLEME" fi;=20
enddef;
 =20

assign_obj("OIJK","Repere");



beginfig(1);
%projection_type:=3D1;
set_point_(Obs)(4,6,4);
Obs_phi:=3D90;
Obs_dist:=3D2;
point_of_view_obj("OIJK",13,Obs_phi);
reset_obj("OIJK");
draw_obj("OIJK");
endfig;

end.
--------------030005000000050908030307--