X1 = X Des Der Maus am nächsten liegenden Objekts? *gelößt*

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

DeVIL

Betreff: X1 = X Des Der Maus am nächsten liegenden Objekts? *gelößt*

BeitragMo, Nov 17, 2008 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja also vll ist die überschrift ein wenig undeutlich deshalb werde ich es nochmal in einem bild darstellen:


___
|__|

<-






:::
:::


X1 = X Des Der Maus am nächsten liegenden Objekts Question
  • Zuletzt bearbeitet von DeVIL am Mi, Nov 19, 2008 16:42, insgesamt einmal bearbeitet
 

da_poller

BeitragMo, Nov 17, 2008 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm null verstanden..

versuchs ma mit nem paint bild
 

CN

BeitragMo, Nov 17, 2008 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, soweit ich das verstanden habe, willst du herausfinden welches Bild der Maus am nächsten liegt, richtig?
https://www.blitzforum.de/foru...php?t=3950
Schau mal danach, falls du sowas suchst.

Edit: Falls ich deine Frage falsch verstanden haben sollte: einfach ignorieren.^^
[url=unrealstuff.bplaced.de]all rites reversed[/url]

ozzi789

BeitragDi, Nov 18, 2008 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Pythagoras ist der Mann Very Happy
X Maus , Y Gegner


a^+b^=c^

in unserem Fall
Distanz X achse von der Maus zum GegnerX^+ Distanz Y achse von der Maus zum GegnerY^= Absolute Distanz^
Wobei ^für im Quadrat steht


jetzt berechnest du das für jeden gegner und dort wo die distanz am kleinsten is, ja das wär dan der nächste Wink




Mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
  • Zuletzt bearbeitet von ozzi789 am Mi, Nov 19, 2008 8:37, insgesamt einmal bearbeitet

DeVIL

BeitragDi, Nov 18, 2008 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
wer redet denn hier von gegnern?
und wie soll ich denn die Kleinste distanz als X1 definieren?

PS: es heißt Pythagoras Wink

Xeres

Moderator

BeitragDi, Nov 18, 2008 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Alle Objekte durchgehen, Distanz ermitteln und diese in einer Variable speichern, wenn die Distanz kleiner ist, als der momentane Inhalt in der Variable.
Ansonsten die Fragestellung präzisieren...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

The_Nici

BeitragMi, Nov 19, 2008 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Für das sortieren würde ich den QuickSort-Algo nehmen, der ist mathematisch bewiesen der schnellste Sortierungsalgorhitmus. Auf Wikipedia findest du sicher etwas dazu.

MfG

DeVIL

BeitragMi, Nov 19, 2008 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok danke habs hinbekommen

ozzi789

BeitragMi, Nov 19, 2008 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wär manchmal noch interessant Very Happy
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

The_Nici

BeitragMi, Nov 19, 2008 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ozzi789 hat Folgendes geschrieben:
Wie wär manchmal noch interessant Very Happy

Wenn du meinen Post gelesen hättest, würdest du vielleicht deiner Antwort etwas näher kommen.

peacemaker

BeitragMi, Nov 19, 2008 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Niemals den Quicksort oder sonstiges.
Er muss ja nur den nächsten nehmen?
Da reichts einfach die kleinste Distanz zu suchen.

Mit diesem Problem hatte ich bei den NPCs, bzw. deren Perceptions (Umwelterkennung) lange zu kämpfen.
Man kommt leider nicht um alle-durchgehen-und-prüfen, aber man kann ja einschränken, und nur alle in einen bestimmten Radius, etc.

mfG
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

The_Nici

BeitragMi, Nov 19, 2008 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum niemals den QuickSort? Dieser sortiert genau die Werte. Warum sollte man den nicht nehmen? Um die kleinste Distanz zu suchen muss man ja die Distanzen vergleichen, und genau das macht der QuickSort.

BladeRunner

Moderator

BeitragMi, Nov 19, 2008 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
local maxi = 0
local ergebnis
for a = 1 to anzahl_elemente
    if array(a) < maxi then
        maxi = array(a)
        ergebnis = a
    endiuf
next

liefert den grössten Wert ohne dass irgendwas sortiert werden müsste.
Die kleinste Distanz ist analog ermittelbar. Ein Sortieralgo ist hier also de facto überflüssig und kostet unnötig Ressourcen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Eingeproggt

BeitragMi, Nov 19, 2008 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Quicksort sortiert dir alle Werte auf- oder absteigend, wie man es grad braucht.
Aber wie peacemaker schon schrieb, braucht man nur einen Wert genau zu erfassen, in etwa so:

Code: [AUSKLAPPEN]
mx=MouseX()
my=MouseY()
mindist#=10000000
For gegner.Tgegner=Each Tgegner
  dist#=Sqr((gegner\x-mx)*(gegner\x-mx)+(gegner\y-my)*(gegner\y-my))
  If dist#<mindist Then
    mindist#=dist#
    ausgew_gegner.Tgegner=gegner
  Endif
Next
;ausgew_gegner ist nun der Gegner am nähesten zur Mauskoordinate, noch Fragen? ^^


nici, du bist aufgefordert, einen Quicksort-Algo zu schreiben, der schneller ist Very Happy
Achja, falls sich jemand wundert warum ich kein ^2 verwende, sondern ausmultipliziere: Reiner Speed-optimierungswahn Cool

mfG, Christoph.

EDIT: Na noch besser, Blade liefert die Array-Lösung und ich die Type-Lösung Smile
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

The_Nici

BeitragDo, Nov 20, 2008 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, dann nicht, ich wollte nur mit Halbwissen prahlen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group