Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

09.08.2011, 18:18

edit: sorry mein Fail..

Zitat

Basically, there are only 10 types of people in the world. Those who know binary, and those who don't.

12

09.08.2011, 18:52

ich habe noch mal alles überprüft es ist genau gleich wie wenn ich es im aschenrechnerals parabel (glaub ich eingebe) steht halt f(x) = hier dann Formel
die hab ich umgeschriben in C++ aber es kommt einfach nicht dasselbe raus!!!
EDIT: wenn ich in den Table (parabel) halt f(x) genau das eingebe was in C++ steht kommt wieder was anderes!
und wenn ichs als normale aufgabe eingebe kommt irgendwie 1.897735642x10^-10 oder so was und noch ein e!
was soll das????
Oder kann mir vll noch jemand sagen ob er es mal anderst gemacht hat?
das wir nähmlich teil einer Pyhysic engine!
Danke

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »schreib_muffel« (09.08.2011, 18:58)


13

09.08.2011, 19:08

ich glaube ich habs jetzt kapiert.

C-/C++-Quelltext

1
t=( x / 300.0 / cos1 );

Stellt die Zeit (in s) dar.

Gravitation hat die Maßeinheit [m/s²], du rechnest aber §g/2*t§ wo nicht m rauskommen, wenn du stadtdessen §g/2*t*t§ rechnest, kommt bei mir 0.0174414 raus. (c++)
Dies ähndet deiner Taschenrechnerlösung.


kurz:
ich vermute du musst

C-/C++-Quelltext

1
erg = 300 * ( x / 300.0 / cos1 ) * sin1 - (9.81 / 2) * ( x / 300.0 / cos1 );

durch

C-/C++-Quelltext

1
erg = 300 * ( x / 300.0 / cos1 ) * sin1 - (9.81 / 2) * ( x / 300.0 / cos1 )* ( x / 300.0 / cos1 );

ersetzen.

Zitat

Basically, there are only 10 types of people in the world. Those who know binary, and those who don't.

14

09.08.2011, 19:24

WOOOOOW Super es stimmt DANK DANKE DANKE:D:D:D:D:D
aber die Formel an sich ist richtig oder?
Denn der Physiker bekommt sonst ärger :D
aber was ich genau falsch gemacht habe weis ich auch nit genau:D
MFG
EDIT: Noch ein Frage wie kann ich jetz mehr Kommastellen rausquetschen :D?

15

09.08.2011, 20:36

die Formel ansich ist richtig, ich glaube du hast nur ein kleines "^2" bzw ² übersehen, wodurch sich der Fehler eingeschlichen hat.

Mehr Kommastellen bekommst du wenn du einen genaueren Datentyp verwendest ( zb. Decimal)

Zitat

Basically, there are only 10 types of people in the world. Those who know binary, and those who don't.

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

16

10.08.2011, 10:57

Der Link führt zum .Net Framework. ^^ Sprich, kein C++ sondern C++/CLI. Das ist ein großer Unterschied.

17

10.08.2011, 14:35

@MCP Ja das wollte ich auch schreiben ich verwenden nämlich kein C++/CLI :D
Gibts noch andere möglichkeiten??
MFG

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

18

10.08.2011, 15:01

Für die Ausgabe hilfen dir vielleicht die format-flags weiter.
Noch genauer als Double für eine Physikengine für Spiele? Ich glaub das wäre zu langsam. Box2D arbeitet z.b. mit Floats.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

19

10.08.2011, 15:06

Brauchst Du denn die Nachkommastellen? So spontan kenne ich nur float, double und long double. Aber wie die verarbeitet werden ist Abhängig vom System.
Mehr Informationen dazu kannst Du so herausfinden:

C-/C++-Quelltext

1
std::cout << std::numeric_limits<long double>::digits10 << std::endl;

Die Dezimaltypen in C++ sind leider nicht meine Spezialität, deswegen kann ich keine klaren Aussagen treffen.
In der Regel braucht man aber auf für Physiksimulationen (in Spielen) keine so hohe Präzision.

20

10.08.2011, 19:11

Es gibt spezielle Bibliotheken, die Zahlenklassen mit mehr Nachkommastellen liefern. Allerdings muss man bedenken, dass die Prozessoren diese nicht unterstützen, du kannst also zum Beispiel nicht mehr 2 Zahlen mit einem einzigen Befehl multiplizieren, sondern der Aufwand steigt irgendwie quadratisch mit der Länge der Zahlen.
-> Die Dinger sind lange nicht so schnell, wie das rechnen mit eingebauten Typen, man sollte die nur benutzen, wenn man es wirklich braucht.

Durch geschickte Maßstäbe und Algorithmen mit kleiner Fehlerfortplanzung kann man auch die Rechengenauigkeit erhöhen, das wäre vielleicht ersteinmal lohnender.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige