Archiv verlassen und diese Seite im Standarddesign anzeigen : Sinus Berechnung ?
Dereknor
23.05.2004, 18:03
Hi,
stehe leider vor einem kleinen Problem. In meinem Spiel kommen Winkelberechnungen vor, da man mit seinem Raumschiff frei fliegen kann. Daß heißt, man gibt einen winkel an und in diese richtung fliegt das schiff dann. Dazu brauche ich aber umbedingt winkelfunktionen, der alte Pythagoras reicht da leider nicht mehr.
Hat jemand eine Ahnung, wie man den Maker den Sinussatz beibringen kann ? War früher in der Schule leider krank am ersten tag des Sinus. Darum weiß ich nicht wie man den Sinus berechnet hehe
Versuche mal mich schlau zu machen, aber vielleicht weiß ja jemand wie man das machen könnte. Hab den Maker schließlich auch Wurzelberechnung beigebracht hehe
EDIT:
Hab was feines gefunden: http://www.mathematik.net/trigonometrie/tr.htm
Da is genau das, was ich brauche. Vielleicht nütz es euch ja auch wenn ihr was mit kreisberechnungen im maker macht :)
Also, ich hab ja keine Ahnung, ob dir das was hilft, aber Sinus, berechnet sich folendermaßen:
Sinus ist Gegenkathete zu Hypotenuse (sin = gegenkathete/hypothenuse)
Auf dieser (http://www.mathe.braunling.de/Dreieck2.htm) Seite steht vielleicht noch was brauchbares für dich.
Sind halt nur die Sinusberechnungen im Dreieck, aber vielleicht hilfts ja was.
MfG
alternativ waere es natuerlich noch moeglich fuer den Sinus eine Taylor-Entwicklung durchzufuehren und die berechnung darueber durchzufuehren, aber das waere wohl imho zu umstaendlich fuer den maker, da er sowieso keine gleitkommazahlen unterstuetzt. Also waere wohl die beste Loesung eine Tabelle mit Sin-Werten auszurechnen und dann ueber geschachtelte Forks die Werte zurueckzugeben. Koennte aber sehr umfangreich werden, wenn du eine hohe genauigkeit haben willst. 36 Werte bei einem Winkelunterschied von 10°, 360 bei 1° und 3600 bei 0.1° .. usw
Dereknor
23.05.2004, 21:52
Hi,
hab gedacht ich könnte den sinus ausrechnen, aber das wird zu kompliziert für den Maker. Werde es wohl dann doch so machen, daß ich wirklich eien tabelle mache mit 360 winkeln. Ist zwar schade drum, aber hab den ganzen tag rumprobiert und komme auf keine lösung. Nur auf eine, und die heißt:"ich mach doch am anderenspiel weiter" hehe
Mach doch 90 Grad, für Winkel zwischen 90 und 180 einfach 180 - Winkel und für Zeuch darüber einfach mal -1... egal...
was mich interresiert, wie berechnet man den Sinus jetzt, egal, ob mans umsetzen kann oder nicht, würd mich mal allgemein interresieren
MagicMagor
24.05.2004, 03:02
Such mal auf Gaming World (http://www.gamingw.net) Dort gibt es ein Tutorial wie man Sinus/Cosinus relativ genau im Maker berechnen kann. Läuft über Fakultät.
Edit: Da ich so nett bin, hier der direkte Link: Klick Mich! (http://www.gamingw.net/tutorials/420)
@MagicMagor ... schoener Artikel den du rausgesucht hast
SINE(X) = x^1 / 1! - x^3 / 3! + x^5/5! - x^7/ 7! + x^9/9!....Und genau DAS ist die Taylor-Entwicklung, die ich vorhin angesprochen habe ^__^
Caine Luveno
24.05.2004, 04:32
Der Artikel ist echt gut.
Da ich mich sehr für Mathematik interessiere hab ich mir den gleich 2mal durchgelesen :D
Den Trick mit dem mal 1000 nehmen um die Dezimalstellen vorläufig zu ersetzen kann man auch bei komplexerer Prozentrechnung anwenden. Muss ich mir merken.
Gut, das zu wissen ist schoma wichtig ^^
so, jetzt mache mas ne Nummer schwerer (vielleicht unmöglich, weiß net genau):
ist es möglich, unnatürliche Potenzen im Maker zu berechnen? (unnatürlich = Kommazahlen, beispielsweise ist die normale Wurzel eine unnatürliche Potenz, 0,5 eben)
Dr.Brain
24.05.2004, 23:57
Es gibt doch ne Sinus Tabelle...damit müsste sich was machen
lassen. Aber ich bin mir mehr als 1000% sicher, dass sich Winkel
im Maker umgehen lassen.
natuerliche potenzen .. hab ich da jetzt was falsch verstanden, oder meinst du sowas wie x^3 oder x^9 ?
x^n heisst doch nur, das man n mal x mit sich selbst multipliziert, also
x^2 = x*x
x^3 = x*x*x
x^4 = x*x*x*x
das laesst sich doch ganz einfach per cycle loesen @_@
wenn ich das jetzt falsch verstanden habe, bitte korrigieren
Deswegen meinte ich ja unnatürliche ;)
eben x^1,5 oder x^4,456
axo ... ich hatte mich verlesen und gedacht, du willst natuerliche berechnen ^^ sorry, mein fehler ..
also im prinzip geht das ueber 3 verschiedene wege
a) du erstellst eine Tabelle mit zuvor ausgerechneten werten
b) zu JEDER Funktion laesst sich eine Taylorentwicklung machen (also sowas, was bei der Sinus-Funktion gemacht wurde)
c) solange der Exponent eine rationale Zahl ist ( sich also als Bruch a/b darstellen laesst) kannst du diese Potenzen als b-te Wurzel aus (x^a) auffassen. Im folgen beschreibe ich mal ein Naeherungsferfahren.
1) Du setzt eine Variable N auf den Wert 2, und die Variablen Q und I auf den wert 0. Danach multiplizierst du x a-mal mit sich selbst und speicherst das Ergebnis in P ab.
2) Ist I=0 so addierst du zu Q den Wert von P/N hinzu. Ist I nicht 0, so ziehe von Q den Wert von P/N ab. (Im ersten Schritt wird immer addiert, da I ja auf 0 gesetzt wurde.)
3) Dann multiplizierst du b-mal Q mit sich selbst (dabei Q unveraendert lassen) und vergleichst das Ergebnis mit P. Ist das Ergebnis kleiner als P, so setze I auf 0. Ist das Ergebnis groesser als P, so setze I auf 1. Ist das Ergebnis gleich P, so gehe zu Schritt 5.
4) Ist P/N kleiner 1, so gehe zu Schritt 5, ansonsten nultipliziere N mit 2 und gehe zurueck zu schritt 2)
5) Die gesuchte Potenz ist (zumindest naehrungsweise) Q.
Natuerlich musst du fuer deine Berechnung, wenn du Werte im Kommabereich brauchst, noch entsprechende Multiplikationen machen, da der Maker ja nur Ganzzahlen verarbeiten kann.
Gruss Ineluki
Dereknor
01.06.2004, 15:53
Hey danke MagicMajor :)
Genau diesen rechenweg habe ich gesucht.
In der zwischenzeit habe ich umständlich eine abfrage im maker gemacht, die den winkel abfragt und dann den sinuswert wiedergibt, indem ich einfach für 90 winkel die sinuswerte eingegeben habe. Also 90 abfragen. Nun kamen aber auch noch Cosinus und Tangens hinzu, da wurde es doch sehr viel schreibarbeit für mich und für den maker.
Nun probier ich dem maker mal die funktionen beizubringen, dann kann ich ja sogar auf mehr winkel als nur die ganzen zahlen zurückgreifen hehe
Dereknor
01.06.2004, 16:02
unnatürliche zahlen lassen sich ja auch multiplizieren.
hat man z.B. 0,5 x 0,5
Dann multipliziert man beide mit 10, so daß 5x5 herraus kommt. Natürlich muß man dieses schon vor der berechnung von 0,5 tun (woher man es auch immer berechnet) weil der maker ja 0,5 garnicht speichern würde.
Das ergebniss von 5x5 = 25 dividiert man mit 100 und schon hat man das richtige ergebniss: 0,025
Das könnte der maker natürlich auch nicht speichern. Aber vielleicht will man mit 0,025 ja auch weiterrechnen. Also läßt man es erstmal auf 25 und muß sich nur merken, es später wieder mit 100 zu dividieren.
hätte man 0,05 x 0,05 dann müßte man beide mit 100 multiplizieren und später mit 10.000 dividieren (100x100)
Achso, danke Ineluki für die erklärung, brauchte mir dann nicht mehr selber den kopf zerbrechen wie ich es machen muß hehe
Möp möp.
0,5 x 0,5 sind 0,25 und nicht 0,025.
Du musst es etwas abändern:
Dann multipliziert man beide mit 10, so daß 5x5 herraus kommt. Natürlich muß man dieses schon vor der berechnung von 0,5 tun (woher man es auch immer berechnet) weil der maker ja 0,5 garnicht speichern würde.
Das ergebniss von 5x5 = 25 dividiert man mit 10 und schon hat man das richtige ergebniss: 0,25
Das könnte der maker natürlich auch nicht speichern. Aber vielleicht will man mit 0,25 ja auch weiterrechnen. Also läßt man es erstmal auf 25 und muß sich nur merken, es später wieder mit 100 zu dividieren.
hätte man 0,05 x 0,05 dann müßte man beide mit 100 multiplizieren und später mit 10.000 dividieren (100x100)
Dereknor
01.06.2004, 19:28
Super, das klappt alles :)
nu brauch ich aber leider noch den Tangens und einen weg, die alle auch rückwerts zu rechnen
MagicMagor
01.06.2004, 19:56
Tangens ist einfach..
Tangens = Sinus/Cosinus
CoTangens = Cosinus/Sinus
-------------
Bezüglich der Umkehrfunktion..
Da würde ich den Weg vorschlagen, den ich zumindest mal bei einer Wurzelfunktion gegangen bin.
Du fängst bei der kleinsten Zahl an und rechnest den Sinus aus.. dann überprüfst du das Ergebnis mit deiner Zahl, die du umwandeln willst, falls es nicht stimmt nimmst du die nächsthöhere Zahl etc..
Schon hättest du ne ArcSinusFunktion.
Ich glaub selbst Taschenrechner gehen nach dieser Methode vor, bis zu einer endlichen Stellenzahl natürlich..
Dereknor
01.06.2004, 20:44
Jo, aber ich habe ein dreieck, in dem ich kein sinus oder cosinus anwenden kann, weil kein winkel bekannt ist, sondern nur die beiden katheden
Aber ich hab die funktion gefunden :)
tan(x)=x + 1/3*x^3 + 2/7*x^5 + 15/315*x^7 ...
Leider fehlen mir aber immernoch die funktionen, um von einem tangens,cosinus oder sinuswert zurück zu rechnen zum winkel
Dr.Brain
02.06.2004, 14:03
Ich glaub, du machst die Sache zu kompliziert!
Das lässt sich sicherlich umgehen.
Und wenn nicht, dann gibts immer noch die gute alte Sinustabelle,
mit welcher du arbeiten müsstest, denn der Maker kennt ja
keinen cos,sin,tan,cotan.
Dereknor
02.06.2004, 14:38
Doch, nu kann er sinus und cosinus :)
Aber es läßt sich leider nicht umgehen, da mein script ein sonnensystem simuliert, und da sind kreisberechnungen umbedingt nötig. Strecken lassen sich teilweise mit phytagoras ausrechnen, aber keine winkel. Und gerade die sind zum berechnen der flugbahnen der Raumschiffe entscheident.
Aber nach einem tag scripten gehen sinus und cosinus nun perfekt und ziemlich genau :)
Eine sinustabelle ist zu ungenau, da ich sonst alle werte von 1-90 per hand eintippen müßte. Das währen 900 werte, da ich auf eine stelle hinter den komma die winkel einstelle
Dr.Brain
02.06.2004, 16:52
Freut mich für dich, dass es geht!
Aber was du da sagst hört sich sowas von kompliziert an,
dass ichs fast nich glauben kann.(Is das dann nachher 3d(die raumschiffe und so?)
Dereknor
02.06.2004, 22:24
Ne, 3d nich. Aber sie können sich im kreis bewegen und ich kann Gravitation simulieren.
Leider hackt mein script überall, da die zahlen zu oft die 999.999 grenze überschreiten :(
Versuch mal die altbekannten Anti-Ruckel-Tricks.
Wait 0.0
schon mal probiert?
Original geschrieben von Dereknor
Leider fehlen mir aber immernoch die funktionen, um von einem tangens,cosinus oder sinuswert zurück zu rechnen zum winkel
du probierst jeden Wert von 1 bis 360 in der Sinusfunktion durch und das Ergebniss, das am Nächsten zu dem zurückzurechnenden Wert liegt, hat einen relativ genauen x-Wert
Dereknor
02.06.2004, 23:39
jup, so hab ich es auch gemacht :)
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.