Oui, oui, voici le source, c'est peut-être plus simple. J'ai essayé avec "settings.outformat='pdf';" dans le source : résultat=problème de compilation. J'ai essayé "settings.prc=true;" en commentant "//settings.outformat='pdf';", la compilation focntionne, mais asy me génère un eps au lieu d'un pdf... J'avoue ne plus rien y comprendre, si ce n'est que le pdf ou la prc ne se compile plus comme avant...
Code : Tout sélectionner
// ------------------------------------------------------------------------------------------------
// Begining of Asymptote Figure.
// Cet en-tête permet de visualiser l'image 3D même si le visualisation PDF ne traite pas la PRC.
// ------------------------------------------------------------------------------------------------
/*
import settings;
leftbutton=new string[] {"Rotation","Agrandissement","Shift","Pan"};
middlebutton=new string[] {"Menu"};
rightbutton=new string[] {"Agrandissement/menu","RotateX","RotateY","RotateZ"};
wheelup=new string[] {"ZoomIn"};
wheeldown=new string[] {"ZoomOut"};
//
settings.batchView=true;
settings.tex="pdflatex";
settings.render=2;
//settings.inlineimage=true;
settings.embed=true;
settings.outformat='pdf';
settings.toolbar=true;
settings.prc=true;
viewportmargin=(1,1);
viewportsize=(300pt,0);
//defaultfilename='fig_Michnik_n2p4_plan-Tangent-au-Pole';
*/
// ------------------------------------------------------------------------------------------------
//settings.outformat='pdf';
settings.prc=true;
// ********Appel des fichiers de macros....************************************* <----
import graph3;
import solids;
import math;
import labelpath3;
usepackage("relsize");//règle la taille du texte...
// taille de la figure
size(10cm,0);
scale(true);
// ********REGLAGES de la vue / perspective...********************************** <----
currentprojection=orthographic(1,2,2);
currentlight=White;
// ********DECLARATION des VARIABLES et des PARAMETRES...***********************
real R, phi, epsilon, delta, L, n, k, K ;
R=1 ; // rayon de la sphère céleste <----
phi= 43+43/60 ; // latitude géographique du lieu du cadran solaire
epsilon=23+26/60 ; // obliquité de l'écliptique / valeur maximum de delta.
K=-cot(phi*pi/180) ;
// ***************************************************************************** //
// Les points sur la sphère
triple origine = (0,0,0); // Centre de la sphère.
triple poleNord = (0,0,R); // pôle Nord P sur la sphère céleste.
triple poleSud = (0,0,-R); // pôle Sud P' sur la sphère céleste.
triple EqSud = (R,0,0); // Point sud équatorial.
triple EqEst = (0,R,0); // Point équatorial est.
triple Zenith = (R*Sin(90-phi),0,R*Sin(phi)); // Zénith du lieu de latitude phi.
triple OrigineHectemories = R*(Cos(90-phi),0,-Sin(90-phi)); // Intersection commune des Hectémories
//~~~~~~~~~ CONSTRUCTION de la SPHERE CELESTE ~~~~~~~~~
revolution b=sphere(origine,R);
draw(surface(b),palegreen+opacity(.85));
// ******** CONSTRUCTIONS des HECTEMORIES SUR LA SPHERE CELESTE ~~~~~~~~~
/*
for (k=1 ; k<6; k=k+1) {
n=6/k ; // heure temporaire (n=6/k)
// CONSTRUCTION des HECTEMORIES sur la SPHERE CELESTE par le calcul
real x(real t) {return R*Cos(t)/sqrt(1+(K*Cos(n*t))^2) ;}
real y(real t) {return R*Sin(t)/sqrt(1+(K*Cos(n*t))^2) ;}
real z(real t) {return R*K*Cos(n*t)/sqrt(1+(K*Cos(n*t))^2) ;}
path3 ps=graph(x,y,z,0,360, operator ..); // les lignes hectémoréales I et II seront incomplètes...
draw(ps,1/2bp+k*blue);
// ******** CONSTRUCTION des HECTEMORIES dans le PLAN TANGENT AU POLE DE LA SPHERE CELESTE par INTERSECTION
for( L = -k*30 ; L < k*30; L=L+1/5 ) {
delta = aTan(K*Cos(n*L)); // <----
// Un point de l'Hectémorie sur la surface de la sphère.
triple S = R*( Cos(L)*Cos(delta),Sin(L)*Cos(delta), Sin(delta) );
// On définit la droite (OS) pour matérialiser le principe de la projection centrale...
path3 ligne = origine--S--10*R*S;
// CONSTRUCTION de S2, projection centrale de S sur le plan tangent au pôle de la sphère.
triple[] S2=intersectionpoints(ligne,surface(plantgtpol));
dot(S2,0.28mm+red);
}
}
*/
// Construction d'un point de la shère, et pourquoi pas sur une hectémorie...
k=2;
n=6/k ; // heure temporaire (n=6/k)
L = 35 ;
delta = aTan(K*Cos(n*L)); // <----
write("Delta= ",delta);
triple S = R*( Cos(L)*Cos(delta),Sin(L)*Cos(delta), Sin(delta) );
triple Seq=R*(Cos(L),Sin(L),0);
triple Seq_perp=(R*Cos(90-L),-R*Sin(90-L),0);
//~~~~~~~~~ CONSTRUCTION des ARCS de GRAND CERCLE et des PETITS CERCLES ~~~~~~~~~
//~~~~~~~~~ arcs de grand cercle ~~~~~~~~~
path3 meridien = arc(origine, R, 0, 0, 90+(90-phi), 0); // Cercle méridien
path3 premier_vertical = arc(origine, (0,-R,0), (0,R,0), OrigineHectemories, CW); // cercle du premier vertical
path3 cerclehori = circle(O, R, rotate((90-phi),Y)*Z); // Cercle horizon
//~~~~~~~~~ petits cercles ~~~~~~~~~
//~~~~~~~~~ CONSTRUCTION des TROPIQUES et des CERCLES LIMITES sur la SPHERE CELESTE ~~~~~~~~~
//~~~~~~~~~ RAYONS, CENTRES ET CERCLES LIMITES (sphère) ~~~~~~~~~
real Rmax = R*Cos(90-phi) ;
real Rmin = R*Cos(-(90-phi)) ;
triple Cmax = (0,0,R*Sin(90-phi)) ;
triple Cmin = (0,0,R*Sin(-(90-phi))) ;
path3 cerclemax = circle(Cmax, Rmax, Z) ;
path3 cerclemin = circle(Cmin, Rmin, Z) ;
//~~~~~~~~~ TROPIQUE DES SOLSTICES (sphère) ~~~~~~~~~
real Rsolstice = R*Cos(epsilon) ;
real zsolstice = R*Sin(epsilon) ;
triple centre_ete = (0,0,zsolstice) ;
triple centre_hiv = (0,0,-zsolstice) ;
path3 ETE = circle(centre_ete, Rsolstice, Z) ;
path3 HIV = circle(centre_hiv, Rsolstice, Z) ;
//~~~~~~~~~ cercle horaire ~~~~~~~~~
path3 cerclehoraire = arc(origine, R, 0, 0, 90, L) ;
//TRACAGE DES OBJETS DE LA FIGURE...
// Segments...
draw(poleNord--poleSud,white+dashed);
draw(origine--EqSud,white+dashed);
draw(origine--OrigineHectemories,black+dashed+1/4bp);
draw(origine--S,white+dashed);
draw(meridien,1bp+red) ; // MERIDIEN
//draw(premier_vertical,1/2bp+green); // PREMIER VERTICAL
draw(scale3(R)*unitcircle3,red) ; // EQUATEUR
draw(cerclehori,3yellow) ; // HORIZON
draw(cerclemax,2bp+dotted+3blue) ; // limite supérieure des hectémories
draw(cerclemin,2bp+dotted+3blue) ; // limite inférieure des hectémories
draw(ETE,2bp+dashed+1.5yellow) ; // SOLSTICE ETE
draw(HIV,2bp+dashed+1.5yellow) ; // SOLSTICE HIVER
draw(cerclehoraire,white) ; // Cercle horaire
// POINTS...
dot(origine);
dot(poleNord,3bp+green);
dot(poleSud,3bp+green);
dot(EqSud,3bp+green);
dot(EqEst,3bp+green);
dot(Zenith,3bp+yellow);
dot(OrigineHectemories,3bp+blue);
dot(S,3bp+blue);
dot(Seq,3bp+white);
// ETIQUETTES...
label("{\relsize{-3}{$O$}}", origine,NW);
label("{\relsize{-3}{$P$}}", poleNord,0.4NW);
label("{\relsize{-3}{$Z$}}", Zenith,0.5N);
label("{\relsize{-3}{$E$}}", EqSud,0.5NW);
label("{\relsize{-3}{$Est$}}", EqEst,NW);
label("{\relsize{-4}{$I$}}", OrigineHectemories,S);
// Le repère Oxyz...
limits(O,3/2*R*X+3/2*R*Y+3/2*R*Z);
axes3("$x$","$y$","$z$",Arrow3);
Remarque : la compilation fonctionnait très bien sous asymptote 1.96, et je n'ai pas changé de version de latex (ou rien touché de ce côté là). Je peux donner le fichier pdf (il date d'hier). Par contre, et je l'ai signalé, le dotted pour les cerlce ou les arcs, ne fonctionne plus sous asy v.1.96.