Positionsberechnung in Waben

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

worschtbrot

Betreff: Positionsberechnung in Waben

BeitragFr, Nov 16, 2012 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebes Forum, ich habe mal wieder ein Problem.
Und zwar haben wir ein über ein 2-Dimensionales Feld bestehen aus Waben. Das ganze sieht ungefähr so aus, wie das folgende: EDIT: Eigenes Bild eingefügt
user posted image
Das Problem ist zu erkennen auf welchem Feld ich mich befinde, anhand der Position des Mauszeigers. Schwierig wird es an den Überschneidungen.

BlitzMoritz

BeitragFr, Nov 16, 2012 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Unter der Annahme, dass x,y die zentrale Position einer einzelnen Wabe und w die Breite des Quadrates ist, sollte so etwas wie dieses hier
BlitzBasic: [AUSKLAPPEN]
Local dx# = Abs(MouseX()-x)
Local dy# = Abs(MouseY()-y)
If dx+dy < w And dy < 0.5*w Then Print "Maus ist in der Wabe"
die nötige Information bringen.

Lobby

BeitragFr, Nov 16, 2012 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
@BlitzMoritz, soweit ich das erkennen kann, prüft dein Code nur, ob die Maus sich in einem Rechteck befindet. Ich denke, dass der Threadersteller mit "Überschneidungen" aber genau die Stellen meinte, die du mit deinem Code nicht zufriedenstellend abdeckst.

Zum Thema, ich meine dieser Worklogeintrag von Xeres könnte weiterhelfen.
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

BlitzMoritz

BeitragSa, Nov 17, 2012 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Lobby hat Folgendes geschrieben:
... soweit ich das erkennen kann, prüft dein Code nur, ob die Maus sich in einem Rechteck befindet.
Dann erkennst du's nicht richtig.
BlitzBasic: [AUSKLAPPEN]
Global x# = 200
Global y# = 200
Global w# = 100

Graphics 400, 400, 0, 2
Global half_w = 0.5*w


Function Draw()
dx# = Abs(MouseX()-x)
dy# = Abs(MouseY()-y)
If dx+dy < w And dy < 0.5*w Then
Color 255,0,0
Else
Color 255,255,255
EndIf
Line x-w, y, x-half_w, y+half_w
Line x-half_w, y+half_w, x+half_w, y+half_w
Line x+half_w, y+half_w, x+w, y
Line x+w, y, x+half_w, y-half_w
Line x+half_w, y-half_w, x-half_w, y-half_w
Line x-half_w, y-half_w, x-w, y
End Function

Repeat
Cls
Draw()
Flip
Until KeyDown(1)

Lobby

BeitragSa, Nov 17, 2012 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, mein Fehler, hab mich wohl verlesen. Würde so natürlich funktionieren.
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group