Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Operaciones algebraicas entre radianes y grados decimales (https://www.clubdelphi.com/foros/showthread.php?t=94615)

escafandra 04-02-2020 19:24:48

Sí tienes una calculadora hazlo tú mismo. A lo mejor la fórmula no es esa...

Saludos.

compuin 04-02-2020 19:30:52

Te trasnscribo la formula con un ejemplo

Sexto elemento : La Diferencia Ascensional (DA)

Se la define como el tiempo que toma un cuerpo, medido en un plazo de más o menos 6 horas, para recorrer sobre su SA (SemiArco) el espacio que separa el horizonte del MC.

La DA depende de la declinación y de la Latitud geográfica del lugar de nacimiento.

Se calcula de la siguiente forma:

Sen DA = Tag Lat. geográfica x Tag. decli. planeta

Ejemplo: calcular la DA de Neptuno situado a 26.02 de Virgo, son una latitud geográfica de 53.24 y una declinación de 2.41

Sen DA = 1.34650 x 0.04687 = 0.0631104 = 3.37

la DA de Neptuno, es 3.37

escafandra 04-02-2020 20:07:35

Por pasos.
1.- El rigor matemático de esa última expresión deja mucho que desear, no se de donde lo sacaste.
2.- 1,34650 x 0,04687 = 0,063110455 cierto y eso quiere decir lo que dice. 1,34650 x 0,04687 es el producto de dos números reales no de ángulos, sino de las tangentes (siguiendo la fórmula dada)
3.- 0,063110455 según tu fórmula representa el seno de un ángulo. Dicho ángulo es el arcsen( 0,063110455) = 3,618367381189. A falta de una calculadora mejor que la de un teléfono.

Los ejemplos que te dan están mal explicados y de ahí que te fallen las cosas.
Te aconsejo que tomes una calculadora y hagas los cálculos para ver que coinciden y quizás deberías buscar una fuente más rigurosa.

Saludos

compuin 04-02-2020 20:12:15

Cita:

Empezado por escafandra (Mensaje 535561)
Por pasos.
1.- El rigor matemático de esa última expresión deja mucho que desear, no se de donde lo sacaste.
2.- 1,34650 x 0,04687 = 0,063110455 cierto y eso quiere decir lo que dice. 1,34650 x 0,04687 es el producto de dos números reales no de ángulos, sino de las tangentes (siguiendo la fórmula dada)
3.- 0,063110455 según tu fórmula representa el seno de un ángulo. Dicho ángulo es el arcsen( 0,063110455) = 3,618367381189. A falta de una calculadora mejor que la de un teléfono.

Los ejemplos que te dan están mal explicados y de ahí que te fallen las cosas.
Te aconsejo que tomes una calculadora y hagas los cálculos para ver que coinciden y quizás deberías buscar una fuente más rigurosa.

Saludos

Los valores dieron correctos, lo que falla es la formula usada ???

Como quedaria la formula corrrectamente usando las funciones trogonometricas, ya que no es sen sino arcsen o tang ??

escafandra 04-02-2020 20:16:11

Lo que te falla es como interpretas la fórmula y como la usas. No te vendría mal repasar algo de trigonometría.

Saludos

compuin 04-02-2020 20:17:49

Cita:

Empezado por escafandra (Mensaje 535563)
Lo que te falla es como interpretas la fórmula y como la usas. No te vendría mal repasar algo de trigonometría.

Saludos

Ok

:eek::(:(

escafandra 04-02-2020 20:32:12

No confundas un ángulo con su tangente. En el ejemplo último que pones te dan las tangentes. Y otro detalle, Si
Código Delphi [-]
sin(A) = tg (B) x tg (C)
Entonces, y despejando A, tenemos:
Código Delphi [-]
A = arcsin [tg (B) x tg (C)]

Lo que quiere decir que A es el ángulo cuyo seno es...


Saludos.

compuin 04-02-2020 20:36:49

Cita:

Empezado por escafandra (Mensaje 535565)
No confundas un ángulo con su tangente. En el ejemplo último que pones te dan las tangentes. Y otro detalle, Si
Código Delphi [-]
sin(A) = tg (B) x tg (C)
Entonces, y despejando A, tenemos:
Código Delphi [-]
A = arcsin [tg (B) x tg (C)]

Lo que quiere decir que A es el ángulo cuyo seno es...


Saludos.


Haciendolo como me orientas me da este error

Código Delphi [-]
var
  da, lt, decl : Extended;
begin
  lt   := 1.73916666667; // => 01' 44’ 21"
  decl := 21.4341666667; // => 21° 26' 03"
  //da   := RadToDeg(sin(DegToRad(tan(DegToRad(lt))*tan(DegToRad(decl)))));
  DA:=   tan(lt)* tan(decl);

  DA:=   arcsin(da);

  ShowMessage( FloatToStr(da) );   // DA 02º36'10''

  end;


escafandra 04-02-2020 21:55:33

Cita:

Empezado por compuin (Mensaje 535566)
Haciendolo como me orientas me da este error

Código Delphi [-]var da, lt, decl : Extended; begin lt := 1.73916666667; // => 01' 44’ 21" decl := 21.4341666667; // => 21° 26' 03" //da := RadToDeg(sin(DegToRad(tan(DegToRad(lt))*tan(DegToRad(decl))))); DA:= tan(lt)* tan(decl); DA:= arcsin(da); ShowMessage( FloatToStr(da) ); // DA 02º36'10'' end;




Ves, mal interpretado. El seno de un angulo no puede ser mayor de 1 en valor absoluto. Los datos que te han dado son ángulos y no las tangentes. Ten en cuenta las unidades de los ángulos, pues si te los dan en radianes no tendrás que convertir. Las funciones trigonométricas de delphi funcionan en radianes.

el valor obtenido para DA es 0,68299.

Sigo viendo falta de rigor matemático en los ejemplos que tienes. Te paso la función:
Código Delphi [-]
function DiferenciaAscensional(lt, decl: Extended): Extended;
begin
  Result:= RadToDeg(arcsin(tan(DegToRad(lt)) * tan(DegToRad(decl))));
end;


Y para el caso en el que te den ya las tangentes:
Código Delphi [-]
function DiferenciaAscensional2(lt, decl: Extended): Extended;
begin
  Result:= RadToDeg(arcsin(lt * decl));
end;




Saludos.

compuin 04-02-2020 22:00:33

Cita:

Empezado por escafandra (Mensaje 535568)
Ves, mal interpretado. El seno de un angulo no puede ser mayor de 1 en valor absoluto. Los datos dados deben ser ángulos y no las tangentes. Ten en cuenta las unidades de los ángulos, pues si te los dan en radianes no tendrás que convertir. Las funciones trigonométricas de delphi funcionan en radianes.


Sigo viendo falta de rigor matemático en los ejemplos que tienes. Te paso la función:
Código Delphi [-]
function DiferenciaAscensional(lt, decl: Extended): Extended;
begin
  Result:= RadToDeg(arcsin(tan(DegToRad(lt)) * tan(DegToRad(decl))));
end;


Y para el caso en el que te den ya las tangentes:
Código Delphi [-]
function DiferenciaAscensional2(lt, decl: Extended): Extended;
begin
  Result:= RadToDeg(arcsin(lt * decl));
end;




Saludos.

Gracias, para mi todo esto es nuevo

La idea es hacer los calculos a partir de los valores de la Longitud y la latitud. Estos valores vienen ya calculados como valores decimales por una libreria externa. Lo demas de trigonometria y calculo sobre los angulos lo debo hacer yo a mano.

Pude entender lo que me dices con respecto a angulos y tangentes. En realidad los valores deberian manejarse siempre en valores decimales

Entonces la segunda funcion es la que deberia servir para esto, la voy a probar y te comento

escafandra 04-02-2020 22:03:13

Cita:

Empezado por compuin (Mensaje 535569)
Entonces la segunda funcion es la que deberia servir para esto, la voy a probar y te comento


NO. La segunda funcion sólo sirve si lo que te dan son las tangentes ya calculadas, es decir, los parámetros de entrada NO SON ÁNGULOS, son tangentes.


Saludos.

compuin 04-02-2020 22:04:00

Cita:

Empezado por escafandra (Mensaje 535570)
NO. La segunda funcion sólo sirve si lo que te dan son las tangentes ya calculadas, es decir, los parámetros de entrada NO SON ÁNGULOS, son tangentes.


Saludos.

Si, ya me dio error

La primera funcion es la que me sirve

escafandra 04-02-2020 22:08:27

Esa función ya te la había puesto aquí.


Cita:

Empezado por escafandra (Mensaje 535537)
Por partes:
1- Según la formula que pones DA = ARCSIN(TAN LT * TAN DECL) pero eso no lo veo en el código que debería ser algo como:

Código Delphi [-]
var   DA, lt, decl : extended; 
begin   
  lt:=    -2.19474036998329;
  decl:= -24.7975765404927;
  DA:= RadToDeg(arcsin(tan(DegToRad(lt))*tan(DegToRad(decl))));
end;
.....




Saludos.

compuin 04-02-2020 23:02:50

Cita:

Empezado por escafandra (Mensaje 535573)
Esa función ya te la había puesto aquí.







Saludos.

Cuando debo convertirlos a radianes ???

escafandra 04-02-2020 23:07:31

Cita:

Empezado por compuin (Mensaje 535574)
Cuando debo convertirlos a radianes ???

Sin y Tan toman como argumentos el angulo en radianes, por lo tanto con radianes los has de alimentar. Arcsin devuelve el angulo en radianes, luego a grados sexagesimales los has de pasar.


Tal cual como lo puse en la función.





Saludos.

compuin 04-02-2020 23:08:16

Cita:

Empezado por escafandra (Mensaje 535575)
Sin y Tan toman como argumentos el angulo en radianes, por lo tanto con radianes los has de alimentar. Arcsin devuelve el angulo en radianes, luego a grados sexagesimales los has de pasar.


Tal cual como lo puse en la función.





Saludos.

Ok, ya la funcion hace todo el trabajo

LO que me queda es mostrar los resultados en grados

escafandra 04-02-2020 23:10:01

Cita:

Empezado por compuin (Mensaje 535576)
Ok, ya la funcion hace todo el trabajo

LO que me queda es mostrar los resultados en grados


Ese tema ya estaba resuelto en este hilo.


Saludos.

compuin 04-02-2020 23:17:32

Cita:

Empezado por escafandra (Mensaje 535577)
Ese tema ya estaba resuelto en este hilo.


Saludos.

Si, solo lo dije a modo de comentario

Me disculpo por hacerme mal interpretar

escafandra 04-02-2020 23:30:18

Cita:

Empezado por compuin (Mensaje 535578)
Si, solo lo dije a modo de comentario

Me disculpo por hacerme mal interpretar


Tranquilo, a veces somos muy cuadriculados. Pensé que todavía te quedaban dudas y ese hilo sería el vehículo apropiado para plantearlas.




Saludos.

compuin 05-02-2020 19:38:12

Cita:

Empezado por escafandra (Mensaje 535580)
Tranquilo, a veces somos muy cuadriculados. Pensé que todavía te quedaban dudas y ese hilo sería el vehículo apropiado para plantearlas.




Saludos.

Hola,

Que funcion de Delphi convierte 03º03'31'' a decimales ??


La franja horaria es GMT +2. Ahora son las 22:58:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi