Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Negaia

Alter Hase

  • »Negaia« ist der Autor dieses Themas

Beiträge: 465

Wohnort: Nürnberg

Beruf: Vertriebsingenieur

  • Private Nachricht senden

1

21.10.2017, 13:04

Punkt innerhalb eines Quadrates

Hallo Leute,

da ich mich heute morgen mit Thema Area of Interest befasst habe, wollte ich mein Ergebnis hier teilen. Vielleicht kann das jemand gebrauchen. Ich habe in Negaia clientseitig bis jetzt das AOI als Distanz zwischen zwei Vektor berechnet. Wenn ein Gegenstand innerhalb der Distanz dann im AOI ansonsten außerhalb des AOI. Geometrisch gesehen ergibt sich daraus ein Kreis. Der Smartfox-Server hingegen legt ein Quadrat um die zu prüfende Position (normalerweise Spielerposition). Somit gibt es eine Diskrepant.


(Link)


Das gesamte Quadrat ist die AOI auf dem Smartfox-Server - Der Kreis hingegen ist die AOI auf dem Client berechnet über den die Vektor-Distanz.

Die Berechnung auf dem Client sieht nach etwas Überlegung so aus:


(Link)


Ich hoffe jemand kann das gebrauchen.

Gruß
Peter@Team Negaia
___________________________________________________________________________________________________
Negaia ist kostenlos spielbar - Jetzt betreten: http://www.negaia.com
Trete unserer wachsenden Community bei - https://discord.gg/yrGb2YZ

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

21.10.2017, 13:30

Lässt man jetzt noch die Wurzeln weg, ist es sogar auch noch schnell.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Negaia

Alter Hase

  • »Negaia« ist der Autor dieses Themas

Beiträge: 465

Wohnort: Nürnberg

Beruf: Vertriebsingenieur

  • Private Nachricht senden

3

21.10.2017, 14:04

Ja stimmt - Perfekt danke... Wenn man den Wald vor lauter Bäumen nicht mehr sieht...

Habs hier nochmal korrigiert:

(Link)
___________________________________________________________________________________________________
Negaia ist kostenlos spielbar - Jetzt betreten: http://www.negaia.com
Trete unserer wachsenden Community bei - https://discord.gg/yrGb2YZ

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Negaia« (21.10.2017, 14:53)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

21.10.2017, 16:20

Unter der Annahme, dass d immer positiv definiert ist, kann man noch weiter vereinfachen, indem man das d aus den Beträgen rauszieht. Allerdings frage ich mich, was der große Vorteil gegenüber einem komponentenweisen Vergleich bzw einfachen "point in box" test ist. Sprich §|x_l-x_p| \le d; |y_l-y_p| \le d§
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Negaia

Alter Hase

  • »Negaia« ist der Autor dieses Themas

Beiträge: 465

Wohnort: Nürnberg

Beruf: Vertriebsingenieur

  • Private Nachricht senden

5

21.10.2017, 17:41

Hallo Nox,

ich glaube ich habe extrem "umstandsgekramt" :D :D :D - Es gibt gegen komponentenweisen Vergleich keinen Vorteil außer das es mir den Morgen gekostet hast :D

Naja wenigsten habe ich meine grauen Zellen etwas gefordert?

Gruß
Peter@Team Negaia
___________________________________________________________________________________________________
Negaia ist kostenlos spielbar - Jetzt betreten: http://www.negaia.com
Trete unserer wachsenden Community bei - https://discord.gg/yrGb2YZ

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

21.10.2017, 18:37

In der Tat brauchst du nur diese beiden simplen Vergleiche. Das ist viel einfacher und schneller als das, was du da ziemlich umständlich aufgeschrieben hast ;)

Negaia

Alter Hase

  • »Negaia« ist der Autor dieses Themas

Beiträge: 465

Wohnort: Nürnberg

Beruf: Vertriebsingenieur

  • Private Nachricht senden

7

21.10.2017, 18:41

Kennt ihr das? Den Wald vor lauter Bäumen nicht sehen? :-)
___________________________________________________________________________________________________
Negaia ist kostenlos spielbar - Jetzt betreten: http://www.negaia.com
Trete unserer wachsenden Community bei - https://discord.gg/yrGb2YZ

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

21.10.2017, 19:10

Passiert oft genug. Auf jeden Fall ist deine Formel nen schönes Training für die grauen Zellen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

9

23.11.2017, 16:05

Ich finde es ist auch ziemlich verkompliziert aufgeschrieben, obwohl es ziemlich einfach ist. :D
Damit ein Punkt innerhalb eines Kreises ist, darf er maximal so weit vom Mittelpunkt entfernt sein, wie der Radius groß ist.

Um zu prüfen, ob ein Punkt P innerhalb eines Kreises mit dem Mittelpunkt M und dem Radius erliegt, musst du also nur folgendes prüfen:
Länge(M - P) <= Radius.

Wobei die Vektorlänge Länge(P) = WURZEL(Px^2 + Py^2).
Die Wurzel bekommt man sicherlich noch irgendwie raus.
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

23.11.2017, 17:07

Erstens ist der Thread schon einen Monat alt, zweitens ging es um ein Quadrat, nicht um einen Kreis.

Die Wurzel bekommt man sicherlich noch irgendwie raus.

Natürlich: x² + y² <= r²

Werbeanzeige