Buscar

Função que retorna o percentual da lua que está iluminada

Código

Encontrei esta função na internet em vb e converti para delphi. Fiz alguns testes e a precisão é razoavel.
Para Utilizar basta passar um date time com a data e a hora que você quer, vai retornar um valor de 0 a 1 informando quanto está iluinado

function Lua(Data : TDateTime): Real;
var     i, j, k, j2, ju, M: real;
        yr, mo, da, ho, mi, se, ms : word;
begin
  DecodeDAte(Data, yr, mo, da);
  DecodeTime(Data, Ho, Mi, Se, Ms);
  i := yr;
  j := mo;
  k := da + (Ho / 24) + (Mi / 1440) + (se / 86400) + (ms / 86400000);
  j2 := int( (j - 14)/12 );
  ju := k - 32075 + int(1461 * ( i + 4800 + j2 ) / 4 );
  ju := ju + int( 367 * (j - 2 - j2 * 12) / 12);
  ju := ju - int(3 * int( (i + 4900 + j2) / 100) / 4);
  M:=(Ju+4.867)/ 29.53058;
  M:=2*(M-Int(m))-1;
  Result := Abs(M) * 100;
end;

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Data e hora
Adicionada dia: 20/09/06
Por: Renato Felix De Almeida
Visualizada: 2922 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009