Logarithmus

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Logarithmus

Beitrag von DieFüchsin »

wie bildet man in AGS einen Logarithmus?
Danke, Adventuretreff! <3
Benutzeravatar
Kaktus
Tastatursteuerer
Tastatursteuerer
Beiträge: 658
Registriert: 17.02.2006, 01:45
Wohnort: Wüstä
Kontaktdaten:

Beitrag von Kaktus »

Ich glaube standardmäßig gibt es in AGS keine Funktion dafür. Das heißt du musst entweder selber eine schreiben oder du benutzt das Plugin in hier ->http://www.bigbluecup.com/yabb/index.ph ... #msg147539, dass unter anderem eine Funktion für Logarithmen hinzufügt.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Hab mal was geschustert:

Code: Alles auswählen

float log(float base, float x) {
  float test=0.0;
  float c;
  int e=1;
  float ten;
  float res=0.0;
  float found=0.0;

  while (e>-8) {    // bis 0.0000001
    ten=Maths.RaiseToPower(10.0, IntToFloat(e));
    if (e==1) c=-10.0*ten;
    else c=0;
    while(c<=11.0*ten) {
      test=found+c;
      res=Maths.RaiseToPower(base, test);
      if (res==x) {
        return test;
      }
      if (res>x) {
        found=test-ten;
        c=1000.0;
      }
      c=c+ten;
    }
    e--;
  }
  return test;
}
Die Funktion findet den Exponenten im Bereich -100 bis 100.

Beispiel:
Zehner-Logarithmus von 120:
Display("%f", log(10.0, 120.0);
Use gopher repellent on funny little man
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Beitrag von DasJan »

@Khris: Das sieht aber esoterisch aus ;)

Wikipedia gibt eine Reihe an, die recht schnell zu guten Ergebnissen kommen soll: Klick.

Das Jan
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Hehe, ich weiß, der Vorteil bei meiner Funktion ist halt, dass man nur durch Ändern von ein oder zwei Zeilen auch komplett andere Sachen ausrechnen kann, z.B. die x-te Wurzel, o.ä.

Die Reihe bei der wikipedia hab ich gesehen, hab mich aber dagegen entschieden.
AGS kann rekursive Funktionen, es geht also auch damit, aber AGS hat kein intern definiertes e, deswegen ist meine Methode genauer.

Für Echtzeit-3D würde ich meine Version nicht hernehmen, aber für den Rest sollte es reichen ;)
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

danke für die Mühe khrismuc, werds morgen ausprobieren!
Find ich ja blöd, dass AGS nicht richtig rechnen kann ;)
Danke, Adventuretreff! <3
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Beitrag von DasJan »

khrismuc hat geschrieben:AGS kann rekursive Funktionen, es geht also auch damit, aber AGS hat kein intern definiertes e, deswegen ist meine Methode genauer.
Das hat mit Rekursion nix zu tun. Du rechnest so viele Summanden aus, bis die dir klein genug sind, und fertig. Dreizeiler.
khrismuc hat geschrieben:aber AGS hat kein intern definiertes e, deswegen ist meine Methode genauer.
e kommt doch gar nicht drin vor :)
Und genauer ist deine Methode sicher nicht. Da bekommst du ganz schnell fiese Überläufe, da du ständig base^test ausrechnest. Das fliegt dir sehr schnell um die Ohren.

Das Jan
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Stimmt, ich brauch das e gar nicht, ich hab "Wie komme ich vom ln auf eine beliebige Basis" nicht zuende gedacht ;)

Fiese Überläufe hab ich aber auch nicht bemerkt, und genau genug war es auch, z.B. hat mir log(3.45, 39403902.0) als Ergebnis 14.122852 (AGS kann nur 6 Nachkommastellen) geliefert, mein Taschenrechner spuckt 14,122851531 aus.

Poste doch mal den Dreizeiler, ich bin gespannt (und zu faul, es selbst zu coden ;)).
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

öh kann ich das jetz so übernehmen? :roll:
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Kannst Du ;)
Wofür brauchst Du die Logarithmusfunktion eigentlich?
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

Danke. Für mein ewig nicht fertig werdendes Zahnradrätsel brauch ich die ;) mir wurde geraten, die zu erwartende Anzahl an Drehversuchen mit einem Logarithmus zu berechnen, um das Rätsel bei zu vielen Versuchen automatisch abbrechen zu lassen. Da Ausgangseinstellung ja immer zufällig gewählt wird, muss auch der Erwartungswert immer neu Berechnet werden.
Danke, Adventuretreff! <3
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

ärm, da grad keiner da ist, den ich sonst mit dieser dämlichen Frage stören kann...

mir wurde geraten, die Formel log Abstand / log 2 zu benutzen, wobei Abstand ne Variable is. Da is ja nur jeweils eine Zahl... wie schreib ich denn das in die Logarithmusfunktion? :oops:
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Es gibt unterschiedliche Schreibweisen, log heißt oft auch der Zehnerlogarithmus, also der Logarithmus zur Basis 10.

log Abstand / log 2 wäre dann log(10.0, abstand) / log(10.0, 2.0), das ist dasselbe wie der Logarithmus des Abstandes zur Basis 2.

Also: log(2.0, abstand)
Zuletzt geändert von KhrisMUC am 20.09.2006, 22:26, insgesamt 1-mal geändert.
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

:shock: die welt der mathematik werd ich nie begreifen... danke dir khrismuc!
Danke, Adventuretreff! <3
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

uff, also ich krieg als Ergebnis 61 raus, kann das sein, dass man so viele Versuche für dieses dämliche Zahnradrätsel braucht??? das wär ja katastrophal!
Danke, Adventuretreff! <3
Antworten