Hallo, Am Montag, 29. Dezember 2003 19:06 schrieb Bernhard Walle:
Hallo,
On Mon, 29 Dec 2003 at 17:53 (+0100), patrick dahl wrote:
Funktion: Soll Steigungs-Winkel einer Geraden berechnen. (Hoffe mal, die Formel stimmt so ;) )
Problem: Das Ergebnis(letzte Zeile der Mail). Welchen Variabelen-Typ muss ich denn nehmen, um ein normales, numerisches Ergebnis zu bekommen? (z.b. 20.Grad) Wenn ich für x,y.. und winkel 'integer' nehme, sagt mir der Compiler, dass die Typen nicht kombatibel zu 'Extended' seien, 'double' liefert das gleiche Ergebnis wie 'Extended'...
Konsole (Bsp.):
Berechnung von Steigungswinkel(mit zwei Punkten) x1 eingeben:7 x2 eingeben:14 y1 eingeben:2 y2 eingeben:6 Ergebnis: 5.19146114246523E-0001 Grad (aber nicht Celsius*g*)
Du gehst noch zur Schule, richtig?
Du musst Gradmaß in Bogenmaß umrechnen. Computer (und Taschenrechner, wenn man sie anders einstellt) rechnen immer mit Bogenmaß. Das kommt einfach daher, dass die Winkelfunktionen so angenähert werden.
Auf Taschenrechner gibt es dann meistens zwei Graede. Und Grad ist der mit 400-Teilstuecken, weswegen es viele verwechseln und dieses als Modus nehmen. Fuer 360-Grad muss man Degree nehmen.
Bogenmaß heißt einfach Länge des Bogens des Einheitskreises (Radius = 1), den ein Winkel einschließt. Also:
g b g: Winkel im Gradmaß --- = -------- 360 2 * pi b: Winkel im Bogenmaß
Und dann halt umstellen. Integer ist eine Ganzzahl, Double (heißt das nicht Real in Pascal?) eine Gleitkommazahl. Winkelfunktionen liefern naturgemäß eine Gleitkommazahl. Was Extended ist, weiß ich nicht, da ich kein Pascal kenne. In C/C++/Java gibt's das nicht. :-)
Extended hat eine hohere Genauigkeit als Real und entspricht nach der Kylix-Doku long double. Er ist aber nach dieser nur beschraenkt plattformuebergreifend. Ich weiss nicht, ob das bei long double genauso ist. Double gibt es in Pascal auch und entspricht nach der Doku auch double, wird aber anders gespeichert, weswegen ich der Gegenueberstellung nicht ganz glaube. Jedenfalls sind alles Fliesskommatypen und als Genauigkeit reichen in dem Fall wohl alle. Ferdinand