Ich bin echt zu blöd!
Ich habe ein Dreieck mit den Seiten A=40, B=40, C=18. Ich suche den spitzen Winkel, der C
gegenüberliegt. Wenn ich meine Werte in einen Online-Rechner eingebe, erhalte ich
erwartungsgemäß einen Winkel von rund 26 Grad. Die dazu benutzte Formel ist angeblich
γ = arccos( (a² + b² - c²) / 2ab )
Wenn ich das mit Delphi 2010 selbst programmieren will, kommt die Fehlermeldung
"Ungültige Gleitkommeoperation". Was mache ich falsch? Oder stimmt die Formel nicht?
Code:
function ArcCos(const X: Double): Double; // stammt aus
Unit Math
asm
FLD X
FLD1
FADD ST(0), ST(1)
FLD1
FSUB ST(0), ST(2)
FMULP ST(1), ST(0)
FSQRT
FXCH // Absturz
FPATAN
end;
function winkel(a, b, c: Double): Double;
var
X: Double;
begin
// arccos( (a² + b² - c²) / 2ab )
X := (a * a + b * b - c * c) / 2 * a * b;
result := ArcCos(X) * (180 / PI);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Gamma: Double;
begin
Gamma := winkel(40.0, 40.0, 18.0);
end;