28/02/2020, 18:48
28/02/2020, 20:25
28/02/2020, 21:45
28/02/2020, 23:37
29/02/2020, 10:30
29/02/2020, 23:43
01/03/2020, 11:28
01/03/2020, 14:13
clear all
close all
# I dati di ingresso sono
#Gli angoli dei punti 1 e 2
theta1 = 14
phi1 = 45
theta2 = 15
phi2 = 44
# Gli assi dell'ellissoide di equazione
# (x/a)^2 + (y/b)^2 + (z/c)^2 = 1
a = 2
b = 3
c = 4
# Si costruisce la matrice dell'ellissoide
Elld = [a^2 0 0
0 b^2 0
0 0 c^2 ]
# Si trovano le coordinate cartesiane dei punti 1 e 2
p1 = [ cos(phi1 /360 * 2 * pi) * cos(theta1 /360 * 2 * pi)
cos(phi1 /360 * 2 * pi) * sin(theta1 /360 * 2 * pi)
sin(phi1 /360 * 2 * pi) ]
p2 = [ cos(phi2 /360 * 2 * pi) * cos(theta2 /360 * 2 * pi)
cos(phi2 /360 * 2 * pi) * sin(theta2 /360 * 2 * pi)
sin(phi2 /360 * 2 * pi) ]
# Si inizia a costruire una base ortonormale
# Si trova il vettore normale al piano "pi" che passa per
# i punti 1 e 2 e l'origine.
n3 = cross(p1, p2)
# da normalizzare
n3 = n3/norm(n3)
# Si trova un vettore ortogonale a n3
# che arbitrariamente giace sul piano xy
n2 = [ n3(2)
-n3(1)
0 ]
# da normalizzare
n2 = n2/norm(n2)
# Si trova il terzo vettore di una base
# ortonormale
n1 = cross(n3, n2)
# La base ortonormale
Base = [n1 n2 n3]
# L'ellissoide viene ruotato nella nuova base
E = inv(Base) * Elld * Base
# Si trova l'intersezione sul piano "pi"
# azzerando la coordinata z
P = E(1:2, 1:2)
# Si trovano gli autovalori dell'ellisse
eigE = eig(P)
# Si estraggono gli assi dell'ellisse
asse1 = sqrt(abs(eigE(1)))
asse2 = sqrt(abs(eigE(2)))
# Si controlla che gli assi dell'ellisse non siano piu' grandi
# o piu' piccoli di quelli dell'ellissoide
# Se da errore il procedimento e' sbagliato !!!
assert(asse1 > min([a b c]))
assert(asse2 > min([a b c]))
assert(asse1 < max([a b c]))
assert(asse2 < max([a b c]))
01/03/2020, 23:36
02/03/2020, 20:17
[email protected] ha scritto:Grazie, lo script funziona e calcola il valore degli assi. Servirebbe però una maggiore precisione: è possibile ridurre gli errori di arrotondamento?
Ottenuto l'ellisse, in che modo si può determinare la posizione di phi1 e phi2? Per esempio l'ampiezza dell'angolo α rispetto all'asse maggiore.
Il caso particolare di phi1 e phi2 con latitudine = 0 dovrebbe corrispondere ad un piano orizzontale che "taglia" l'ellissoide a metà, in quel caso la sezione sarebbe un cerchio.
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.