Ayuda matematica-

Iniciado por BlackZeroX, 9 Abril 2011, 03:14 AM

0 Miembros y 1 Visitante están viendo este tema.

BlackZeroX

.
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!¡.
.
The Dark Shadow is my passion.

leogtz

#1
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
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

BlackZeroX

.
gracias si es:

a = arctan(x/z)

Se me olidaron las identidades trigonometricas xP.

Dulces Lunas!¡.
The Dark Shadow is my passion.

BlackZeroX

#3
.
Bueno ya esta, con esa pequeña formula (despeje y algunas sentencias ya pude detectar lo deado xP)

Código (cpp) [Seleccionar]


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!¡.
The Dark Shadow is my passion.