.
Coordenadas esfericas.
OJO mis ejes Z y X son el piso y mi eje Y es mi altitud., de donde Z es lo que se define como que tan seca o lejos esta de un objeto.
Como se calcula en angulo azimutal de dos puntos?
x = d * sin(a) * cos(e)
y = d * sin(e)
z = d * cos(a) * cos(e)
donde:
d = distancia entre dos puntos ( X,Y,Z )
a = angulo azimutal
e = angulo de elevacion
hasta ahora ya pude saber como saber el angulo de elevacion de un punto con respecto al punto origen
e = csc( y/d )
Pero para el angulo de la azimutal
[Aqui empiza mi duca sigan leyendo]
llego a un punto muerto donde ya no se que rayos hacer.
El angulo azimutal involucra a el eje x y el eje z, el eje y solo es involucrado por la elevacion ( Logica Basica )
x = d * sin(a) * cos(e)
z = d * cos(a) * cos(e)
Entonces empesando a despejar
Como en ambas expresiones existen d y cos(e) puedo hacer un reemplazo de terminos asi:
Quitando a cos(e) para simplificar la cosa:
cos(e) = x / ( d*sin(a) )
En la segunda formula reemplazo ( z = d * cos(a) * cos(e) )
z = d * cos(a) * x / ( d*sin(a) )
Simplificando un poco queda:
z = cos(a) * x / sin(a)
y tratando de despejar a el angulo a obtengo:
z/x = cos(a) / sin(a) siendo lo mismo a: z/x = cos(a) * csc(a)
por lo tanto:
cosec ( z/x ) = a * csc( a )
sin(cosec(z/x)) = a*a
por lo tanto
raiz( sin(cosec(z/x)) ) = a
pero al aplicar dicho despeje no me da el angulo ya mensionado. alguien sabe como solucionarlo?
Dulces Lunas!¡.
.
Mira, a mi me queda:
x =d * sen(a) * cos(a)
z = d cos(a) * cos(e)
cos(e) = x/d*sen(a) ------------> z = d * cos(a) * x / d * sin(a)
Por lo que se eliminan las "d"
Al eliminarlas, salta una identidad trigonométrica, la de cotangente
ctg(x) = 1/tan(x)
ctg(x) = (1/1)/(sen(x)/cos(x)
Bueno, por lo que queda:
z = x(1 / tan(a))
z = x/tan(a)
De ahí ya se puede ver como vamos a despejar "a"
z * tan(a) = x
tan(a) = x/z
arctan(tan(a)) = arctan(x/z)
a = arctan(x/z)
no lo he checado bien, lo hice aquí, compruebalo.
EDITO:
Ya lo chequé, está correcto, también podrías despejar d y sustituir.
Tsssss, deberíamos de tener LATEX en el foro :p
.
gracias si es:
a = arctan(x/z)
Se me olidaron las identidades trigonometricas xP.
Dulces Lunas!¡.
.
Bueno ya esta, con esa pequeña formula (despeje y algunas sentencias ya pude detectar lo deado xP)
float clsLine::GetAzimutal(float x, float z)
{
float dRet = 0.0f;
if ( z!=0.0f ) {
dRet = atan2( x , z );
if ( x<=0.0f && z<0.0f ) {
dRet = dRet+180.0f;
} else if ( x>0.0f && z<0.0f ) {
dRet += 180.0f ;
} else if ( x<0.0f && z>0.0f ) {
dRet += 360.0f ;
}
} else {
if ( x>0.0f ) {
dRet = 90.0f;
} else if ( x<0.0f ) {
dRet = 270.0f;
}
}
return dRet;
}
No lo puse en el subforo de C/C++ por que no era una duda puntal de ello si no de despejes matematicos.
P.D.: Se nesesita LaTeX como Leo G. a mensionado ya.
Temibles Lunas!¡.