Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Probleme mit atan/atan2 (https://www.delphipraxis.net/200758-probleme-mit-atan-atan2.html)

Pflaumi 22. Mai 2019 14:03

Probleme mit atan/atan2
 
Hallo,
ich programmiere ein Spiel, wofür ich die Funktion "atan" oder "atan2" brauche.
Wenn ich jetzt schreibe: a := atan(50/50);
oder: a := atan2(50, 50);
dann kommt immer die Fehlermeldung "Spiel.pas(96): Undefinierter Bezeichner: 'atan'".
Muss man am Anfang irgenteine Klasse installieren/deklahieren?
Ich freue mich über Hilfe. :-D

Falls du mehr anfangen kannst wenn du den Qelltext hast, dann schreib mir!

Daniel 22. Mai 2019 14:42

AW: Probleme mit atan/atan2
 
Die Funktion müsste ArcTan() heißen.

Rollo62 22. Mai 2019 15:15

AW: Probleme mit atan/atan2
 
Richtig, und diese Unit bräuchte man dafür.

Delphi-Quellcode:
interface

uses
    System.Math
   ...
   ...
   ;

...

Andreas13 22. Mai 2019 17:26

AW: Probleme mit atan/atan2
 
Und nicht vergessen, daß die trigonometrischen Funktionen stets in Bogenmaß (= Radiant) "denken"...

Gruß
Andreas

Pflaumi 23. Mai 2019 14:56

AW: Probleme mit atan/atan2
 
Vielen Dank,
Jetzt habe ich noch ein Problem, ich möchte wissen, wie man dass, was arctan ausgibt,
in Grad umrechnet. :(
Kann mir jemand helfen? :cyclops:

Klaus01 23. Mai 2019 14:59

AW: Probleme mit atan/atan2
 
siehe hier -> https://www.frustfrei-lernen.de/math...-gradmass.html

.. oder RadToDeg aus der Math Library nutzen.

Grüße
Klaus

Andreas13 23. Mai 2019 15:21

AW: Probleme mit atan/atan2
 
Delphi-Quellcode:
Function DegToRad(x: Extended): Extended;
Begin
  Result:= x*Pi/180; // Pi/180 = 0,0174532925199432
End;


Function RadToDeg(x: Extended): Extended;
Begin
  Result:= x/(Pi/180); // Pi/180 = 0,0174532925199432
End;
Gruß
Andreas

Pflaumi 26. Mai 2019 13:59

AW: Probleme mit atan/atan2
 
Danke :)
kann mir noch jemand eine Funktion (oder etwass anderes) nennen,
wie man die Zahl auf ganze Grad runden kann.
Oder einfach allgemein eine Funktion zum Runden!
Das wäre cool 8-)

Heuman 26. Mai 2019 14:12

AW: Probleme mit atan/atan2
 
Hallo,

z.B. so

function cnc_round(fzahl: Extended): Extended;

begin

result := round(fzahl * 10000) / 10000;

end;


Gruß

Andreas13 26. Mai 2019 16:43

AW: Probleme mit atan/atan2
 
Hallo Felix,
etwas professioneller geht es so:
Delphi-Quellcode:
Function ArithRound(x: Extended): Int64;
Begin
  IF Frac(x) < 0.5 Then
    Result:= Floor(x)
  Else
    Result:= Ceil(x);
End;{ArithRound}
{--------------}
oder
Delphi-Quellcode:
Function ArithRound(x: Extended): Int64;
Begin
  Result:= Trunc(x + 0.5);
End;{ArithRound}
{--------------}
Gruß
Andreas

Pflaumi 2. Jun 2019 13:39

AW: Probleme mit atan/atan2
 
Danke,
wenn wir gleich beim Thema sind, schneidet die Funktion FloatToStrF alle Kommastellen weg oder rundet diese genauso?
Dazu habe ich auch noch eine Frage:
Ich weiß, dass hinter der Funktion eine Klammer mit vier Parametern hingehört.
Kann mir jemand sagen, welcher Parameter für was zuständig ist?

Schon mal Danke :wink: !

peterbelow 2. Jun 2019 15:42

AW: Probleme mit atan/atan2
 
Zitat:

Zitat von Pflaumi (Beitrag 1433666)
Danke,
wenn wir gleich beim Thema sind, schneidet die Funktion FloatToStrF alle Kommastellen weg oder rundet diese genauso?
Dazu habe ich auch noch eine Frage:
Ich weiß, dass hinter der Funktion eine Klammer mit vier Parametern hingehört.
Kann mir jemand sagen, welcher Parameter für was zuständig ist?

Schon mal Danke :wink: !

Lern die Hilfe zu benutzen, auch die online-Version.
http://docwiki.embarcadero.com/Libra...ls.FloatToStrF

Die Funktion erlaubt es, die Zahl der Nachkommastellen zu spezifizieren, und auch, ob man das scientific format verwenden will oder fixed format.

http://docwiki.embarcadero.com/Libra...s.TFloatFormat

Andreas13 2. Jun 2019 15:52

AW: Probleme mit atan/atan2
 
Hallo Felix,

die Online-Hilfe führt einen (wenigstens bei XE5 Pro) in die Irre: ms-help://embarcadero.rs_xe5/libraries/System.UnicodeString.FloatToStrF.html
denn FloatToStrF befindet sich nicht in der Unit „System.UnicodeString.pas“ (die gibt’s ja gar nicht), sondern in
System.SysUtils.pas

Dort findest Du u.a.:
function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string;
// TFloatFormat = (ffGeneral, ffExponent, ffFixed, ffNumber, ffCurrency);

FloatToStrF converts the floating-point value given by Value to its string representation. The Format parameter controls the format of the resulting string. The Precision parameter specifies the precision of the given value.
It should be 7 or less for values of type Single, 15 or less for values of type Double, and 18 or less for values of type Extended. The meaning of the Digits parameter depends on the particular format selected.
usw. usf.

Gruß
Andreas

haentschman 3. Jun 2019 08:14

AW: Probleme mit atan/atan2
 
Moin...:P
Zitat:

die Online-Hilfe führt einen (wenigstens bei XE5 Pro) in die Irre
...nachfolgender Hinweis hat schon einen ganz langen Bart. Ich weiß nicht wie oft ich das schon erwähnt habe. :zwinker:
Delphi-Referenz: https://www.delphipraxis.net/dp_reference.php
FloatToStrF aus DelphiReferenz: https://www.delphipraxis.net/dp_refe...ry=floattostrf
8-)

Andreas13 3. Jun 2019 08:29

AW: Probleme mit atan/atan2
 
@haentschman

Hallo,

Pflaumi hat Hilfe gebraucht, ich denke ich habe ihm etwas helfen können. Schnelle Hilfe ist doppelte Hilfe... Da zählt die "Bartlänge" nicht: für einen Neugeborenen sind bekanntlich alle Witze neu.

Gruß
Andreas

Luckie 3. Jun 2019 10:18

AW: Probleme mit atan/atan2
 
Aber es ist nicht neu, dass man bei einer neue Frage auch einen neuen Thread aufmachen sollte. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz