4ecke per mausklick setzen, dürfen nicht überlappen



  • hallo alle zusammen,

    ich habe folgendes problem und bekomme das einfach nicht hin.

    ich habe ein kleins pogramm, bei dem man per mausklickt vierecke zeichnen kann, also an der stelle wo man klickt, wird ein viereck gezeichnet und die koordinaten des vierecks speichere ich in einer liste. für jeden klick wird ein element hinten an die liste angehängt.
    im moment ist es möglich, dass man quasi mehrere 4ecke aufeinander legen kann, bzw. man kann die 4ecke so nah aneinanderlegen, dass sie sich überlappen.

    ich wollte das nun so gestalten, dass es nicht möglich ist, dass sich dir 4 ecke überlappen, also wenn man klickt und das neue viereck würde sich mit einem bereits bestehenden überlappen, soll keins gesetzt werden.

    dazu wollte ich einfach die gesamte liste durchgehen nach jedem klick und die koordinaten der einzelnen elemente, also der bereits bestehenden 4ecke auslesen und mit den aktuell geklickten koordinaten vergleichen und daraus dann abhängig ein viereck zeichnen lassen oder eben nicht. die liste durchlaufen usw. ist kein problem, ich weiß aber nicht, wie ich den vergleich anstellen soll. ich habe schon eine menge probiert, aber es funktioniert nix richtig.

    wäre toll,w enn da jemanden etwas zu einfällt. im moment haben die vierecke eine kantenlänge von 10.

    würde mich freuen, wenn mich da jemand weiter bringen könnte.

    vielen dank schonmal
    gruß
    steffi



  • Ich nehme mal an das ganze ist in 2D und die Vierecke sind an deen Achsen ausgerichtet (keine schrägen 4ecke oder so)
    Dann kommt es darauf an wo du dein 4eck immer zeichnest. Wenn der Mausklick der Mittelpunkt deiner Vierecke ist musst du nur testen ob die X Koordinaten 5 Einheiten vom 4eck entfernt sind. Das selbe für die y Koordinaten.

    In allen anderen Fällen (Viereck ist bei Mausklick links unten etc... mal dir das ganze einfach mal auf, das ist wirklich 3 Klasse Mathematik, bin mir sicher du bekommst das hin !



  • das habe ich schon mal so probiert. ich habe das dann auf abstand kleiner 10 geprüft, also habe en abstand der mittelpunkte geprüft, irgendwie habe ich das nicht hinbekommen, weil manmuss ja für links, rechts und oben, unten prüfen und irgenwie bekomme ich das nicht hin das zu prüfen und dann gegebenenfalls zu zeichnen oder auch nicht. das aufmalen hat auch noch nix gebracht, die idee hatte ich auch schon mal 😞



  • Sind die Rechtecke alle gleich groß?

    Wenn ja kannst du doch ein Array definieren. Alles was 1 ist ist ein Rechteck alles was 0 ist zeichnest du nicht.



  • Wenn du nur kurz sagen würdest wie du deine vierecke positionierst dann könnte man dir sehr weiterhelfen.
    Du klickst jetzt z.B. an Stelle x = 45 und y = 30, Wo genau liegt jetzt dein Quadrat. Hat es die 4 Punkte (40,25) (50,25) (50, 35) (40,35) oder ist (x,y) der untere Like Punkt oder gar der obere Rechte. Wenn man das wüsste wäre eim schon sehr geholfen.


Anmelden zum Antworten