Autor Beitrag
Dodekaeder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

WinXP,Win95
Delphi 5
BeitragVerfasst: Sa 28.01.06 13:17 
Hallo!

Ich habe ein kleines (simples) Programm geschrieben zur Berechnung der Geschwindigkeit eines Pistolengeschosses.

Und bei einer Formel brauche ich die Sinusfunktion [sin(45)=0.85] , aber Delphi gibt den wert ja nur im Bogenmaß(Rad) an, aber ich brauche ihn in Altgrad(Deg) [sin(45)=0.707].

Weis jemand wie ich den Wert von Rad in Deg umformen kann?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 28.01.06 13:24 
Hallo und :welcome: in der Entwickler-Ecke.

Obs da ne fertige Funktion gibt, weiss ich nicht. Aber es gilt die Formel
ausblenden Quelltext
1:
 rad / 2*pi  = deg / 360					

Daraus kann man sich ne Funktion ganz schnell selbst basteln:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function Rad2Deg(Rad: Double): Double;
begin
  result := rad / (2 * PI) * 360;
end;

_________________
We are, we were and will not be.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 28.01.06 13:24 
So hier:

ausblenden Delphi-Quelltext
1:
2:
Deg := Rad * 180 / Pi;
Rad := Deg * Pi / 180;


Steht IIRC sogar in der DOH. Die Rihenfolge der Multiplikation und Division spielt kaum eine Raolle; führt man aber jegliche Divisionen NACH Multiplikationen aus, kann man die Rechengenauigkeit erhöhen, da man Rundungsfehler reduziert.

P.S.: Sehr schnelle Implementierungen dieser Funktionen für Extended gibt's unter viewcvs.omorphia.de/...rce/OMathGeneral.pas

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Dodekaeder Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

WinXP,Win95
Delphi 5
BeitragVerfasst: Sa 28.01.06 13:37 
Titel: re:
Hm... naja... ich hab die Formeln ma kurz durchgerechnet mitm Taschenrecher

aber da kommt ja dann der Wert als Grad wieder raus... (z.B. sin(45)=0.8509)
und das in eure Formeln eigesetzt, dann kommt gerundet wieder 45grad raus...)

Ich brauche aber den wert 0.707...

Und wie komme ich nun von 0.8509(Radiant) auf 0.707(altgrad)??? [nicht 45° Grad]
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 28.01.06 13:45 
Also. Wenn 45 als Rad-Wert interpretiert wird, dann ist der Sinus davon ca. 0.85. Der Sinus von 45° (deg) ist 0.7
Da Delphi mit Rad arbeitet, musst du die 45deg in den entsprechenden rad-Wert umwandeln:
ausblenden Delphi-Quelltext
1:
 nullkommasieben = sin(Deg2Rad(45));					

_________________
We are, we were and will not be.
Jetstream
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222



BeitragVerfasst: Sa 28.01.06 14:40 
user profile iconGausi hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
 nullkommasieben = sin(Deg2Rad(45));					


Das heißt, wenn ich 45 von deg auf rad umwandle, dann davon den sinus nehme, bekomme ich 0.7 ?
Ich bekomm bei mir wieder 0.8509 raus.

@ Dodekaeder:

Ich hab dich so verstanden: Du suchst die Zahl, deren Sinus in Rad gleich 0.707 ist.

Wenn das nicht stimmt, musst du das, was jetzt kommt, gar nicht mehr lesen.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Du suchst x, und für x gilt:

Sinus(x) = 0.707

x = arcsin(0.707)

So, was is jetzt arcsin ? schau mal auf deinen taschenrechner, 
da müsste irgendwo ne sin^-1 taste sein, die isses.

Stell den Rechner auf rad und mach sin^-1(0.707) da kommt dann 0.7854 raus.

Also ist Sinus(0.7854) = 0.707


Oder du willst die Sinusfunktion benutzen, indem du Gradzahlen einträgst.

Da machst du einfach aus sin(x) ein sin(x*pi/180)
und schon denkt delphi du hättest für x ne gradzahl eingegeben.
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Sa 28.01.06 14:59 
@Dodekaeder:
Hast DU beim Taschenrechner auch den richtigen "Zahlenbereich" eingestellt? Es macht einen Unterschied wenn der Taschenrechner im DEG oder RAD Modus ist.
cos(360)=1 im DEG Modus und
cos(2pi)=1 im Reg Modus.
Dodekaeder Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41

WinXP,Win95
Delphi 5
BeitragVerfasst: Sa 04.02.06 16:41 
Reflektion:

Die Funktion die ich habe lautet:
W:=(sqr(v0)*(sin(2*a))/g

Es ist eine Formel zur Berechnung der Wurfweite eines Wurfapparates (ein schräger Wurf).
W = die Wurfweite in [m],
v0 = die Geschwindigkeit des Projektils beim Abwurf in [m/s],
a (stellvertredend für alpha) = der Winkel in dem es abgeschossen wird in [Grad],
g = Erdbeschleungung in [m/s^2].

g = eine Konstante,
v0 und a sind Variablen, die ich in editfelder eintragen möchte.

Und ich möchte dann z.b. gerne für v0=1 m/s und für a=45° eingeben, dann sollte für
W=(1²*sin(2*45))/9,81=(1*sin(90))/9,81=(1*1)/9,81=1/9,81=0,101m rauskommen.

Und wie mache ich das jezt, dass Delphi für sin(2*a) den wert in deg angibt???
Die funktion sin(Deg2Rad(a)) funktioniert nicht....
Müsste das nicht eigentlich auch heißen sin(Gra2Deg(a)) ???

@Tilo
Ja ich kann zwischen DEG, RAD und GRA an meinem TR hin und herschalten...

Moderiert von user profile iconGausi: Beiträge zusammengefasst.
LLCoolDave
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 212

Win XP
Delphi 2005
BeitragVerfasst: Sa 04.02.06 16:54 
Nimm statt sin(2*a) einfach sin(a*PI/90)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 04.02.06 17:05 
Ich fürchte, du verstehst da was falsch...oder ich verstehe dich falsch. Delphi kann den Wert von Sin(x) nicht in Deg, Rad oder sonstwas anzeigen. Der Wert von Sin(x) ist immer eine Zahl zwischen -1 und 1. Das einzige, worauf man achten muss ist, dass das x - also der Winkel - in der richtigen "Einheit" angegeben ist. Dabei ist wichtig, was du bzw. Delphi als "einmal im Kreis" definierst. Im normalen Leben sagt man, dass "360°" einen vollen Kreis ergeben. In der Mathematik ist ein voller Kreis "2*Pi" (ohne "°"). Und beim Militär ist ein voller Kreis "400°" (damit ein rechter Winkel 100° ist - kann man einfacher rechnen *g*).

Delphi interpretiert die Werte für x im Sinus im mathematischen Sinne. D.h. Wenn du Delphi einfach Sin(45) ausrechnen lässt, dann geht Delphi davon aus, dass du dich sieben mal im Kreis gedreht hast, und dann noch ungefähr 1.01 weitergegangen bist (7*2Pi + 1.01 = 45).
Du wolltest aber, dass Delphi davon ausgeht, dass du nur um 45° abgebogen bist. Daher musst du die 45°(deg) in (ca.)0.78(rad) umwandeln. Und das geht mit der Funktion DegToRad, die hier bestimmt schon gepostet wurde...

_________________
We are, we were and will not be.