Kreisfelder in Arrays abrfagen

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

    • Kreisfelder in Arrays abrfagen

      Hallöchen Leute!

      Habe da eine Frage bezüglich Arrays bzw Grids.
      Viele von euch kennen sicher die "ds_grid_set_disk" bzw "ds_grid_get_disk" Methoden, mit denen Man sozusagen "Kreisflächen" in den Grids abfragen bzw setzen konnte. (Also von einem Mittelpunkt ausgehend einen Kreis "befüllen" bzw abzufragen.)

      Nun, dies ist für Grids natürlich Praktisch, ich jedoch würde mir die Funktion gerne selber "nachbasteln", da ich dadurch mehr kontrolle hätte (und zusätzliche Abfragen implementieren könnte.)

      Ich habe da auch schon eine Möglichkeit gefunden wie man das machen könnte:


      GML-Quellcode

      1. //auf diesen Koordinaten im Grid soll der Kreis "gesetzt" bzw "abgefragt" werden.
      2. origin_x = 20;
      3. origin_y = 32;
      4. //360° durchgehen
      5. for(r=0;r<360;r+=+1){
      6. var max_le;
      7. max_le = 10; //Radiums von 10 Feldern abfragen
      8. //vom Mittelpunkt nach außen gehen
      9. for(le=0;le<max_le;le+=+1){
      10. //berechne nun (relativ zu den ursprungskoordinaten) das nächste Feld des Kreises.
      11. new_x = origin_x+round(lengthdir_x(le,r));
      12. new_y = origin_y+round(lengthdir_y(le,r));
      13. //setze das Feld (man könnte den Befehl auch gegen die Abfrage eines 2 Dimensionalen Arrays austauschen. Das Prinzip ist ja das gleiche.)
      14. ds_grid_set(gridID,new_x new_y,0); //Trage nun in das eine Feld den Wert 0 ein
      15. //für Arrays:
      16. //Array[new_x][new_y] = 0;
      17. }
      18. }
      Alles anzeigen


      Das Problem an der ganzen Sache ist, dass der Script mehrmals hintereinander dieselbe Stelle abfragt.
      Dies kann sich bei der mehrfachigen Anwednung des Scripts negativ auf die Performance auswirken.

      Gibt es eine Performanceschonendere Art diesen "Kreis" Abzufragen?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()

    • Alternativ kannst du es ja auch so wie im Anhang machen. Das Script "scr_grid_disk_each" durchläuft alle Zeilen, die für den Kreis in Frage kommen und berechnet für jede Zeile den linken und rechten Schnittpunkt mit dem Kreis nach Pythagoras. Alle Felder dazwischen liegen dann im Kreis.
      Dateien
    • Benutzer online 1

      1 Besucher