Sin() zu ungenau!! Gibt es eine Alternative?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Wanderer

Betreff: Sin() zu ungenau!! Gibt es eine Alternative?

BeitragMi, Aug 11, 2004 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm.... ich habe da ein Problem beim Portieren eines JavaScript-Codes nach BlitzBasic.

JavaScript:
Math.sin( 0.850234 ) ergibt 0.751434820....

BlitzBasic:
Sin( 0.850234 ) ergibt 0.0148388 Exclamation

Woher kommt diese große Differenz? Das BB im Floating-Bereich sehr ungenau ist, wußte ich ja -aber DAS ist schon extrem. Gibt es keine Möglichkeit oder alternative Rechenmethode, das irgendwie besser hinzukriegen? Es muß ja nicht astronomisch perfekt sein, aber mit den Werten, die die Hauseigene Sin()-Funktion von Blitz ausspuckt, kann man nicht viel anfangen.

Hubsi

BeitragMi, Aug 11, 2004 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
JavaScript spinnt Wink BB spuckt das wirklich korrekte Ergebnis aus.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Timo

BeitragMi, Aug 11, 2004 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
es gibt zwei verschiedene Sin() berechnungen. Die eine will den Winkel (z.B. BB) die andere das Bogenmaß (z.B. Delphi). Müssten mit anderen Worten beide richtig sein. Musst sie nur richtig umrechnen
 

Wanderer

BeitragMi, Aug 11, 2004 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann nehme ich mal an, das JavaScript das Bogenmaß nimmt, oder? Wie kann ich denn das umrechnen?

stfighter01

BeitragMi, Aug 11, 2004 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
360° sind 2*PI im bogenmass

also: bogenmass= (wert_in_grad / 360) *2*PI
besser: (wert_in_grad / 180) *PI

oder: grad = (wert_in_bogenmass / PI) *180



mfg stfighter
Denken hilft!
 

Wanderer

BeitragMi, Aug 11, 2004 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
stfighter01 hat Folgendes geschrieben:

360° sind 2*PI im bogenmass
bogenmass = (wert_in_grad / 180) *PI

oder: grad = (wert_in_bogenmass / PI) *180


Jetzt bin ich ein wenig verwirrt. Will die JavaScript-Funktion nun als PARAMETER einen Wert im Bogenmass, oder spuckt sie einen Wert im Bogenmass aus -oder beides?

Wie müsste eine 'selfmade' Blitz-Funktion aussehen, die den gleichen Paramter empfängt, wie das JavaScript-Gegenstück und auch den selben Wert wie die JavaScript-Funktion ausspuckt? Im Moment steige ich da noch nicht so durch... Confused

Zitat:

JavaScript:
Math.sin( 0.850234 ) ergibt 0.751434820....

BlitzBasic:
Sin( 0.850234 ) ergibt 0.0148388

Ctuchik

BeitragMi, Aug 11, 2004 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Also nochma von vorne!
Um einen Winkel anzugeben gibt es zwei Möglichkeiten:
1.Gradmaß, bei dem besteht der Kreis aus 360°
2. Bogenmaß, dabei wird als Maß eine Strecke auf dem Kreisrand genommen, wobei der gesamte Kreis 2*Pi ist!

Also 2*Pi = 360° 1*Pi = 180° 0,5*Pi = 90° ...
Die Umrechnung ist also:
Gradmaß = (Bogenmaß * 180) / Pi
Bogenmaß = (Gradmaß * Pi) / 180

Der Sinus wird jetzt von Javascript mit einem Wert im Bogenmaß und von BB mit einem Wert im Gradmaß errechnet!
D.h.bei 60 Grad: Sin(60) in BB entspricht Math.sin( (60 * Pi) / 180 ) in Javascript!
Andersherum, wenn du ein Bogenmaß hast z.B. 0,75: Sin( (0,75 * 180) / Pi ) in BB entspricht Sin(0,75) in JavaScript!

Edit: Wenn du eine Blitzfunktion willst die den selben Parameter erhält wie die Javascript-Funktion dann musst du einfach nur das Bogenmaß noch in Gradmaß umrechnen:
Code: [AUSKLAPPEN]

Function JavaSinus(bogenmass#)
  Return Sin( (bogenmass# * 180.0) / Pi )
End Function
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!
 

Wanderer

BeitragDo, Aug 12, 2004 2:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Jau, das funktioniert, und zumindest was Sin und Cos angeht, habe ich das begriffen! -Aber mit ATAN() gibt es da auch ein Problem:

JavaScript:
Math.atan( -0.013213 / 0.0113063 ) = 2.4337951....


BlitzBasic:
Atan( -0.013213 / 0.0113063 ) = -37.4118 Question

*seufz*... Daß das so ausartet, hätte ich nicht gedacht... Confused
 

Dreamora

BeitragDo, Aug 12, 2004 2:32
Antworten mit Zitat
Benutzer-Profile anzeigen
dann rechne das ebenfalls um die nötige Mathematik steht doch oben. So schwer kann das nicht sein, zumindest wenn du nicht copy paste betreiben würdest und selbst was machen würdest.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Ctuchik

BeitragDo, Aug 12, 2004 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wanderer hat Folgendes geschrieben:
JavaScript:
Math.atan( -0.013213 / 0.0113063 ) = 2.4337951....


BlitzBasic:
Atan( -0.013213 / 0.0113063 ) = -37.4118 Question


Das ist genau dasselbe nur eben andersherum!
Javascript gibt einen Wert im Bogenmaß zurück und BB gibt einen Wert im Gradmaß zurück!
Allerdings kommen da bei mir andere Werte raus:
BB: Atan( -0.013213 / 0.0113063 ) = -49,4466
JavaScript: Math.atan( -0.013213 / 0.0113063 ) =~ -0.86300

Dann stimmts auch!
Kannste überprüfen, rechne doch mal den Wert den BB zurückgibt ins Bogenmaß um:
(-49,4466 * Pi) / 180 =~ -0.858
Also beinah dasselbe! Nur minimale Abweichung!

Warum bei dir allerdings so komische Werte rauskomen versteh ich net!
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!
 

Wanderer

BeitragFr, Aug 13, 2004 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
@Dreamora:
Mir ist in einigen Postings von dir schon öfter aufgefallen, das du anscheinend mathematisches Grundwissen bei allen Usern hier voraussetzt -und oft ziemlich wirsch reagierst, wenn das mal nicht der Fall ist. Ich frage mich, ob du denn Sinn eines Forums nicht aus den Augen verloren hast.
Es mag sein, das die Umrechnung selbst leicht ist -aber dazu müsste man zuerst einmal das Prinzip einer Funktion begreifen. Niemand hat von dir verlangt, das du eine fix und fertige Funktion ablieferst -du hättest statt dessen aber auch so hilfsbereit sein können, mir die funktionsweise von Atan() näher zu bringen.
 

Dreamora

BeitragFr, Aug 13, 2004 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry aber wenn du die Mathe nicht kannst, dann verwende sie auch nicht.
Trigonometrie ist kein Anfängerproblem und von daher kann es auch net ma so kurz hier abgehandelt werden, es übersteigt die maximale Postinglänge bei weitem.
Und nur die paar fetzen aufzuzählen die das totale Grundwissen darstellen hat keinen zweck, weil es dann schon bei kleineren praktischen Anwendungen zu Problemen kommt.

Ich unterstütze keine Copy Paste programmieren. Wenn man Sin / Cos / Tan und ihre Umkehrfunktionen benutzt, dann setze ich voraus, dass man auch weiss was man benutzt.

Das hier ist ein Programmierboard und kein Matheboard, also nochmal: wenn man etwas nicht kann, soll man es nicht anwenden, sondern es erst lernen!
Da hier noch nicht mal Bogenmass / Gradmass ein Begriff waren, gabs garnix zu erklären, da selbst das nötigste Grundwissen für Trigonometrie fehlte.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group