Показать сообщение отдельно
  #3  
Старый 25.12.2011, 16:17
mmmm mmmm вне форума
Прохожий
 
Регистрация: 25.12.2011
Сообщения: 3
Репутация: 10
По умолчанию

PHP код:
procedure SetTime( ATime : real; var AOrb : TOrbit);
begin
  AOrb
.Classic.ArgLat := GetArgLat( ATime, AOrb );
  
AOrb.Time := ATime;
  
ClassToXYZ( AOrb );
end;

procedure SetTime( ATime : real;  IniOrb : TOrbit; var AOrb : TOrbit);
begin
  
//  AOrb.Classic.ArgLat := u;
  
AOrb := IniOrb;
  
AOrb.Classic.ArgLat := GetArgLat( ATime, AOrb );
  
AOrb.Time := ATime;
  
ClassToXYZ( AOrb );
end;

function  
SetTimeF( ATime : real; IniOrb : TOrbit ) : TOrbit;
begin
  Result 
:= IniOrb;
  
Result.Classic.ArgLat := GetArgLat( ATime, Result );
  
Result.Time := ATime;
  
ClassToXYZ( Result );
end;

function 
SiderialTime0( Value : TDateTime ) : real;
// Звездное время на 0 час даты Value
var
  
t, d, r : real;
  
n : integer;
begin
  d 
:= DateTimeToJulianDate( Value );      // Юлианская дата
  
t := ( Trunc( d ) -  JD2000 ) / 36525;   // Число дней в Ю-столетиях
  
r := (3.879333e-4 * t +  360000.7700536 ) * t + 101.25228375;
  
n := Trunc( r / 360 );  // сколько раз по 2пи
  
r := r - n * 360;       // Угол приведен к 0..360 град
  
Result := r * ToRad;    // результат в радианах
end;

function 
SiderialTime ( Value : TDateTime ) : real;
var
  
dT, r : real;
begin
  dT 
:= TimeOf( Value ) * 86400 ; // число секунд среднесолнечного времени суток
  
r :=  SiderialTime0( Value ) + We * dT; // прибл значение без поправки
  
Result := r;
end;

[
color="DarkRed"][b]// мое творение начинается отсюда[/b][/color]
procedure NIP (var Nip:TGeo);
begin
//координаты:55о56'59.16" сш,37о58'00.34" вд
//shirota NIP
Nip.Latitude:=55*ToRad+56*ToRad/60+59.16*ToRad/3600;
//dolgota nip
Nip.Longitude:=37*ToRad+58*ToRad/60+00.34*ToRad/3600;
//radius Nip
Nip.R:=RE;
end;

procedure DecKoord(var Nip:TGeo);
var
Pos:T3DVector;
begin
Nip
.Pos.X:=RE*Cos(Nip.Longitude)*Cos(Nip.Latitude) ;
Nip.Pos.Y:=RE*Cos(Nip.Latitude)*Sin(Nip.Longitude);
Nip.Pos.Z:=RE*Sin(Nip.Latitude);
end;

procedure ugolMesta (var alfa:real);
var
AOrbit:TOrbit;
Nip:TGeo;
pr,ch,zn:real ;
razn,Pos,PosNip,norma:T3dVector;
begin
pr
:=ScalProd( AOrbit.Geo.Pos,Nip.Pos) ;
ch:=pr*Nip.Pos.X+pr*Nip.Pos.Y+pr*Nip.Pos.Z;
razn:=differ (AOrbit.Geo.Pos,Nip.Pos);
norma:= unitVect (razn);
zn:=RE*norma.X+RE*norma.Y+RE*norma.Z;
alfa:=ArcSin(ch/zn);
end;


end. 
Ответить с цитированием