Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
peterbub JLI'ler
Anmeldedatum: 24.07.2005 Beiträge: 109
Medaillen: Keine
|
Verfasst am: 15.12.2005, 21:38 Titel: sin / cos stimmt nicht |
|
|
Hallo,
ich würde gerne eine Formel basteln
und brauche dazu die
sin / cos Funktionen.
ich benutze:
Code: |
std::cout << cos(0.0) << std::endl;;
std::cout << cos(90.0) << std::endl;;
std::cout << cos(180.0) << std::endl;;
std::cout << cos(270.0) << std::endl;;
std::cout << cos(360.0) << std::endl << std::endl;;;
|
und für Patrik
Code: |
std::cout << deg2rad(180.0) << std::endl;
std::cout << rad2deg(180.0) << std::endl;
|
und bekomme das als Ergebnis:
-0.44
-0.59
0.98
-0.28
und für Patrik:
3.14
und
10313
Jeder, der einen Taschenrechner hat und
von cos 180 , bekommt -1.
was stimmt bei mir nicht
Gruß Peterbub |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 15.12.2005, 21:45 Titel: |
|
|
Ja, dann stell deinen Rechner mal auf Bogenmaß um und vergleich die Ergebnisse.  |
|
Nach oben |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 15.12.2005, 21:50 Titel: |
|
|
Du solltest die C++-Funktionen std::sin etc. nehmen. _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
 |
peterbub JLI'ler
Anmeldedatum: 24.07.2005 Beiträge: 109
Medaillen: Keine
|
Verfasst am: 15.12.2005, 22:10 Titel: |
|
|
da kommt bei mir leider das selbe raus.
Ich bin kein grosser mathematiker, kann mir jemand sagen , wie ich
aus:
cos(180) , -1 als Ergebnis bekomme ?
oder irgend wie aus 180 die zahl -1 bekomme?
Bitte nicht antworten mit 180 * (-1.0/180.0)
Gruß peterbub |
|
Nach oben |
|
 |
David Super JLI'ler
Alter: 40 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 15.12.2005, 22:35 Titel: |
|
|
Hi!
Du musst den Winkel ins Bogenmaß umrechnen:
Also:
CPP: | cout << cosf( deg2rad( 180.f ) ) << "\n";
|
grüße |
|
Nach oben |
|
 |
Dragon Super JLI'ler

Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 15.12.2005, 22:35 Titel: |
|
|
peterbub hat Folgendes geschrieben: | da kommt bei mir leider das selbe raus.
Ich bin kein grosser mathematiker, kann mir jemand sagen , wie ich
aus:
cos(180) , -1 als Ergebnis bekomme ?
oder irgend wie aus 180 die zahl -1 bekomme?
Bitte nicht antworten mit 180 * (-1.0/180.0)
Gruß peterbub |
cos(180.0f * (2.0f*PI) / 360.0f);
da sollte -1 rauskommen. Wenn du es nicht verstehst solltest du mal in dein Tafelwerk unter Einheitskreis nachschauen oder in deinen Mathe-Hefter schauen. Ich glaube sowas macht man in der 8 oder 9. Klasse ^^ _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
 |
David Super JLI'ler
Alter: 40 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 15.12.2005, 22:41 Titel: |
|
|
Hi!
Es reicht wenn man PI durch 180 teilt!
CPP: | const float PI = 3.14159265358979323846f;
//...
std::cout << std::cos( 180.f * PI / 180.f ) << "\n";
|
grüße |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 16.12.2005, 09:20 Titel: Re: sin / cos stimmt nicht |
|
|
peterbub hat Folgendes geschrieben: |
ich benutze:
Code: |
std::cout << cos(0.0) << std::endl;;
std::cout << cos(90.0) << std::endl;;
std::cout << cos(180.0) << std::endl;;
std::cout << cos(270.0) << std::endl;;
std::cout << cos(360.0) << std::endl << std::endl;;;
|
[...]
und bekomme das als Ergebnis:
-0.44
-0.59
0.98
-0.28
|
wieso bekommst du bei 5 cout's nur 4 Werte? Wahrscheinlich hast du cos(0) weggelassen. Egal, das Problem ist, wie auch schon viele gesagt haben, dass du deine Grad-Werte(90.0f, 180.f ...) ins mathematische Winkelmaß, genauer gesagt das Bogenmaß umrechnen musst. Das bekommst du, wenn du dein 180° / PI * deinem Gradwert rechnest. Das alles in deinen Code umgesetzt, würde dann so aussehen:
CPP: | float radWinkel = 180 / 3.14159 * degWinkel; // winkel im Bogenmaß
std::cout << cosf(radWinkel) << std::endl;
|
nehmen wir an, du hast als degWinkel 180° genommen, dann bekommst du auch als cout -1
BTW: Wenn du bei Patricks templates sowas wie 57.29577951... * Winkel siehst, um etwas ins Bogenmaß umzurechnen, ist das eigentlich genau das selbe, denn 180° / PI = 57.29577951... Des Wert drekt so zu bilden, is eben besser, da das eine unnötige Division spart; das wiesderum spart viel zeit
Gruß DirectXer |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
|