
25.12.2011, 16:11
|
Прохожий
|
|
Регистрация: 25.12.2011
Сообщения: 3
Репутация: 10
|
|
проблемы с курсовой
Пишу программу вычисляющую угол места Космического Аппарата.Долготу и широту определяет,а угол места не находит. Не понимаю своей ошибки.Прошу помочь объяснить , что не так..
alfa - искомый угол места.
1юнит:
PHP код:
unit Unit1512;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls,
IniFiles, ComCtrls,
Unit2_1512;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
cmOpen: TMenuItem;
cmNew: TMenuItem;
N3: TMenuItem;
cmSave: TMenuItem;
cmSaveAs: TMenuItem;
N5: TMenuItem;
cmClose: TMenuItem;
OpenDialog1: TOpenDialog;
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
Panel3: TPanel;
Memo1: TMemo;
SaveDialog1: TSaveDialog;
lePerigee: TLabeledEdit;
leEccentr: TLabeledEdit;
leArgPerigee: TLabeledEdit;
leArgLatitude: TLabeledEdit;
leAscendNode: TLabeledEdit;
leInclin: TLabeledEdit;
DateTimePicker1: TDateTimePicker;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure cmOpenClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cmSaveClick(Sender: TObject);
procedure cmSaveAsClick(Sender: TObject);
procedure cmCloseClick(Sender: TObject);
procedure cmNewClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
FFileName : string;
FData : TIniFile;
FOrb : TOrbit;
FGeo:TGeo;
(**) procedure ReadOrbitData;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
Math,
{ Unit2,} Unit3_1512;
const
snOrbit = 'ORBIT';
{$R *.dfm}
procedure TForm1.cmOpenClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.Clear; //
FFileName := OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(FFileName);
cmSave.Enabled := true;
cmSaveAs.Enabled := true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.InitialDir := ExtractFilePath( Application.ExeName );
Memo1.Clear;
SaveDialog1.InitialDir := OpenDialog1.InitialDir;
SaveDialog1.Filter := OpenDialog1.Filter;
SaveDialog1.DefaultExt := OpenDialog1.DefaultExt;
cmSave.Enabled := false;
cmSaveAs.Enabled := false;
FFileName := IncludeTrailingBackslash(OpenDialog1.InitialDir) + 'noname.dat';
end;
procedure TForm1.cmSaveClick(Sender: TObject);
begin
Memo1.Lines.SaveToFile(FFileName);
end;
procedure TForm1.cmSaveAsClick(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
FFileName := SaveDialog1.FileName;
Memo1.Lines.SaveToFile(FFileName);
end;
end;
procedure TForm1.cmCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.cmNewClick(Sender: TObject);
begin
FData := TIniFile.Create( FFileName );
lePerigee.Text := FloatToStr(FData.ReadFloat(snOrbit, 'Perigee', 7000));
leEccentr.Text := FloatToStr(FData.ReadFloat(snOrbit, 'Eccentricity', 0.01));
leInclin.Text := FloatToStr(FData.ReadFloat(snOrbit,'Inclin', 57.3));
leAscendNode.Text := FloatToStr(FData.ReadFloat(snOrbit,'AscNode', 0));
leArgPerigee.Text := FloatToStr(FData.ReadFloat(snOrbit,'PeriArg', 270));
leArgLatitude.Text := FloatToStr(FData.ReadFloat(snOrbit,'ArgLatitude', 0));
DateTimePicker1.DateTime := Now;
FData.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
alfa, pr, ch, razn:real;
CurNip:TGeo;
CurPos : T3DVector;
CurOrb : TOrbit;
begin
{
FOrb.Classic.Rp := StrToFloat(lePerigee.Text);
FOrb.Classic.e := StrToFloat(leEccentr.Text);
FOrb.Classic.ArgLat := StrToFloat(leArgLatitude.Text) * ToRad;
FOrb.Classic.AscNode := StrToFloat(leAscendNode.Text) * ToRad;
FOrb.Classic.Incl := StrToFloat(leInclin.Text) * ToRad ;
FOrb.Classic.ArgPerigee := StrToFloat(leArgPerigee.Text) * ToRad;
FOrb.Epoch := DateTimePicker1.DateTime;
FOrb.Time := 0;
}
ReadOrbitData;
ClassToXYZ( FOrb );
NIP (FGeo);
ugolMesta (alfa);
//ugolMesta (pr);
// ugolMesta (ch);
// ugolMesta (razn);
// Использование функции форматирования
CurNip:=FGeo;
CurOrb := FOrb;
SetTime( 1000, CurOrb );
// SetTime( 100, Orb, CurOrb );
// CurOrb := SetTimeF( 100, FOrb );
Memo1.Lines.Add('Время КА=' + FloatToStr( CurOrb.Time ));
Memo1.Lines.Add('X ='+FloatToStr(CurOrb.Cartes.Pos.X) );
Memo1.Lines.Add('Y ='+FloatToStr(CurOrb.Cartes.Pos.Y) );
Memo1.Lines.Add('Z ='+FloatToStr(CurOrb.Cartes.Pos.Z) );
Memo1.Lines.Add('Vx='+FloatToStr(CurOrb.Cartes.Vel.X) );
Memo1.Lines.Add('Vy='+FloatToStr(CurOrb.Cartes.Vel.Y) );
Memo1.Lines.Add('Vz='+FloatToStr(CurOrb.Cartes.Vel.Z) );
Memo1.Lines.Add('L=' +FloatToStr(CurOrb.Geo.Longitude ));
Memo1.Lines.Add('F=' +FloatToStr(CurOrb.Geo.Latitude ));
Memo1.Lines.Add('R=' +FloatToStr(CurOrb.Geo.R ) );
Memo1.Lines.Add ('dolgota nip=' +FloatToStr(CurNip.Longitude) ) ;
Memo1.Lines.Add ('shirota Nip=' +FloatToStr(CurNip.Latitude) ) ;
Memo1.Lines.Add ('radius=' +FloatToStr(CurNip.R) ) ;
Memo1.Lines.Add('X nip=' +FloatToStr(CurNip.Pos.X));
// Memo1.Lines.Add('Y nip=' +FloatToStr(CurPos.Ynip ));
// Memo1.Lines.Add('Z nip=' +FloatToStr(CurPos.Znip )); }
Memo1.Lines.Add('ugol mesta=' +floatToStr(alfa));
// Memo1.Lines.Add('pr=' +floatToStr(pr));
// Memo1.Lines.Add('ch=' +floatToStr(ch));
// Memo1.Lines.Add('razn=' +floatToStr(razn));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ReadOrbitData; // Получить FOrb
Form3.Show; //нарисовать картинку
Form3.Perform( wm_DrawChart, longint(@FOrb), 0 );
end;
procedure TForm1.ReadOrbitData; //читает данные и заносит в структуру орбиты
begin
FOrb.Classic.Rp := StrToFloat(lePerigee.Text);
FOrb.Classic.e := StrToFloat(leEccentr.Text);
FOrb.Classic.ArgLat := StrToFloat(leArgLatitude.Text) * ToRad;
FOrb.Classic.AscNode := StrToFloat(leAscendNode.Text) * ToRad;
FOrb.Classic.Incl := StrToFloat(leInclin.Text) * ToRad ;
FOrb.Classic.ArgPerigee := StrToFloat(leArgPerigee.Text) * ToRad;
FOrb.Epoch := DateTimePicker1.DateTime;
FOrb.Time := 0;
end;
end.
|