Entwickler-Ecke
Sonstiges (Delphi) - Wahrscheinlich ziemlich billiger Fehler im Source
area6 - Mo 24.06.02 10:03
Titel: Wahrscheinlich ziemlich billiger Fehler im Source
Hallo,
einmal wieder habe ich einen Kampf mit sinus, cosinus und Co.
Folgender Source hat einen Fehler, finden Sie ihn!!!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| if beta.Text<>'0' then begin {Winkel beta ggb.} if hypo.Text<>'0' then begin {Hypothenuse ggb.} b:= strtofloat(beta.Text); hy:= strtofloat(hypo.Text); a:= 90-b; {einfach gemacht --> eine Möglichkeit an alpha zu kommen} an:= cos(a)*hy; {das kann er nicht richtig berechnen} g:= sin(a)*hy; {das auch nicht} alpha.Text:= floattostr(a); ank.Text:= floattostr(an); gegen.Text:= floattostr(g); exit; end; if ank.Text<>'0' then begin b:= strtofloat(beta.Text); an:= strtofloat(ank.Text); a:= 90-b; g:= tan(a)*an; hy:= sqrt((g*g)+(an*an)); alpha.Text:= floattostr(a); gegen.Text:= floattostr(g); hypo.Text:= floattostr(hy); exit; end; |
Nur zur Info:
1.) an = Ankathede; g = Gegenkathede; hypo = Hypothenuse; a = alpha; b = beta
2.) Math-Unit ist eingebunden und arcsin und arccos, etc. laufen.
3.) An der Umrechnung von Bogen- in Gradmaß liegt es auch nicht...
Viel Spass beim Suchrätsel...
cu, area6.
Code-Tags hinzugefügt. Tino
Torsten - Mo 24.06.02 12:02
Moinsen!
Wie ist das jetzt gemeint?
Hast Du damit ein Problem oder soll das ein Rätsel für uns sein?
Grüße
Torsten
Torsten - Mo 24.06.02 12:06
Ach ja, noch was.
Was soll Beta sein? Welcher Winkel?
Im rechtwinkligen Dreieck spielt nur der Winkel Alpha, also der von Hypotenuse und Ankatete eingeschlossene Winkel eine Rolle.
Beta wird bei Dir auch gar nicht verwendet. Also wozu?
Arbeite doch direkt mit Alpha.
Grüße
Torsten
Lemmy - Mo 24.06.02 12:58
Titel: Re: Wahrscheinlich ziemlich billiger Fehler im Source
area6 hat folgendes geschrieben: |
3.) An der Umrechnung von Bogen- in Gradmaß liegt es auch nicht...
|
was soll der Müll?? Natürlich liegt der Fehler daran! Wo rechnest Du denn um??
Zitat aus der Onlinehilfe:
Beschreibung
Sin gibt den Sinus des mit X angegebenen Winkels im Bogenmaß (Rad) zurück.
und das steht so bei cos,... auch! Ansonsten rechnet das Zeugs...
Grüße
Lemmy
Torsten - Mo 24.06.02 13:14
Moinsen!
Ja, rechnet tut er wohl. Das habe ich auch eben festgestellt.
Also wo soll Dein Fehler sein?
Sag uns das doch bitte.
Und die Angabe im Bogenmaß ist ja kein Fehler. Ist nur eine Frage der Darstellung.
Grüße
Torsten
MathiasH - Mo 24.06.02 15:11
du ziehst von 90 b ab , 1/4 Kreis ist in dieser Maßeinheit(b und a) aber Pi/2 also a = Pi/2 - b und ab muss schon im Bogenmaß vorliegen.
MathiasH
area6 - Mo 24.06.02 16:35
o.k., also:
1.) beta ist deshalb dabei, weil beide Winkel eingegeben werden können
2.) mit der Umrechnung in Gradmaß (die ich nur kurzfristig aus dem source entfernt habe) kommt trotzdem nicht das richtige Ergebnis raus (das Ergebnis ist weder Grad- noch Bogenmaß, sondern schlicht falsch)
area6 - Mo 24.06.02 16:35
o.k., also:
1.) beta ist deshalb dabei, weil beide Winkel eingegeben werden können
2.) mit der Umrechnung in Gradmaß (die ich nur kurzfristig aus dem source entfernt habe) kommt trotzdem nicht das richtige Ergebnis raus (das Ergebnis ist weder Grad- noch Bogenmaß, sondern schlicht falsch)
3.) ó.g. ist mein Problem und ein Suchrätsel für Euch dazu
Torsten - Mo 24.06.02 16:41
Gib doch mal bitte ein Beispiel für eine Berechnung, die Deiner Meinung nach falsch ist.
Grüße
Torsten
area6 - Mo 24.06.02 16:42
o.k., also:
1.) für Torsten: beta ist deshalb dabei, weil beide Winkel eingegeben werden können
2.) für Lemmy: mit der Umrechnung in Gradmaß (die ich nur kurzfristig aus dem source entfernt habe) kommt trotzdem nicht das richtige Ergebnis raus, da das falsche Ergebnis nicht beim Winkel, sondern bei den Seitenlängen für An- und Gegenkathede, schliesslich ändert 90°-beta nichts in dem Maß von beta (demnächst bitte entweder erst selbst richtig lesen oder das posten unterlassen)
3.) für Torsten: o.g. ist mein Problem und ein Suchrätsel für Euch dazu
area6 - Mo 24.06.02 16:43
Titel: Nachtrag trigon. Fkt.
o.k., also:
1.) für Torsten: beta ist deshalb dabei, weil beide Winkel eingegeben werden können
2.) für Lemmy: mit der Umrechnung in Gradmaß (die ich nur kurzfristig aus dem source entfernt habe) kommt trotzdem nicht das richtige Ergebnis raus, da das falsche Ergebnis nicht beim Winkel, sondern bei den Seitenlängen für An- und Gegenkathede, schliesslich ändert 90°-beta nichts in dem Maß von beta (demnächst bitte entweder erst selbst richtig lesen oder einfach nix posten?!?)
3.) für Torsten: o.g. ist mein Problem und ein Suchrätsel für Euch dazu
Torsten - Mo 24.06.02 16:49
OK, soweit habe ich verstanden.
Dennoch mal bitte ein Beispiel für eine angeblich falsche Berechnung.
Grüße
Torsten
Lemmy - Mo 24.06.02 21:01
Titel: Re: Nachtrag trigon. Fkt.
area6 hat folgendes geschrieben: |
2.) für Lemmy: mit der Umrechnung in Gradmaß (die ich nur kurzfristig aus dem source entfernt habe) kommt trotzdem nicht das richtige Ergebnis raus, da das falsche Ergebnis nicht beim Winkel, sondern bei den Seitenlängen für An- und Gegenkathede,...
|
Warum funktioniert bei mir dann dieser Code??
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if beta.Text<>'0' then begin {Winkel beta ggb.} if hypo.Text<>'0' then begin {Hypothenuse ggb.} b:= strtofloat(beta.Text); hy:= strtofloat(hypo.Text); a:= 90-b; an:= cos(a*pi/180)*hy; //Umrechnug Teil 1 g:= sin(a*pi/180)*hy; //Umrechnung Teil 2 alpha.Text:= floattostr(a); ank.Text:= floattostr(an); gegen.Text:= floattostr(g); exit; end; |
Bei mir kommen bei folgenden Werten die richtigen Maße raus:
beta=45, Hypo=5: an=gg=3,5355..
beta=36.869897647, Hypo=5: an=4, gg=3
area6 hat folgendes geschrieben: |
schliesslich ändert 90°-beta nichts in dem Maß von beta
|
Habe ich auch nie gesagt! Die Rechnung ist ja vollkommen korrekt. Du gehst aber mit der Winkeleinheit DEGREE in die Berechnung sin(a) bzw. cos(a). Dort muss aber die Winkeleinhat RADIANT stehen! Die Umrechnung erfolg mit PI/180.
area6 hat folgendes geschrieben: |
(demnächst bitte entweder erst selbst richtig lesen oder einfach nix posten?!?)
|
Sorry für den Ton meines ersten Postings... *umverzeihungbitt*.... :oops:
Grüße
Lemmy
area6 - Mo 24.06.02 21:10
Die Umrechnung in Bogenmaß habe ich tatsächlich im code drin, daran lag es nicht, aber wie ich soeben feststellen konnte, hatte ich mehrere edits übereinander, das, was eingelesen wird unter dem, in das eingetragen wird, hat sich also erledigt :arrow: und ich dachte schon ich sei ein bißchen :mrgreen: nach stundenlangem, tagelangem Testen war ich der festen Überzeugung, daß der Code stimmt, nu, war ja auch so...
Für Lemmy nochmal ein Original-Ausschnitt aus dem Source incl. aller Umrechnungen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| if beta.Text<>'0' then begin if hypo.Text<>'0' then begin b:= strtofloat(beta.Text); hy:= strtofloat(hypo.Text); a:= 90-b; alpha.Text:= floattostr(a); zw:= (a * pi)/180; a:= zw; an:= cos(a)*hy; g:= sin(a)*hy; ank.Text:= floattostr(an); gegen.Text:= floattostr(g); exit; end; if ank.Text<>'0' then begin b:= strtofloat(beta.Text); an:= strtofloat(ank.Text); a:= 90-b; alpha.Text:= floattostr(a); zw:= (a * pi)/180; a:= zw; g:= tan(a)*an; hy:= sqrt((g*g)+(an*an)); gegen.Text:= floattostr(g); hypo.Text:= floattostr(hy); exit; end; |
ne? Umrechnung stimmte schon, also ist die Lösung des Rätsels :arrow: KEINER 8) naja, bis demnächst....
cu, area6.
Torsten - Mo 24.06.02 21:28
Also haut nun alles hin?
area6 - Mo 24.06.02 22:09
Jupp, wie gesagt, das Problem entsprang meiner schlampigen Arbeit an der Oberfläche. :oops:
Torsten - Mo 24.06.02 22:14
Dann bin ich ja beruhigt. ;)
Grüße
Torsten
Chatfix - Mo 24.06.02 22:28
ich auch :mrgreen:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!