Spiele proggen ohne große Mathematik Kentnisse?
-
promise schrieb:
oh, das ist aber echt nicht viel. vielleicht solltest du mit einem thema "darunter" anfangen.
eXpEdItIoN-gEfOrCe schrieb:
und mehr hab ich nicht gefunden!
-
TGGC schrieb:
Wer Sinus nicht versteht, sollte sich Sorgen machen, das er nicht das Denkvermögen besitzt um ein guter Programmierer zu werden.
Bye, TGGC
anscheinend hälst dich für extra schlau, versuch ma dein haus zu verlassen und bekanntschaften zu finden dass du weist wie man mit anderen menschen redet
-
dann leih oder kauf dir ein buch. mit den tutorials aus dem internet kann man das sowieso nicht so gut lernen
-
promise schrieb:
dann leih oder kauf dir ein buch. mit den tutorials aus dem internet kann man das sowieso nicht so gut lernen
naja ich schau mich halt ma um
-
Also da muss ich auch noch einen draufsetzen. Du willst mir doch nicht ernsthaft erzählen wollen, dass du bei Google nur ganze 2 Artikel über Trigonometrie gefunden hast...
Google SucheAlso wenn du schon nicht fähig bist mit einer Suchmaschine umzugehen, dann würde ich das Programmieren lieber ganz schnell sein lassen.
cya
liquid
-
er wußte bestimmt nicht das Sinus zum Thema Trigonometrie gehört
-
LiquidAcid schrieb:
Also wenn du schon nicht fähig bist mit einer Suchmaschine umzugehen, dann würde ich das Programmieren lieber ganz schnell sein lassen.
genau ich wusste nicht das sinus zu trigronometie gehört!
tja euch wurde der verdammte ... halt gelernt, ich habe KEIN MATHE MEHR! dann KANN ICH ES AUCH NICHT WISSEN!
ich muss mir das halt alles selbst beibringen, tja und ich hab auch noch zeit des zu lernen! Ich lass mir bestimmt nicht von ein paar Möchtegern Einsteinen das Programmieren ausreden!
edit: hier im forum gibt es genug nette menschen leider gibt es immer ein paar ausnahmen!
-
Du kannst auch ein Spiel ohne Sinus programmieren. Wenn Du eine Library benutzt, die alles schön wegkapselt, brauchst Du nicht viel Mathe. Oder versuch Dich an einem Text-Adventure...
Edit: Habe die Smileys vergessen!
und noch ein
-
hey gerner, mach mal halblang
:p
-
eXpEdItIoN-gEfOrCe!! schrieb:
genau ich wusste nicht das sinus zu trigronometie gehört!
Dann hast du dich nicht genügend informiert. Wenn einem ein mathematischer Begriff nicht vertraut ist versucht man als erstes den Teilbereich der Mathematik herauszufinden, aus dem dieser Begriff entspringt. Hast du das getan? Nein? Dann beschwer dich nicht.
eXpEdItIoN-gEfOrCe!! schrieb:
tja euch wurde der verdammte ... halt gelernt, ich habe KEIN MATHE MEHR! dann KANN ICH ES AUCH NICHT WISSEN!
ICH HAB AUCH KEIN MATHE MEHR!!! ICH BIN ZIVILDIENSTLEISTENDER IN EINER KINDERTAGESSTÄTTE UND DA KÖNNEN DIE KLEINEN NICHT MAL MULTIPLIZIEREN!! (damit das mal klar ist)
eXpEdItIoN-gEfOrCe!! schrieb:
ich muss mir das halt alles selbst beibringen, tja und ich hab auch noch zeit des zu lernen!
Sollen wir jetzt klatschen, dass du dir das allein beibringst und dabei noch deine ach so kostbare Zeit opferst?!
eXpEdItIoN-gEfOrCe!! schrieb:
Ich lass mir bestimmt nicht von ein paar Möchtegern Einsteinen das Programmieren ausreden!
Einstein würde ich eher zur Physik zuordnen, hier gehts allerdings um Mathematik.
eXpEdItIoN-gEfOrCe!! schrieb:
edit: hier im forum gibt es genug nette menschen leider gibt es immer ein paar ausnahmen!
Es gibt auch die Sorte Menschen hier im Forum, die einfach zu faul sind mal ihren Hintern zu heben, in die örtliche/nahegelegene Bücherei zu gehen und sich dort ein passendes Buch auszuleihen. Gott, selbst in der Schule kommt man bestimmt günstig oder zum Nulltarif an ausgediente Schulbücher, die einem den Stoff auf einfachere Art vermitteln. Und ich glaube mit einem dieser Sorte Mensch rede ich hier gerade.
cya
liquid
-
Sinus und co verstehe ich leider daher auch nicht, und nach gescheiten tutorials suche ich schon ewig - leider vergebens
Bei 2D kenne ich 2 Formeln die wichtig sind.
Die eine bestimmt die Entfernung zwischen 2 Punkten und ist eine Ableitung vom allgemein bekanntem a²=b²+c²
a²=b²+c² <=>a=√(b²+c²) <=>d=√((x1-x2)²+(y1-y2)²)
Mit x1-x2 berechnet man die Entfernung auf der X- Achse. Wegen des ² spielt das Zeichen des Zwischenergebnisses keine Rolle. Und das Ganze noch mal in Form von C++ Funktion:
inline double point_distance(double x1,double y1,double x2,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); }
Sinus (sin) und Kossinus (cos) werden im Zusammenhang mit Kreisen verwendet. Wobei sin den Y Wert in Bild ermittelt und cos den X Wert. Als Argument nehmen sie irgendeine Winkelangabe (ist leider nicht genormt und hängt stark von der Programmiersprache ab). Im Fall C++ sind das Radian aber hier eine Formel um sie in gute alte 360 Grad zu verwandeln wo 0 Grad Rechts ist, 90 Oben, 180 Links und 270 Unten.
inline double gradzurad(double a) { return (((90-a)/180)*3.141592654); }
cos und sin geben jeweils die X und Y Koordinaten für einen Kreis mit Radius 1 aus. Das heißt:
cos(gradzurad(0))=1;//X wert für Links
sin(gradzurad(0))=0;//Y wert für Links
cos(gradzurad(90))=0;//X wert für Oben
sin(gradzurad(90))=1;//Y wert für Oben
cos(gradzurad(180))=-1;//X wert für Rechts
sin(gradzurad(180))=0;//Y wert für Rechts
cos(gradzurad(270))=0;//X wert für Unten
sin(gradzurad(270))=-1;//Y wert für Unten
Alle Graden dazwischen geben immer sehr krumme Zahlen jedoch sind es die Punkten eines Kreises. Falls du nicht verstehst sieh dir dieses Beispiel mal an:for(int i=0;i<360;i++) draw_pixel(cos(gradzurad(i)),sin(gradzurad(i)));
Der Code oben zeichnet einen Kreis und dies würde einen Halbkreis zeichnen:
for(int i=0;i<180;i++) draw_pixel(cos(gradzurad(i)),sin(gradzurad(i)));
(Wobei es draw_pixel(x,y) gar nicht gibt, sollte jedoch klar sein was gemeint ist.)
Allerdings ist der Kreis sehr klein weil er einen Radius von 1 hat. Um dies zu ändern multipliziert man einfach cos und sin mit dem gewünschtem Radius. Jedoch wird der Kreis auch um den Punkt (0,0) gezeichnet um dies zu ändern addieren wir einfach das gewünschte Zentrum zu den Endergebnissen von cos * Radius und sin * Radius.
Zu Beispiel dies zeichnet einen Kreis um den Punkt (5,9) mit einem Radius von 4:for(int i=0;i<360;i++) draw_pixel(cos(gradzurad(i))*4+5,sin(gradzurad(i))*4+9);
So ich hoffe du verstehst jetzt wozu cos und sin geraucht werden.
Ach ja falls du 2D Spiele auf die einfache Weise machen willst wird dich das vielleicht interessieren:
[url]http:\\www.gamemaker.nl[/url]
Ist sehr einfach zu gebrauchen kann aber für so gut wie alle Arten von 2D Spielen verwendet werden.mit den tutorials aus dem Internet kann man das sowieso nicht so gut lernen
Alles was ich über das Programmiren weis (und das ist nicht gerade wenig) hab ich über das Internet und durch Versuch und Irrtum gelernt. Und das Einzige was schwer daran ist sind Leute die andere kritisieren weil man sie um Hilfe fragt oder mit immer passenden denkschwachen Antworten kommen wie "Such auf Google".
-
@drVoodoo
wow danke für den crashkurs
ich druck mir des ma an und schau mir des ma genauer an!@anderen
ich keinen bock mich hier runzustreiten, is mir einfach zu primitiv, schlau ist es halt ma nachzugeben! Die rumstreitereien helfen auch niemanden!
-
drVoodoo schrieb:
Sinus (sin) und Kossinus (cos) werden im Zusammenhang mit Kreisen verwendet. Wobei sin den Y Wert in Bild ermittelt und cos den X Wert.
Niemand würde mit Sin und Cos einen 2D-Kreis zeichnen, dafür gibt es einen viel schnelleren Algorithmus. Den Hauptzweck von Sin und Cos hast Du garnicht erwähnt. Sin und Cos werden nämlich hauptsächlich im Zusammenhang mit Dreiecken und Seitenlängen verwendet, und sie sind ja auch durch ein Dreieck definiert (Verhältnisse von Seitenlängen)!
-
TomasRiker schrieb:
und sie sind ja auch durch ein Dreieck definiert (Verhältnisse von Seitenlängen)!
Das würde ich mal nicht zu lautstark behaupten.
Es gibt Leute(meist Mathematiker), die sagen
sin(x):=Sum[n=0..oo]x^(2n+1)/(2n+1)!Ich versteh jedenfalls nicht, wie es einige hier schaffe sich so sehr aufzuregen. Ist ja toll LiquidAcid, daß Du das alles kannst, obwohl Du Zivildienst leistest, aber kann es sein, daß Du das vorher mal in der Schule gelernt hast? Was ist, wenn expedition (kein Bock auf die tolle Schreibweise) das nicht in der Schule gelernt hat. Muß er es dann wirklich können? Viele Sachen kann man sich nur sehr schwer selbst aneignen. Wenn man's dann aber einmal gefressen hat, dann isses ziemlich einfach. Trotzdem ist es dann für diejenigen, die es noch frisch lernen müssen nicht einfacher als zuvor.
Aber die Masche: "Wie Du kannst kein Sinus? Dann kannste auch ned programmieren." Sowas find ich echt scheiße. Wieso soll er denn nicht programmieren. Wenn er's dann wirklich braucht, dann wird er's auch verstehen. Und dann geht's auch gleich viel leichter, weil man einen konkreten Anwendungsfall vor Augen hat.MfG Jester
-
-
Niemand würde mit Sin und Cos einen 2D-Kreis zeichnen
Ich kenne viele für die das Gang und Gäbe ist! Und es ist das konkreteste Beispiel das es gibt.
dafür gibt es einen viel schnelleren Algorithmus
Das Schnellste ist immer noch die Sinus und Kosinus Tabelle. Erstell einfach einen Array und füll ihn mit den Ergebnissen von Sinus und Kosinus aus. Wenn du es schafft einen schnelleren Algorithmus vorzulegen dann Hut ab.
Und komm jetzt nicht mit dem Argument das es unexakt ist! 360 Grad sind genauer als man brauch bei Auflösungen wie 1024x798 und 800x600.
Den Hauptzweck von Sin und Cos hast Du gar nicht erwähnt.
Sag mal wie willst du wissen was für mich den "Hauptzweck" zu sein hat? Ist der viel mathematisch definiert?
wow danke für den crashkurs
ich druck mir des ma an und schau mir des ma genauer an!Gern geschen. Ach und gestern ist es mir ein kleiner Fehler unterlaufen:
cos(gradzurad(0))=1;//X wert für Links
sin(gradzurad(0))=0;//Y wert für Links
cos(gradzurad(180))=-1;//X wert für Rechts
sin(gradzurad(180))=0;//Y wert für RechtsDas sollte eigentlich:
cos(gradzurad(0))=1;//X wert für Rechts
sin(gradzurad(0))=0;//Y wert für Rechts
cos(gradzurad(180))=-1;//X wert für Links
sin(gradzurad(180))=0;//Y wert für Linkssein.
Und benutz bei Mathe immer float oder double! int und co geben oft schwer zu findende Fehler!
-
drVoodoo schrieb:
Das Schnellste ist immer noch die Sinus und Kosinus Tabelle. Erstell einfach einen Array und füll ihn mit den Ergebnissen von Sinus und Kosinus aus. Wenn du es schafft einen schnelleren Algorithmus vorzulegen dann Hut ab.
Der Kreis-Algorithmus von Bresenham ist soweit ich weiß der schnellste:
http://www-lehre.informatik.uni-osnabrueck.de/~cg/2000/skript/3_4_Kreis.htmlDeine Methode ist in jedem Fall ungenau, wenn Du große Kreise zeichnest, denn dann musst Du schon entweder
a) sehr viele Einträge in Deine Sin-/Cos-Tabelle schreiben, oder
b) die einzelnen Punkte durch Linien verbinden.Wenn Du das nicht tust, dann hast Du nachher keinen Kreis mehr, sondern einen Haufen getrennter Pixel. Also zieh schonmal Deinen Hut, lieber Freund!
-
Ließe sich das Ganze nicht auch über die Kreisrelation
x*x + y*y = r*r
machen, wenn man ein Koordinatensystem "einführt", wo Ursprung = Kreismittelpunkt?
Wenn das in dem Zusammenhang Mist ist, dann macht mich bitte nicht fertig, habe keinen Plan von Spieleprogrammierung ;). Aber soweit ich mir das vorstellen kann, ist doch Vektorgeometrie und das Lösen linearer Gleichungssysteme (Gauß + Cramer/Sarrus) zur Kollisionsabfrage auch elementar für Spiele oder?
-
EDIT: Sorry, verklickt... Kann man Beiträge löschen?
-
Ich weiß nicht, wie Du das genau machen willst, vielleicht alle x-Pixel durchgehen und die zwei Lösungen für y berechnen?
Der Bresenham-Algorithmus ist trotzdem schneller, man braucht in der Iteration nur ein paar Additionen und ein paar Subtraktionen. Keine Multiplikationen, keine Divisionen und kein Wurzelziehen. Es würde mich schwer wundern, wenn es noch was schnelleres gäbe.