sin() und cos() - Differenzen zwischen BlitzBasic & C/C+

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

maximilian

Betreff: sin() und cos() - Differenzen zwischen BlitzBasic & C/C+

BeitragFr, Jul 02, 2004 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich wollte hier eigentlich niemanden mit meinen C/C++-Fragen belästigen, aber ich bastle an einer Steuerung wie GTA in C mit Hilfe von Allegro und dem Mingw32-Compiler.
Hierzu habe ich, weil ich in der 7. Klasse von Sinus und Cosinus noch überhaupt keine Ahnung habe, Ralliemen's Beispiel umgeschrieben.

Dämlicherweise funktioniert die Steuerung nicht richtig. Heiurzu habe ich mal einen Test geamacht, und jetzt weiß ich nicht mehr weiter:

BlitzBasic
Cos(100) * 0.5 = -0.0868241

C/C++/Mingw32/math.h
Cos(100) * 0.5 = -1083809825

Warum bloß?
Wäre nett wnn mir einer helfen könnte.

Grüße,
LordChaos

PS: Das hat auch ein bisschen was mit BB zu tun. Wink

Wild-Storm

BeitragFr, Jul 02, 2004 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
oho, anscheinend ist bb hier im recht, aufm taschenrechner kommt da auch -0.086824088 raus
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

MVB

BeitragFr, Jul 02, 2004 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Ahnung wie das kommt. Das richtige Ergebniss ist auf jeden Fall das von BB. Denn Cos darf nur werte von -1 bis 1 zurückgeben, und wenn man das dann noch halbiert kann auf gar keinen Fall -1083809825. mein taschenrechner sagt auch "-0.0868241.
aquamonit.de|BlitzMax|MaxGUI

Jan_

Ehemaliger Admin

BeitragFr, Jul 02, 2004 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm, hast du vielleicht das mit einen int und keinen float gemacht?

integer sehen so aus: -1083809825
between angels and insects
 

Edlothiol

BeitragFr, Jul 02, 2004 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
In C++ gäbs da nen Fehler, in C weiß ich nicht, kann mir vorstellen dass das da funktioniert Confused

Vertex

BeitragFr, Jul 02, 2004 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Bogenmaß in C++ ?!

Blatolo

BeitragFr, Jul 02, 2004 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist echt komisch.
Hab es gerade ausprobiert.
Code: [AUSKLAPPEN]
#include <iostream.h>
#include <math.h>

int main()
{
   double ergebnis;
   ergebnis=cos(100)*0.5;
   cout<<ergebnis;
   return 0;
}

Bei mir kommt da 0.431159 raus.
Dabei müsste es eigentlich -0.86824088 sein.
Kenne mich in C++ leider nicht gut genug aus um zu wissen woran das liegen könnte.

maximilian

BeitragFr, Jul 02, 2004 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Argh, ich hab folgendes geschrieben:

Code: [AUSKLAPPEN]

printf("%d", cos(100) * 0.5);


Aber auch wenn ich "%f" schreibe, kommt folgendes raus:
4.31159

Grüße,
LordChaos

@Vertex:
Hm, ich verstehe dein Post nicht ganz richtig. Von Bogenmaß hab ich natürlich auch keine Ahnung.

/edit: Sorry, Blatolo hat so gepostet, das ich es nicht mehr gesehen habe. Warten wir mal auf ST oder so. Der wird es uns vielleicht erklären können,

Wild-Storm

BeitragFr, Jul 02, 2004 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ohne das * 0.5 kommt bei c++ 0.86231 (oder so) raus und eim rechner -0.1736
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

BigSnake

BeitragFr, Jul 02, 2004 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Blick in die Hilfe würde euch zeigen, daß C++ Bogenmaß verwendet und somit das Ergebnis vollkommen korrekt ist

maximilian

BeitragFr, Jul 02, 2004 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Na schön. Dann ist das ja aus der Welt geschafft. Könnte aber jetzt einer von euch einem Mathe-n00b erklären, wie ich trotzdem meine richtigen Werte bekomme?

Grüße,
LordChaos
 

Black

BeitragFr, Jul 02, 2004 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Und der Unterschied von %d zu %f ist damit zu erklären, dass ein float nur 4 Byte benutzt während ein double 8 Byte groß ist.
Dh. wenn du %f angibst werden die ersten 4 Bytes als float interpretiert und der Rest ignoriert.

maximilian

BeitragFr, Jul 02, 2004 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ging hier eigentlich um die Umrechnung von Bogenmaß in Cosinus und Sinus-Werte.
Ich weiß schon, das &d nur Integer-Zahlen sind. *schmoll*

Grüße,
LordChaos

Vertex

BeitragFr, Jul 02, 2004 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz arbeitet mit Gradmaß (also wird der Winkel in Grad -> ° angegeben)
math.h arbeitet mit Bogenmaß. 1 Pi ist im Gradmaß 180° und im Bogenmaß 1. Somit sind 2 Pi gleich 360° oder 2 im Bogenmaß.
Umrechnung:
Bogenmaß = Gradmaß / 180
Wenn ich dir mal da smit Sin und COs erklähren soll, musste mir mal ne PM schreiben, könnte am Donerstag für dich Zeit haben.
mfg olli

maximilian

BeitragFr, Jul 02, 2004 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ARGH! Jetzt weiß ich auch, warum diese dämliche Bild-Rotation nicht geklappt hat (360 Einzelbilder). Aber danke. Ich glaube ich brauche nicht mehr Mathe für mein Projekt, aber das ist trotzdem nett von dir. Bald haben wirs ja auch in der Schule. Very Happy

Grüße,
LordChaos

Triton

BeitragFr, Jul 02, 2004 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
VERSCHOBEN nach Allgemein.
 

Kekskiller

BeitragFr, Jul 02, 2004 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit dem "bald" würde ich vorsichtig sein.
Wir hatten das erst in der 9. Klasse und soweit
ich weiß, bist du in der siebten. Somit müsstest
du dich noch auf ein etwas längeres bald beziehen.
Aber im Grunde ist das mehr als einfach zu verstehen.

Ps: Was zu Geier ist Allegro?
Ich habe schon ne Menge davon gehört,
nur erklärt hat es mir nie einer...
Ich bin eher der Basic/Ruby-Typ,
von C/C++ habe ich noch keine Ahnung...

BladeRunner

Moderator

BeitragFr, Jul 02, 2004 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Allegro ist ein Paket nützlicher Funktionen etc. zur Gameentwicklung unter C/C++. Enthält Routinen für sprites, sound ,grafikinitialisierung etc. und ist freeware (open source (?)).
Quasi das rüstzeug um sich unbeschwert mit den Gamemechanismen zu beschäftigen ohne von den "Basics" abgelenkt zu werden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Markus2

BeitragFr, Jul 02, 2004 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube man Grad zu Bodenmaß so umrechnen (für C)
VB6 benutzt auch Bogenmaß .
? pi/180 oder 22/7/180
r=1.74603174603175E-02
x=cos(winkel*r)
 

Kekskiller

BeitragFr, Jul 02, 2004 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, dies ist Allegro! abe mich schon gewundert, warum
LordChaos jetzt plötzlich von Rotation redet. Denn DirectX
zu aktivieren ist für ihn (sorry) doch eine Nummer zu groß.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group