Ergebnis 1 bis 10 von 10
  1. #1
    *chris ist offline Mitglied
    registriert
    25-06-2005
    Beiträge
    46

    Prüfen ob sich divs berühren.

    hi

    ich setze in einen div container dynamisch andere divs x1, x2, x3, x4, x5, x6, ...
    bei den xX divs weiß ich, wleche koordinaten diese haben. wie kann ich überprüfen, ob sich dieses divs berühren. habe probiert alle werte in einem array zu speichern, allerdings dauert die überprüfung dann ewig, da die anzahl der kontrollen ja exponential steigen.

    jmd ne idee?
    Geändert von *chris (03-05-2007 um 11:45 Uhr)

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Prüfen ob sich divs berühren.

    Anders geht es nicht, aber vielleicht ist deine Überprüfung ungünstig programmiert.
    Hier http://forum.jswelt.de/javascript/37...tml#post243756 (JavaScript Spiel - Problem mit Drag&Drop) hatte ich mal so einen Test programmiert. o1 und o2 sind jeweils die zwei Elemente für die du testen möchtest, ob sie sich berühren.

  3. #3
    *chris ist offline Mitglied
    registriert
    25-06-2005
    Beiträge
    46

    AW: Prüfen ob sich divs berühren.

    danke. aber das problem bei mir besteht schlichtweg in der anzahl der elemente die überprüft werden müssen.

    bei 30 stück sind das zich überprüfungen. mal sehen, vllt kann ich irgendwie die nach position ordnen lassen, sodass ich nur jeweils einen prüfen muss.


    danke dir für die anregung.

  4. #4
    Avatar von Albu
    Albu ist offline Foren-Gott
    registriert
    04-07-2001
    Beiträge
    13.501

    AW: Prüfen ob sich divs berühren.

    Also die Anzahl der Überprüfungen würde ich mal auf "n*(n-1)/2" schätzen. Bei 30 sind das also 435 Tests, ich vermute Du hast derzeit n² Tests = 900 - testest Du Div1 gegen Div2 und dann Div2 gegen Div1, oder gar Div1 gegen Div1?
    Die Kurve ist zwar immer noch eine Parabel, aber wesentlich flacher.
    Das kann man weiter optimieren, dadurch, dass man z.B. die Koordinaten aller benötigten Punkte nicht jedesmal neu berechnet (also die Punkte TopLeft und BottomRight). Dann gibt es Fälle, die schneller geprüft werden können, wie z.B. Bottom1 < Top2 oder Right1 < Left2. Solche Divs können nicht überlappen.

    Eine weitere Optimierungsmöglichkeit ist der Auslöser der Berechnung. Warum muss man denn immer alles neu berechnen? Reicht es nicht aus, nur das eine neue, auslösende Div gegen alle bestehenden zu testen? Dann hätten wir nur noch 29 Tests.
    Geändert von Albu (03-05-2007 um 13:39 Uhr)
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  5. #5
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Prüfen ob sich divs berühren.

    also ich hab das eben mal überprüft mit 30 Elementen, es geht hier mit einem 1GHz Rechner ohne grosse Verzögerungen.

  6. #6
    *chris ist offline Mitglied
    registriert
    25-06-2005
    Beiträge
    46

    AW: Prüfen ob sich divs berühren.

    ok jungs danke für eure tipps. ich hatte tatsächlich 900 tests. muss wohl davor mehr denken.

    ein schlauer, wie hast dus gemacht? gibtsn quelltext?

  7. #7
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Prüfen ob sich divs berühren.

    Ja, bei 900 wird's dann doch zäh, dann sidn die Optimierungen, die Albu Vorschlug, angesagt.

    Beispiel: http://home.arcor.de/struebig/test/ber%fchrung.html (mit 30 Elementen, die sich alle Draggen lassen, der Test prüft aber nur, ob ein Element berührt wird, bei mehreren muss die Logik geändert werden)

  8. #8
    *chris ist offline Mitglied
    registriert
    25-06-2005
    Beiträge
    46

    AW: Prüfen ob sich divs berühren.

    sieht gut aus, werd ich nach der uni mal ausführlich betrachten-

  9. #9
    Avatar von afoeder
    afoeder ist offline Routinier
    registriert
    10-08-2000
    Ort
    Winnenden, BW
    Beiträge
    361

    AW: Prüfen ob sich divs berühren.

    ...ich weiß nicht wie ihr's macht, aber rein gefühlsmäßig würde ich auch alle Positionswerte in einem Array speichern und damit arbeiten; ich könnte mir vorstellen dass das schneller ist als die Objektpositionen jedesmal per DOM anzusprechen.

    Aber das ist schon Core-Geschwindigkeitsoptimierung, tatsächlich wäre erstmal an der Reihe, prinzipielle Unmöglichkeiten auszuschließen usw; wie Albu eben geschrieben hat.
    Is this the potato farm?
    - Yes, I'm Albert Potato.

  10. #10
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Prüfen ob sich divs berühren.

    Naja, ob du obj.offsetLeft oder obj.left abfragst macht wohl keinen Unterschied, oder wie fragst du die Position über DOM ab?

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 05-09-2006, 08:34
  2. Andere div's als das gewählte verstecken?
    Von badbandit im Forum JavaScript
    Antworten: 15
    Letzter Beitrag: 02-05-2006, 13:55
  3. Antworten: 5
    Letzter Beitrag: 14-04-2005, 19:23
  4. Antworten: 3
    Letzter Beitrag: 06-04-2005, 21:49
  5. divs nebeneinander alle 100% Höhe
    Von bine im Forum CSS und (X)HTML
    Antworten: 15
    Letzter Beitrag: 30-08-2004, 16:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •