unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
ButtonBerechne: TButton;
ButtonAbbruch: TButton;
Label1: TLabel;
EditAx: TEdit;
Label2: TLabel;
EditAy: TEdit;
Label3: TLabel;
EditAz: TEdit;
Label4: TLabel;
Label5: TLabel;
EditBx: TEdit;
Label6: TLabel;
EditBy: TEdit;
Label7: TLabel;
EditBz: TEdit;
Label8: TLabel;
Label9: TLabel;
EditBetragA: TEdit;
Label10: TLabel;
EditBetragB: TEdit;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
EditCx: TEdit;
Label14: TLabel;
EditCy: TEdit;
Label15: TLabel;
EditCz: TEdit;
Label16: TLabel;
EditSkalarprodukt: TEdit;
EditWinkel: TEdit;
Label17: TLabel;
EditCoswinkel: TEdit;
procedure ButtonAbbruchClick(Sender: TObject);
procedure ButtonBerechneClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonAbbruchClick(Sender: TObject);
begin
Close;
end;
function ArcCos(x:real):real;
begin
if x=0
then Result:= Pi/2
else Result:= ArcTan(sqrt(1-sqr(x))/x);
if Result<0 then Result:= Result+Pi;
end;
function BogenZuGrad(AlphaBog:real):real;
begin
result:=((2*Pi)/(360))*alphaBog;
{ result:=180*alphaBog/Pi; }
end;
procedure TForm1.ButtonBerechneClick(Sender: TObject);
var VektorA, VektorB, Vektor0 : array[1..3] of integer;
skalarprodukt : integer;
betragA, betragB, cos_alpha, alphaBog, alphaGrad : real;
begin
//Jetzt werden die Werte eingelesen
VektorA[1]:=StrToInt(EditAx.Text);
VektorA[2]:=StrToInt(EditAy.Text);
VektorA[3]:=StrToInt(EditAz.Text);
VektorB[1]:=StrToInt(EditBx.Text);
VektorB[2]:=StrToInt(EditBy.Text);
VektorB[3]:=StrToInt(EditBz.Text);
//Berechnen und Ausgeben des Skalarproduktes
skalarprodukt:= vektorA[1]*vektorB[1]+VektorA[2]*VektorB[2]+VektorA[3]*VektorB[3];
EditSkalarprodukt.Text:=IntToStr(skalarprodukt);
//Ausgeben des Vektorbetrages A
BetragA:= sqrt(sqr(VektorA[1])+sqr(VektorA[2])+sqr(VektorA[3]));
EditBetragA.Text:=FloatToStr(BetragA);
//Ausgeben des Vektorbetrages B
BetragB:= sqrt(sqr(VektorB[1])+sqr(VektorB[2])+sqr(VektorB[3]));
EditBetragB.Text:=FloatToStr(BetragB);
//Berechnen des Vektorenwinkels
cos_alpha:=skalarprodukt/(BetragA*BetragB);
EditCoswinkel.Text:=FloatToStr(cos_alpha);
EditWinkel.Text:=FloatToStr(BogenZuGrad(alphaGrad));
end;
end.