Thema: Delphi ArcCos Winkelberechnung

Einzelnen Beitrag anzeigen

DBR

Registriert seit: 19. Jul 2005
38 Beiträge
 
#1

ArcCos Winkelberechnung

  Alt 10. Okt 2019, 18:08
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;
  Mit Zitat antworten Zitat