php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-03-2010, 04:09
hexfiles
 Registrierter Benutzer
Links : Onlinestatus : hexfiles ist offline
Registriert seit: Mar 2010
Beiträge: 3
hexfiles befindet sich auf einem aufstrebenden Ast
Standard dynamisches grid innerhalb einer vordefinierten Fläche erstellen

Hallo zusammen.

ich möchte auf einer unbestimmt großen Fläche eine unbestimmte Anzahl DIV-Container "automatisch und sinnvoll" platzieren.

Sagen wir also, ich habe eine Fläche von 800 x 600 pixel und ich will 32 Felder haben ... dann soll sich das etwa so anordnen, wie im Anhang dargestellt. Von den Ecken her zur Mitte die Fläche systematisch auffüllen.

Es soll dabei egal sein, ob es 18, 23 oder 54 Felder sind.

Ich bräuchte da mal einen Denkanstoß, wie ich da ansetze.
Letztlich muss ich hier irgendwie überschneidungen und antikollission berücksichtigen. Darin bin ich allerdings nicht wirklich firm.

Gruß Mike
Miniaturansicht angehängter Grafiken
dynamisches grid innerhalb einer vordefinierten Fläche erstellen-beispiel.gif  
Mit Zitat antworten
  #2 (permalink)  
Alt 31-03-2010, 10:40
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

*move* nach Brainstorming, da hier kein konkretes PHP-Problem erkennbar ist.

Folgende Fragen solltest du dir stellen:

Wie soll das Grid aussehen? So?
Code:
*  *  *  *

*  *  *  *

*  *  *  *
Oder eher so?
Code:
*   *   *   *

  *   *   *   *

*   *   *   *

  *   *   *   *
Oder unregelmäßig verteilt, wie in deinem Beispiel?

Sind die einzelnen Objekte (div-Elemente) rechtwinklig oder wie in deiner Grafik anders geformt, so dass das Bounding Rectangle nicht unbedingt die Kollisionskanten darstellt?

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (31-03-2010 um 10:43 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 31-03-2010, 10:57
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Sind die einzelnen Objekte (div-Elemente) rechtwinklig oder wie in deiner Grafik anders geformt...
Das hab ich mich auch grad gefragt. Da in dem Fall aber von divs die Rede ist kommt aber wohl eh nur rechtwinklig in Frage.

Was noch offen ist - sollen die divs sich automatisch gleichmässig über die gegebene Fläche verteilen, oder sind die Maße je div einzeln definiert und ggf. unterschiedlich?

EDIT:
weiterhin stellt sich die Frage, ob in der gegebenen Fläche Leerräume verbleiben dürfen oder ob eine komplette Befüllung gefordert ist. Je nachdem musst du schon einmal bei bestimmten Feldanzahlen (zumindest schonmal bei Primzahlen - 23 wär z.B. schonmal eine. Ob noch andere Sonderfälle auftauchen können weiß ich grad nicht) aufpassen wie du damit verfährst - soll alles gefüllt werden und alle Felder gleich groß werden, wäre für Primzahlen als Feldanzahl schonmal nur eine Zeile möglich usw...

Nochmal EDIT:
Weil wir grad bei Primzahlen sind - die Zerlegung der geforderten Feldanzahl in ihre Primfaktoren wäre z.b. ein Weg um eine möglichst gutes Verhältnis aus Zeilen und Spalten zu ermitteln, solange die Grundfläche nicht ein extremes Hoch- oder Querformat ist.
Guck dir dazu mal folgende Seite an: http://www.arndt-bruenner.de/mathe/s...primzahlen.htm
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

Geändert von Quetschi (31-03-2010 um 11:31 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 31-03-2010, 16:25
hexfiles
 Registrierter Benutzer
Links : Onlinestatus : hexfiles ist offline
Registriert seit: Mar 2010
Beiträge: 3
hexfiles befindet sich auf einem aufstrebenden Ast
Standard

Die Felder sollen schon rechteckig sein. Zu komplex will ich das gar nicht werden lassen.
Sie sind auch alle gleich groß und grundsätlich dürfen Plätze frei bleiben, ja.

Die Frage nach den Primzahlen hat mich der Lösung an sich schon etwas näher gebracht, denn beim händischen Experimentieren sind mir schon die logischen Muster aufgefallen, in denen ich hochzählen muss.

Dieses feldlinienartige Auffüllen möchte ich schon beibehalten, um eine optische unregelmäßigkeit zu simulieren.

Mein Ansatz ist der, die Anzahl dieser Feldlinien über die Diagonale in einer FOR-schleife hochlaufen zu lassen und die Anzahl der Schnittpunkte zu berechnen.
Ist die zu klein, mache ich weiter, bis ich ausreichend Schnittpunkte habe.

Im ersten Schritt ermittle ich dann die, die diagonal größte Distanz zu einander haben.
Das wären dann die 4 Ecken.
- Ausnahme (bei ungrader Anzahl Schnittpunkte und ungrader Anzahl Container und ungrader Anzahl Feldlinien beginne ich im Zentrum)

Hier muss ich dann die Anzahl Schnittpunkte mit identischer Distanz ermitteln und das mit der Restmenge gegenhalten. Ist die Restmenge größer oder gleich, befülle ich alle, sonst ..... *überleg* zufällig irgendwelche davon.

Wenn ich ohnehin schon die Distanz ermitteln muss, ist die Form des Inhalts ja eher irrelevat, denn an diesem Punkt muss ich ja prüfen, ob die Distanz ausreichend ist, um überlagerungen zu vermeiden.
(entstehen Überlagerungen, kann ichdavon ausgehen, das keine der Flächen ehr passen wird, ergo zurück auf Anfang und eine Feldlinie mehr probieren - grid verfeinern)

Hab ich also die Schnittpunkte belegt, die die höchste Distanz hatten und ich hab noch freie Schnittpunkte, beginne ich erneut, die mit der höchsten Distanz zu ermitteln. So lange, bis alle Container platziert sind.

Das würde demnach bedeuten, ich kann auch mit unterschiedlich großen Flächen Arbeiten, muss mir nur die Dimensionen merken und vorzugsweise mit der größen Fläche absteigend beginnen und die Dimensionen bei der Berechnung der Distanz zueinander berüchsichtigen.

Bis dahin gaube ich, bin ich auf einem machbaren Weg.
Ich bin hier weiterführend auf das Thema backtracking gestoßen ... das spiegelt meine obige Ausführung recht einfach und genau wieder.
Zitat:
Funktion FindeLoesung (Stufe, Vektor)
1. wiederhole, solange es noch neue Teil-Lösungsschritte gibt:
a) wähle einen neuen Teil-Lösungsschritt;
b) falls Wahl gültig ist:
I) erweitere Vektor um Wahl;
II) falls Vektor vollständig ist, return true; // Lösung gefunden!
sonst:
falls (FindeLoesung(Stufe+1, Vektor)) return true; // Lösung!
sonst mache Wahl rückgängig; // Sackgasse (Backtracking)!
2. Da es keinen neuen Teil-Lösungsschritt gibt: return false // Keine Lösung!
Bis hierhin erstmal Danke. Eure Posts haben mir hier eine Richtung gezeigt.

Womit ich jetzt noch ein Problem habe, ist die Krümmung der Feldlinien:
Optisch betrachtet wären die äußeren Punkte selbst quasi ein Kreis und zum Zentrum hin ende ich in der Tangente dazu.
Ich nehme an, hier kommen Formeln aus der Gravitationslehre zum tragen.

2 Varianten der Verteilung dieser Linien fallen mir hierzu ein.
# Schnittpunkte mit gleichmäßigen Abständen auf der Diagonalen durchs Zentrum der Fläche oder
# Schnittpunkte mit gleichmäßigen Abständen auf den Seiten a und b der Gesamtfläche

Was von beidem sinvoller ist, weiß ich noch nicht ... aber was die Berechnung der Kurven selbst und deren Schnittpunkte angeht, steh ich noch am Anfang meines Lateins.

Hilfe nehme ich gern entgegen.

Edit:
Nochmal ein Beispiel in den Anhang eingefügt.
Miniaturansicht angehängter Grafiken
dynamisches grid innerhalb einer vordefinierten Fläche erstellen-beispiel.gif  

Geändert von hexfiles (31-03-2010 um 16:35 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 01-04-2010, 11:48
hexfiles
 Registrierter Benutzer
Links : Onlinestatus : hexfiles ist offline
Registriert seit: Mar 2010
Beiträge: 3
hexfiles befindet sich auf einem aufstrebenden Ast
Standard

Mein Problem scheint einfacher zu sein, als angenommen.
*Kopf trifft Tisch & critical hit +100 pts*

Da meine Arbeitsfläche gestaucht ist, nahm ich irrtümlich an, die Diagonalen seien durch die Skalierung anders als Tangenten und die Bögen seien anders als Kreise zu behandeln.

Verbindet man die Schnittpunkte der Bögen auf den Seiten der Arbeitsfläche mit dem der diagonalen abgewandten Eckpunkt, erhält man weitere Tangenten.
Durch einfache Anwendung der trigonometrischen Funktionen lassen sich mittels der Diagonalen durch die Eckpunkte der Arbeitsfläche und der Hilfs-Tangenten die Radien der Kreislinien herleiten und schon hab ich auch meine Krümmung.

Abhängig davon, ob ich die Diagonale gleichmäßig aufteile oder wie in der Abbildung die Aussenseite, muss ich nur noch Hypotenuse und Ankathede richtig einsetzen.

Hab ich die Schnittpunkte, die ich brauche, muss ich das nur noch per Dreisatz auf höhe und breite der Fläche skalieren und schon stimmen meine Koordinaten

Bitte Thema schliessen, da Lösung erkannt.
Miniaturansicht angehängter Grafiken
dynamisches grid innerhalb einer vordefinierten Fläche erstellen-loesung.jpg  

Geändert von hexfiles (01-04-2010 um 11:54 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
dynamisches assoziates array erstellen Kropff PHP Developer Forum 11 02-12-2006 21:19
GBlib Bilder auf einer Fläche verteilen und Lücken mit kleinen Bildern schließen thebrain BRAINSTORMING PHP/SQL/HTML/JS/CSS 17 08-11-2005 20:01
[GRID] (Internet2) Geschwindigkeitsrekord aufgestellt Abraxax News / Kostenloses 2 22-04-2004 20:18
Dynamisches Inhaltsverzeichniss erstellen reaVen PHP Developer Forum 7 04-08-2003 13:00
Brauche Script, das mir einen vordefinierten Inhalt in einer neue Datei schreibt RookieXL2 PHP Developer Forum 20 25-06-2003 20:45

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:30 Uhr.