- Questo topic ha 0 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 8 anni, 4 mesi fa da .
-
Topic
-
Salve a tutti, ho da poco incominciato a utilizzare asymptote e non riesco a venire in fuori di un disegno che sto facendo. Per maggiori dettagli sto facendo uno schemino per le coordinate sferiche in astronomia. Posto qui sotto il codice e la figura che ne risulta:`
settings.outformat = “png”;
settings.render = 16;
import graph3;
size(10cm);triple eye = (5,2,3);
currentprojection=orthographic(eye);surface hemisphere = surface(Arc(X,-X,c=O,normal=Z,n=16), c=O, axis=X, angle1=0, angle2=180);
draw(shift(-5 eye)*hemisphere, material(white + opacity(0.5), emissivepen=0.2 white));usepackage(“amsmath”); //for \text command
draw(O — 1.6Z, arrow=Arrow3, L=Label(“Zenit”, align=W, position=EndPoint));
draw(O — 1.6X, arrow=Arrow3, L=Label(“$x$”, align=S, position=EndPoint));
draw(O — 1.6Y, arrow=Arrow3, L=Label(“$y$”, align=E, position=EndPoint));
real R = 1, x,y,z,phi=25,theta=50;
x = R*Cos(theta)*Cos(phi);
y = -R*cos(theta)*Sin(phi);
z = R*Sin(theta);
triple v =(x,y,z);
triple w = (x,y,0);
draw(O–2v,black);
draw(O–2w,dashed);
draw(v–w,dashed);
draw(arc(c=O,(0.5*length(w),0,0),0.5w,normal=-Z),red,arrow=Arrow3(DefaultHead2,emissive(red)));
real xlab,ylab,x1=0.5*x,y1=0.5*y,x2=0.5*length(w),y2=0;
xlab=(x1+x2)/2;
ylab=(y1+y2)/2;
label(“$ \varphi $”,(xlab,ylab,0),S);
real s = 0.5* length(w)/length(X+Y+Z);
triple kp=X+Y+Z;
triple k = s*kp;
draw(O–(Sin(phi),Cos(phi),0),green);
draw(arc(c=O,(0.5*length(w),0,0),k,normal=(Sin(phi),Cos(phi),0)),red,arrow=Arrow3(DefaultHead2,emissive(red)));
`
[attachment:1]emisphere2.png[/attachment]Il problema si presenta quando voglio tracciare il secondo arco in fondo al codice che rappresenta la latitudine. Non mi digerisce il vettore normale (Sin(phi),Cos(Phi),0) ove phi è la longitudine presa positiva in senso orario. Per controllarlo l’ho tracciato in verde.L’arco che, almeno in linea di principio dovrei tracciare, è centrato nell’origine, il suo primo estremo coincide con un estremo del primo arco ovvero (0.5*length(w),0,0) ove w = x X + y Y + 0 Z (x,y,z sono coordinate, mentre XYZ al solito sono i tre versori degli assi). Allora il secondo estremo, se non mi sbaglio, del secondo arco dovrebbe essere:
k = (0.5*length(w)/length(X+Y+Z))* (X+Y+Z)
In tal modo entrambi hanno modulo pari a 0.5*length(w). Dove sta l’errore?
- Devi essere connesso per rispondere a questo topic.