Re: Exemple minimal
Denis Roegel <[email protected]> Sat, 25 Jun 2005 18:04:40 +0200
| Newsgroups | gmane.comp.tex.metafont |
|---|---|
| Message-ID | <[email protected]> |
On Sat, Jun 25, 2005 at 07:20:45AM +0200, Jean-Michel Boucart wrote:
> Suite =E0 mon post pr=E9c=E9dent, je me suis concentr=E9 sur les foncti=
ons xval,=20
> yval ... dans 3d.
...
>=20
> Que faut-il comprendre ? Merci de m'=E9clairer.
Bonjour,
vous utilisez incorrectement xval, yval, zval...
En fait, de mani=E8re interne, il y a une liste s=E9quentielle de points,
d=E9coup=E9s en objets, chaque objet ayant un index de d=E9part. xval, et=
c.
utilise les index absolus qui ne pr=E9sentent pas beaucoup d'int=E9r=EAt =
pour
l'utilisateur. Si vous voulez, au sein d'un objet, conna=EEtre la valeur =
x
du point i de cet objet, utilisez une construction comme
vec[points_[ipnt_(1)]]x
Ok, j'admets que c'est lourd, mais vous pouvez d=E9finir un raccourci
(par exemple def Xval(expr i)=3Dvec[points_[ipnt_(i)]]x enddef)
ou aussi =E9crire=20
xval(pnt_obj("OIJK",1))
pour la valeur x du point 1 de l'objet OIJK.
Ci-dessous votre fichier avec quelques compl=E9ments. N'h=E9sitez pas =E0=
poser
d'autres questions.
En ce qui concerne la documentation, il n'y a rien (=E0 ma connaissance) =
=E0 part ce qui
est sur CTAN.
D. Roegel
input 3dgeom;
drawing_scale:=3D15cm;
vardef def_Repere(expr inst)=3D=20
new_obj_points(inst,2);
set_Repere_points(inst);
enddef; =20
vardef set_Repere_points(expr inst)=3D
set_point(1)(1,1,0);set_point(2)(-1,1,0);
enddef; =20
vardef draw_Repere(expr inst)=3D =20
draw_line(1,2);
message "x1=3D" & decimal(vec[points_[ipnt_(1)]]x);
message "y1=3D" & decimal(vec[points_[ipnt_(1)]]y);
message "z1=3D" & decimal(vec[points_[ipnt_(1)]]z);
message "x1=3D" & decimal(vec[points_[ipnt_(2)]]x);
message "y1=3D" & decimal(vec[points_[ipnt_(2)]]y);
message "z1=3D" & decimal(vec[points_[ipnt_(2)]]z);
=20
if xval(points_[ipnt_(1)])<.5 : message "x < 0,5" fi;
if yval(points_[ipnt_(1)])<.5 : message "y < 0,5" fi;
show_point("1:",pnt_obj("OIJK",1));
show_point("2:",pnt_obj("OIJK",2));
enddef; =20
assign_obj("OIJK","Repere");
beginfig(1);
set_point_(Obs)(4,6,4);
Obs_phi:=3D90;
Obs_dist:=3D2;
point_of_view_obj("OIJK",1,Obs_phi);
reset_obj("OIJK");
draw_obj("OIJK");
endfig;
end.