Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Trigonometrische Funktionen im Gradmaß (https://www.delphipraxis.net/137467-trigonometrische-funktionen-im-gradmass.html)

Wolfgang Mix 21. Jul 2009 15:41


Trigonometrische Funktionen im Gradmaß
 
Bei der Frage nach dem Bogenmass finde ich immer wieder fragende Gesichter.
Hier kann man sich schlau machen:

http://de.wikipedia.org/wiki/Bogenma%C3%9F

Gemäß Dreisatz gilt:

alpha(bogen)/alpha(grad)=2*PI/360 Grad
oder
alpha(bogen)=alpha(grad)*PI/180 Grad

woraus folgt:

Delphi-Quellcode:
function sinus(alpha:real):real;
var bogen:real;
begin
   bogen:=alpha*pi/180;
   sinus:=sin(bogen);
end;

function cosinus(alpha:real):real;
var bogen:real;
begin
   bogen:=alpha*pi/180;
   cosinus:=cos(bogen);
end;

function tangens(alpha:real):real;
var bogen:real;
begin
  bogen:=alpha*pi/180;
  tangens:=(sin(bogen)/cos(bogen));
end;

function cotangens(alpha:real):real;
var bogen:real;
begin
    bogen:=alpha*pi/180;
    cotangens:=cos(bogen)/sin(bogen);
end;
Anmerkung:
Bei den Funktionen Tangens und Cotangens wird eventuell durch Null geteilt.
Das muss der Programmierer natürlich abfangen!
Wer es noch einfacher will, schaut sich bitte die Delphi-Funktionen DegToRad
und RadToDeg aus der Unit Math an. Beispiele findest du hier:

http://www.delphibasics.co.uk/ByUnit.asp?Unit=Math

quendolineDD 21. Jul 2009 18:23

Re: Trigonometrische Funktionen im Gradmaß
 
Jedes mal, wenn der Parameter Alpha den Wert 0 hat, wird letztendlich durch 0 geteilt.
Edit: Alpha vergessen :oops:

Wolfgang Mix 21. Jul 2009 19:12

Re: Trigonometrische Funktionen im Gradmaß
 
Das stimmt so nicht ganz.
Aufpassen muß man bei tangens(90) bzw. tan(pi/2) und
bei cotangens(180) bzw. cot(pi) und Faktoren davon oder einfacher,
wenn das Ergebnis des Nenners Null wird.

mfg
Wolfgang

uligerhardt 21. Jul 2009 19:29

Re: Trigonometrische Funktionen im Gradmaß
 
IMHO ist das Prinzip dieser Routinen fragwürdig - trigonometrische Funktionen fressen nun mal Bogenmaß (oder spucken es aus, jenachdem :)). Ich finde es besser, intern durchgehend mit Bogenmaß zu arbeiten, und an wenigen, genau definierten Stellen (Schnittstelle zum Benutzer o.ä.) mit DegToRad und RadToDeg umzuwandeln.

Wolfgang Mix 21. Jul 2009 19:39

Re: Trigonometrische Funktionen im Gradmaß
 
Deine Meinung kann man so gelten lassen. Dazu kommt, daß im wirklichen Leben die trigonometrischen Funktionen aus Taylor'schen Reihen abgeleitet werden, unabhängig von Programmiersprache und Plattform.

Wolfgang Mix 9. Aug 2009 16:23

Re: Trigonometrische Funktionen im Gradmaß
 
Liste der Anhänge anzeigen (Anzahl: 1)
Der Vollstndigkeit halder poste ich noch die Arcusfunktionen in Gradmaß.
Die mathematischen Zusammenhänge findet ihr im Anhang (Quelle: Gieck - Technische Formelsammlung).
Ungültige Übergabewerte müßt ihr selber abfangen.

Nicht vergessen: Unit math einbinden!

Delphi-Quellcode:
implementation

{$R *.dfm}

function ArcSinus(x:real):real;
begin
    Result:=arcsin(x)*180/pi;
end;

function ArcCosinus(x:real):real;
begin
    Result:=arccos(x)*180/pi;
end;

function ArcTangens(x:real):real;
begin
    Result:=arctan(x)*180/pi;
end;

function ArcCotangens(x:real):real;
begin
    Result:=arctan(1/x)*180/pi;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 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