1 unit FukusosuuU; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 7 Dialogs, StdCtrls, ExtCtrls, Math; 8 9 type 10 TFormMain = class(TForm) 11 PanelMain: TPanel; 12 ButtonClose: TButton; 13 PanelChokkou: TPanel; 14 EditX: TEdit; 15 EditY: TEdit; 16 PanelKyoku: TPanel; 17 EditR: TEdit; 18 EditT: TEdit; 19 ButtonCkaraK: TButton; 20 ButtonKkaraC: TButton; 21 procedure ButtonCloseClick(Sender: TObject); 22 procedure ButtonCkaraKClick(Sender: TObject); 23 procedure ButtonKkaraCClick(Sender: TObject); 24 private 25 { Private 宣言 } 26 X,Y : Real; // 直交形式 27 R,T : Real; // 極形式 28 procedure ReadChokkou; 29 procedure ReadKyoku; 30 procedure WriteChokkou; 31 procedure WriteKyoku; 32 public 33 { Public 宣言 } 34 end; 35 36 var 37 FormMain: TFormMain; 38 39 implementation 40 41 {$R *.dfm} 42 (******************** 一般のプロシージャ ********************) 43 function RadianToDegree(Radian : Real) : Real; 44 { 弧度法 Radian ⇒ 60分法 } 45 begin 46 RadianToDegree := Radian/Pi*180; 47 end; {RadianToDegree} 48 49 function DegreeToRadian(Degree : Real) : Real; 50 { 60分法 Degree ⇒ 弧度法 } 51 begin 52 DegreeToRadian := Degree*Pi/180; 53 end; {DegreeToRadian} 54 55 procedure ChokkouKaraKyoku(X,Y : Real; var R,T : Real); 56 { 直交形式 (X,Y) ⇒ 極形式 (R,T) } 57 begin 58 R := Sqrt(Sqr(X)+Sqr(Y)); 59 T := RadianToDegree(ArcTan2(Y,X)); 60 end; {ChokkouKaraKyoku} 61 62 procedure KyokuKaraChokkou(R,T : Real; var X,Y : Real); 63 { 極形式 (R,T) ⇒ 直交形式 (X,Y) } 64 begin 65 X := R*Cos(DegreeToRadian(T)); 66 Y := R*Sin(DegreeToRadian(T)); 67 end; {KyokuKaraChokkou} 68 69 (******************** フォームのメソッド ********************) 70 procedure TFormMain.ReadChokkou; 71 { 直交形式を読む } 72 begin 73 X := StrToFloat(EditX.Text); 74 Y := StrToFloat(EditY.Text); 75 end; {ReadChokkou} 76 77 procedure TFormMain.ReadKyoku; 78 { 極形式を読む } 79 begin 80 R := StrToFloat(EditR.Text); 81 T := StrToFloat(EditT.Text); 82 end; {ReadKyoku} 83 84 procedure TFormMain.WriteKyoku; 85 { 極形式を書く } 86 begin 87 EditR.Text := Format('%6.3f',[R]); 88 EditT.Text := Format('%6.1f',[T]); 89 end; {WriteKyoku} 90 91 procedure TFormMain.WriteChokkou; 92 { 直交形式を書く } 93 begin 94 EditX.Text := Format('%6.3f',[X]); 95 EditY.Text := Format('%6.3f',[Y]); 96 end; {WriteChokkou} 97 98 (******************** イベントハンドラー ********************) 99 procedure TFormMain.ButtonCloseClick(Sender: TObject); 100 begin 101 Close; 102 end; 103 104 procedure TFormMain.ButtonCkaraKClick(Sender: TObject); 105 begin 106 ReadChokkou; 107 ChokkouKaraKyoku(X,Y,R,T); 108 WriteKyoku; 109 end; 110 111 procedure TFormMain.ButtonKkaraCClick(Sender: TObject); 112 begin 113 ReadKyoku; 114 KyokuKaraChokkou(R,T,X,Y); 115 WriteChokkou; 116 end; 117 118 end.