Was für eine mathematische Funktion könnte das hier sein?
-
blödmann schrieb:
Hansdampf schrieb:
Es gibt doch so eine e funktion für eine Kondensatorladekurve. Da konnte man irgendwie bestimmen, an welchen Wert sich die Funktion annähern soll. Kennt die zufällig jemand? Hatte das mal in der Schule, aber habe ich finde die Unterlagen nicht mehr. Ich denke das ist das, was ich suche.
Du hast *Null* Ahnung von was du da redest, oder?
wie du offensichtlich
-
Ich hatte das mal in der Schule. Mit hilfe einer e funktion, kann man die Lade und entladekurve eines Kondensators berechnen.
Die kurve die sich aus meinen Werten ergibt, ähnelt so einer Ladekurve. Nun könnte ich doch einfach mit dieser Formel etwas rumrechnen um ein ähnliches Bild dieser Kurve zu erhalten. Die Formel lautete damals 3*(1-e^x) oder so ähnlich. Auf jedenfall konnte man z.B. mit x = 3 bestimmen, dass die Kurve anfangs stark ansteigt, sich dann der 3 auf der y-Achse nähert, diese aber nie schneidet! Genau soetwas bräuchte ich, ich habe allerdings - wie gesagt - keine Unterlagen mehr davon.
-
Bist du sicher, dass das kontinuierliche Werte sind und da nicht noch Flags oder sonstiges enthalten ist oder du deinen Bereich für die Variable einfach zu groß gewählt hast?
Wie verhält es sich denn, wenn du Werte zwischen 0 und 4.000.000 ausprobierst?
-
interpretier den speicherinhalt mal als float oder double
-
Gute Idee, aber ist leider genau das gleich Bild. Sprich unlineare Funktion bloß mit reellen Zahlen.
Ich habe übrigens die Funktion wieder rausgefunden, die ich gesucht hab. Sie lautet a*e(1-e-t)
Diese Formel beschreibt (abgesehen davon das die Komponenten C und R fehlen) die Ladekurve eines Kondensators.
Der Term (1-e^-t) bewirkt, dass sich der Exponent von e der 1 anähert. Dadurch nähert sich die Kurve automatisch dem Wert a an.
(da z.b 1 - e^-9 = 1- 0,00000009 = 0,999999991)Leider ist es doch nicht das, was ich gesucht habe. Ich werde nun erstmal doch versuchen müssen, ein paar genauere Messungen vornehmen, um mehr Punkte rauszufinden.
-
Hansdampf schrieb:
Ich werde nun erstmal doch versuchen müssen, ein paar genauere Messungen vornehmen, um mehr Punkte rauszufinden.
haste irgendwas verlä0ßliches zum messen? dreht er bei "einem tastendruck" immer gleich weit? oder kannste dir mit edding zwei senkrechte linien (ca 14 grad) auf den monitor malen und dich in einen raum stellen mit echt vielen markanten geländepunkten und leichen und so und dann immer die geländepunkte, die auf der linken linie waren auf die rechte drehen und speicherinhalt notieren? du bemerkst erst bei 360grad, daß du durch bis und wieviel grad zwischen den linien waren.
mach am besten mehrere messungen, damit die messfehler nicht so schlimm werden. könnte ja sein, daß die chause ganz einfach zwischen 1 und 359 grad linear läuft und bei 0 ist ein sonderfall, der auch im code wegge-if-t wird.
-
Hmm gute Idee. Stimmt, 0 ist ein Sonderfall und wird meiner Meinung nach auch weggeifft. Ich habe schon versucht eine Map mit einem Kolloseum ähnlichen, runden Raum zu erstellen, wo auf der Innenseite eine Textur mit 360 Stichen drauf liegt. Dort hätte ich in 5er oder 10ner schritten abgezählt, doch leider lässt sich die Map nicht kompilieren, da die Texturlage ziemlich genau sein muss, was mit der alten Engine aber nicht wirklich möglich zu sein scheint.
Ich werde mal den "Trick" mit dem Edding probieren, allerdings werde ich Klebestreifen verwenden, denn die gehen sicher leichter wieder ab.
-
Die Map lies sich nun doch kompilieren, so dass ich eine äußerst genaue Messung vornehmen konnte. Ich habe dabei in 10° schritten gemessen und Notiert. Da die Kurve im unteren Bereich sehr Stark ansteigt, habe ich dort in 2° schritten gemessen. Hier das neue Excell Diagramm:
http://img485.imageshack.us/img485/431/neuekurve3zj.jpgDa es ab 70° 10ner Schritten weiter geht, bricht die Kurve in der Mitte etwas ein. Ich gehe davon aus, dass die Kurve sich wie die rote gestrichelte Linie verhält. Was meint ihr? Ich würde sagen Wurzelfunktion.
-
Sieht verdammt danach aus , am anfang zwar bissle steil aber das täüscht sicher nur.
ich würd auch sagen wurzelfunktion
-
hansdampf schrieb:
sind die abstände auf der x-achse ungleich?
mach ein x-y-diagramm (wenn du excel verwendest). dann stimmen die abstände.
-
edit: Ich bin hansdampf, also nicht Wundern.
Danke für den Tipp Volkard, ich habe jetzt ein XY-Diagramm benutzt:
http://img226.imageshack.us/img226/7762/kurvexy7ui.jpgEs sieht jetzt für mich zu 90% nach einer Wurzelfunktion aus. Ich habe die obere Hälfte der Funktion in Paint gespiegelt und unten "dranngeklebt" sieht dann verdammt nach einer nach rechts geöffneten Parabel aus, was ja einer Wurzelfunktion entspricht:
http://img226.imageshack.us/img226/696/kurvexywurzel5xd.jpgIch habe schon mit meinen Mathelehrern gesprochen und werde genaueres am Montag mit ihnren bereden. Eine Wurzelfunktion ist ja folgendermaßen definiert: a*[nte wurzel aus x]+C (Sorry, aber das Wurzeltag funktioniert nicht, bzw. ich weiß nicht, wie man es korrekt benutzt!?)
Ich habe nun 3 Unbekannte. Und zwar a,n und x. C ist 0, da die funktion auf der X-Achse nicht verschoben ist und ihren Scheitelpunkt bei (0|0) hat.
Theoretisch müsste ich doch jetzt 3 Gleichungen aufstellen können und mithilfe der Gauschen Elimination (Additionsverfahren ect.) die Unbekannten lösen können!? Ich müsste dann eine Formel erhalten, wo ich nur eine Gradzahl einsetzen muss, um dann den genauen "Drehwert" für den Egoshooter zu erhalten. z.B. Für 180° und 90°:
a*[nte Wurzel aus 180] = 4404219
a*[nte Wurzel aus 90] = 4371579
ect.Das müsste doch irgendwie so machbar sein, oder?
-
Wenn du die Daten in einem log-log Plot darstellst, müsste sich doch eine Gerade ergeben, oder? Wäre die nicht leichter zu schätzen?
-
Hmm, was ist ein loglog plot?
Habe eben versucht nach dem Additionsverfahren zu lösen. Das große Problem ist das n der Wurzel. Ich habe mich dann irgendwann in zig logarythmen verstrickt und komme so nicht weiter. Mal sehn ob meine Mathelehrer rat wissen.
-
Perner schrieb:
Hmm, was ist ein loglog plot?
beide achsen verstellen, daß sie logarithmische skala haben.
mach am besten auch nen loglog plot und zeig den.und stell die tabelle online, damit wir ein wenig mit deinen daten spielen können. hab am sonntag sonst vielleicht ne stunde langeweile.
aber dein dingend ist keine wurzelfunktion.
eher log(x).
-
Habe mal die Excell Tabelle hochgeladen:
http://home.ripway.com/2005-11/500915/Tabelle.xls
-
Perner schrieb:
Habe mal die Excell Tabelle hochgeladen:
http://home.ripway.com/2005-11/500915/Tabelle.xlsIch habe mal mit matlab einen log-log plot gemacht: http://mitglied.lycos.de/dooya/loglog.jpg
Sieht aus wie ein broken stick.
FÜr sowas sollte es doch eigentlich Schätzverfahren geben, oder?
-
dooya schrieb:
FÜr sowas sollte es doch eigentlich Schätzverfahren geben, oder?
jup. du hast es gelöst.
also warum nicht die 30 gemessenen stützstellen nehmen und dazwischen linear interpolieren? und wenn sich herausstellt, daß wo was ungenau ist, dort genauer nachmessen.
-
Hmm jo, so werde ich es wohl vorerst machen. Anscheinend ist ja wirklich keine Wurzelfunktion, aber man könnte sich der Kurve mit hilfe einer Wurzelfunktion zumindest sehr nah anähern und das reicht mir schon. Was ich am Ende will, ist eine Funktion wo ich nur die Gradzahl einsetzen muss und den entsprechenden Wert erhalte. Ich brauche dies später, wenn ich die Positionen mit hilfe der Winkelfunktionen bestimmen möchte. Hier mal ein kurzes Beispiel, worauf ich eigentlich hinaus will:
Ich stehe in einem 3-Dimensionalen Raum. Ich stehe - von Oben betrachtet - an Position:(X=0 | Y=0 | Z=0). Ein Gegner steht an Position:(X=3 | Y=4 | Z=0).
Nun muss ich zwei Winkel ausrechnen und zwar den X und Y Winkel, damit mein Programm nachher weiß, wo es hinzielen soll. Hier ein Beispielbild der X-Achse:
(Bitte verzeiht mir dieses saumäßig gezeichnete Koordinatensystem. :))
http://img6.imageshack.us/img6/8764/beispiel9ea.jpgDer Grüne Punkt bin ich. Der rote Punkt ist der Gegner und die gestrichelte blaue Linie ist das Dreieck das ich verwende, um den Winkel von mir zum Gegner zu erhalten. Ich rechne einfach Gegenkathete durch Ankathete. Da so der Tangens definiert ist, verwende ich die Umkehrfunktion um den Winkel (in diesem Fall α) zu erhalten.
Theoretisch dürfte das Programm - zumindest auf der X-Achse - nun auf den Gegner zielen.Am besten wäre es wenn ich Funktionen hätte, mit denen ich die Drehungen auf den Pixel genau bestimmen könnte. Auf den Grad genau reicht aber Notfalls auch aus.
-
Ups, ich habe doch glatt deinen Thread übersehen dooya. Sorry!
Hmm, ich habe leider nur Grundwissen der höheren Mathematik. Was ein "Broken Stick" ist, weiß ich leider nicht(Ich vermute mal den Knick oben rechts!?). Genausowenig wie ich es schätzen könnte. Hab mal bei google gesucht, aber nur irgendwas über Naturschutz gefunden!?
Naja, jedenfalls hab ich noch ein riesen Problem und zwar, dass die XYZ Koordinaten der Spieler auch nicht-linear abgespeichert werden! Ohne die Funktion rausgefunden zu haben, komme ich hier wohl nicht weiter.
-
AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!!
ICH BIN SO EIN IDIOOOOOOOOOT!!!!!!!!!!!!!!!!!Ich hab alle Probleme gelöst. Der Tipp kam ganz am Anfang und zwar die Zahl
als Float zu interpretieren. Das habe ich anfangs auch gemacht aber es funktionierte nicht.
Das lag allerdings daran, dass ich die Adresse 2DE10C7 ausgelesen hab, der wirkliche Wert allerdings in 2DE10C8 steht, dadurch wurde die funktion wieder nicht linear.Die Werte die ich jetzt bekomme, entsprechen genau den werten, die ich haben wollte. Sprich in Grad usw. bloß auf den milimeter genau.
Ich entschuldige mich an dieser Stelle für diesen Sinnlosen Thread und bedanke mich trotzdem für die Mühe, die ihr euch gemacht habt.