procedure TForm1.Button3Click(Sender: TObject);
var
a,b:Variant;
rad,kaku:Double; // 角度
begin
// 加算と減算が複素平面上でのベクトルの和と差で表され、
// 乗算と除算が複素平面上での回転
a := VarComplexCreate;
rad := (27 / 180) * pi; // 27度
a.real := cos(rad); // 偏角27度を複素数にセット
a.Imaginary := sin(rad);
a := a * a; // 複素数の積は偏角は和
kaku := VarComplexAngle(a); // radian
kaku := kaku / pi * 180;
label3.Caption := floattostr(kaku); // 54 で正解
// 偏角45度と偏角135(=180-45)度の足し算
rad := (45 / 180) * pi;
a.Real := cos(rad);
a.Imaginary := sin(rad);
rad := (135 / 180) * pi;
b := VarComplexCreate(cos(rad),sin(rad));
a := a + b; // ベクトルの和
kaku := VarComplexAngle(a);
kaku := kaku / pi * 180;
label4.Caption := floattostr(kaku); // 90.000..1
label5.Caption := floattostr(VarComplexAbs(a)); // 1.41421356...
end;
なんとなくわかってきました。
|