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

WandererBetreff: Sin() zu ungenau!! Gibt es eine Alternative? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
JavaScript spinnt ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann nehme ich mal an, das JavaScript das Bogenmaß nimmt, oder? Wie kann ich denn das umrechnen? | ||
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... ![]() Zitat: JavaScript: Math.sin( 0.850234 ) ergibt 0.751434820.... BlitzBasic: Sin( 0.850234 ) ergibt 0.0148388 |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() *seufz*... Daß das so ausartet, hätte ich nicht gedacht... ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wanderer hat Folgendes geschrieben: JavaScript:
Math.atan( -0.013213 / 0.0113063 ) = 2.4337951.... BlitzBasic: Atan( -0.013213 / 0.0113063 ) = -37.4118 ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group