Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Grad in Sin, Cos und Tan ausgeben (https://www.delphipraxis.net/106221-grad-sin-cos-und-tan-ausgeben.html)

MrMyagi 7. Jan 2008 16:17


Grad in Sin, Cos und Tan ausgeben
 
Moin allerseits,
und zwar möchte ich einmal wissen,
wie man mit Delphi eine ganz gewöhnliche
Gradangabe in Sinus, Cosinus und Tangenz
umwandelt?


mfG, Nico

STS301 7. Jan 2008 16:19

Re: Grad in Sin, Cos und Tan ausgeben
 
Delphi-Quellcode:
Rad := DegToRad(Grad);
// un umgekehrt
Deg := RadtoDeg(Rad);

MrMyagi 7. Jan 2008 16:21

Re: Grad in Sin, Cos und Tan ausgeben
 
Danke für die schnelle Antwort, jedoch
weiß ich jetzt nicht genau, wie ich mir
nun den entsprechende sinus, cosinus
und tangenz Wert daraus herleiten soll?

3_of_8 7. Jan 2008 16:21

Re: Grad in Sin, Cos und Tan ausgeben
 
Das ist die Umwandlung von Grad in Bogenmaß und umgekehrt.

Sinus, Kosinus und Tangens ist in den Funktionen Delphi-Referenz durchsuchensin, Delphi-Referenz durchsuchencos und Delphi-Referenz durchsuchentan implementiert. Diese Funktionen erwarten eine Winkelangabe im Bogenmaß als Parameter.

STS301 7. Jan 2008 16:26

Re: Grad in Sin, Cos und Tan ausgeben
 
Grad=
Delphi-Quellcode:
Grad := RadtoDeg(Rad);
//habe mich vorhin verschrieben
zb.
Delphi-Quellcode:
var i:real;
begin
i:=RadtoDeg(strtofloat(edit1.text));
//und dann normal weiter machen
hoffe es geht

MrMyagi 7. Jan 2008 16:28

Re: Grad in Sin, Cos und Tan ausgeben
 
Ok Danke,
das klappt eigendlich schon so halb.
Naja halt nur so halb...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
a := strtofloat(LabeledEdit1.text);
b := sin(a);
memo1.Lines.add(floattostr(b));
end;
...denn wenn ich dort für Winkel = 90 eingebe,
gibt er mir als sin-Wert = 0,89.. heraus, jedoch
weiß ich, dass 90° = 1 sin sind??? :(

3_of_8 7. Jan 2008 16:34

Re: Grad in Sin, Cos und Tan ausgeben
 
Ich zitiere mich einmal selbst:

Zitat:

Zitat von 3_of_8
Sinus, Kosinus und Tangens ist in den Funktionen Delphi-Referenz durchsuchensin, Delphi-Referenz durchsuchencos und Delphi-Referenz durchsuchentan implementiert. Diese Funktionen erwarten eine Winkelangabe im Bogenmaß als Parameter.

Bogenmaß. Nicht Grad. Du musst also vorher in Bogenmaß umrechnen. Wie du das machst, steht noch einen Beitrag weiter oben: Mit der Funktion Delphi-Referenz durchsuchenDegToRad.

STS301 7. Jan 2008 16:35

Re: Grad in Sin, Cos und Tan ausgeben
 
wenn du den Befehl zum Umwandeln nicht einfügst ;)

MrMyagi 7. Jan 2008 16:36

Re: Grad in Sin, Cos und Tan ausgeben
 
Ok Danke jetzt habe ichs :-D :-D :-D
mit dem folgenden code klappts :lol:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=DegtoRad(strtofloat(labelededit1.text));
b := sin(a);
memo1.Lines.add(floattostr(b));
end;
...also so wie du erklärt hast :-D

mfG, Nico

MrMyagi 7. Jan 2008 17:24

Re: Grad in Sin, Cos und Tan ausgeben
 
Sorry, hätte ich ja gemacht,
wenn ich dann nicht ein Doppelpost getätigt hätte,
hätte ich auch keinen neuen Thread aufgemacht.
(durch Edit wird das Thema ja nicht noch einmal aufgefrischt,
da ich dachte, dass das Thema schon erledigt sei)

Alse die Dateien gibts hier
und die "neue" Fehlerbeschreibung

Fehlerbeschreibung:
Zitat:

irgendwie klappt die Umrechnung teils schon und teils irgendwie nicht.
Muss ich da zwischen Sin, Cos und Tan noch irgendwelche unterschiede machen?
Bzw irgendetwas spezielles einbauen?

3_of_8 7. Jan 2008 18:11

Re: Grad in Sin, Cos und Tan ausgeben
 
Was meinst du mit "die Unterscheidung"?

MrMyagi 7. Jan 2008 18:20

Re: Grad in Sin, Cos und Tan ausgeben
 
wenn ich jedesmal nur, nachdem ich a ins rad
umgewandelt habe,
b := sin(a);
c := cos(a);
d := tan(a);
es so eingebe, stimmen die sin Werte meistens immer,
jedoch bei den Cos WErten is bei über 90° Schluss und
der Tangens wird teilweise auch ganz komisch angezeit mit 6,...

3_of_8 7. Jan 2008 18:51

Re: Grad in Sin, Cos und Tan ausgeben
 
Ich wäre mir ziemlich sicher, dass die Werte stimmen.

Und beim Tangens können Werte im kompletten Wertebereich der reellen Zahlen herauskommen, 6,irgendwas ist also durchaus möglich.

MrMyagi 7. Jan 2008 18:57

Re: Grad in Sin, Cos und Tan ausgeben
 
Ok dankeschön,
dann vertraue ich dem ganzen mal :-D

Jelly 7. Jan 2008 19:54

Re: Grad in Sin, Cos und Tan ausgeben
 
Zitat:

Zitat von MrMyagi
dann vertraue ich dem ganzen mal :-D

Wie wär es denn mal mit einem kleinen Exkurs in die Trigonometrie:
cos und sin sind beides periodische Funktionen, mit der Periode 2*Pi. D.h. der cos(a) = cos(a + 2Pi) = cos(a + 4Pi) usw.
Und 2*Pi entspricht bekanntlich einem gesamten Umlauf am Einheitskreis, also 360 Grad (und somit sollte auch klar werden, wie die Funktion DegToRad bzw. RadtoDeg die Werte umrechnet... Ich sag nur Dreisatz)

Der Wertebereich für beide Funktionen liegt zwischen [-1..1]. Andere Werte kann der cos und sin nicht annehmen.

Weiterhin gilt, dass der tan sich auch schreiben lässt als
tan(a) = sin(a)/cos(a)
und daruas wird auch klar, dass der Wertebereich von tan ]-unendlich..+unendlich[, denn wenn cos(a) gegen null strebt (das ist der Fall bei bei 90 Grad und bei 270 Grad), tendiert der Nenner gegen null und der Bruch somit gegen unendlich (+ oder -), da für cos(a)=0 gilt dass sin(a)=-1 oder +1 wird.

EDIT: Danke an Klubscheisser 3_of_8 (nicht bös gemeint)

3_of_8 7. Jan 2008 20:04

Re: Grad in Sin, Cos und Tan ausgeben
 
Vor das -unendlich gehört noch ein ] ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr.

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