More Math Funktions

    • GEX

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • More Math Funktions

      Ich habe eine Extension geschrieben welche 6 nützliche Funktionen hinzufügt. Das ganze ist in C geschrieben und hat somit eine hohe Ausführungsgeschwindigkeit(Kommt besonders bei den rechenintensiven Funktionen zugute, die sehr oft ausgeführt werden).

      Folgende Funktionen existieren momentan(Auf Wunsch werden es mehr):

      deceleration_distance(speed, friction) Gibt den Wert zurück der die Geschwindigkeit und der Reibung entspricht. (speed*(speed-friction))/(2*friction)
      point_line_distance(x1, y1, x2, y2, xp, yp, segment) Gibt die Entfernung zwischen der Linie und dem Punkt zurück. Segment gibt an ob es eine Gerade(false) oder eine Strecke(true) ist.
      point_in_circle(x, y, px, py, r) Prüft ob der Punkt im Kreis liegt.
      point_in_triangle(x1, y1, x2, y2, x3, y3, xp, yp) Prüft ob der Punkt im Dreieck liegt.
      point_in_view(x1,y1,direction,angle,xp,yp) Prüft ob der Punkt im angegebenen Sichtfeld liegt.
      angle_difference(angle1,angle2) Gibt den Abstand in Grad zwischen den beiden Richtungen zurück. (Inklusive Vorzeichen)

      Ich hoffe, dass ich einigen mit den Funktionen helfen kann.
      Dateien
      • MMF.zip

        (5,59 kB, 307 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Chris987 ()

    • Ich bin mir nicht sicher ob point_in_circle() mit der Extension schneller ist, als eine reine GML-Version. Du musst bedenken, dass der Aufruf auch einen gewissen Overhead hat.
      Und gerade bei dieser Funktion, werden keine langsamen Routinen wie sqrt() gebraucht (Man kann ja auch (dx * dx + dy * dy) < r² vergleichen).

      © 2008 by Teamgrill Productions
    • point_in_circle und manch andere Funktion habe ich einfach nur vollständigkeitshalber hinzugefügt. Ich habe mal alle Funktionen mit extension und GML verglichen:


      deceleration_distance: GML dreimal so schnell wie DLL
      point_in_circle: GML dreimal so schnell wie DLL
      point_line_distance: DLL zweimal so schnell wie GML
      point_in_triangle: DLL zweimal so schnell wie GML
      point_in_view: DLL zweimal so schnell wie GML
      angle_difference: GML zweimal so schnell wie DLL

      Ich schließe daraus, dass sich nur größere Berrechnungen sich lohnen in eine DLL zu packen. Aber wie gesagt, einige Funktionen sind nur dazu da, um sich nicht die Gleichung heraussuchen zu müssen und dass die Funktionen in der Autovervollständigung stehen.
    • Chris987 schrieb:

      point_in_circle und manch andere Funktion habe ich einfach nur vollständigkeitshalber hinzugefügt. Ich habe mal alle Funktionen mit extension und GML verglichen:


      deceleration_distance: GML dreimal so schnell wie DLL
      point_in_circle: GML dreimal so schnell wie DLL
      point_line_distance: DLL zweimal so schnell wie GML
      point_in_triangle: DLL zweimal so schnell wie GML
      point_in_view: DLL zweimal so schnell wie GML
      angle_difference: GML zweimal so schnell wie DLL

      Ich schließe daraus, dass sich nur größere Berrechnungen sich lohnen in eine DLL zu packen. Aber wie gesagt, einige Funktionen sind nur dazu da, um sich nicht die Gleichung heraussuchen zu müssen und dass die Funktionen in der Autovervollständigung stehen.


      Wirklich nette DLL!
      Recht nutzliche Funktionen, aber wieso sollte irgendjemand die paar Funktionen benutzen die deutlich langsamer sind als reines GML?
      Pack doch einfach die GML-skripte mit denen du disen Vergleich gemacht hast, in die extension, dann hast du auch den Vorteil der Autovervollständigung =)

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)