Cita:
Empezado por compuin
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.