Wohin würde ich gehen, um nach Algorithmen zu suchen, die ein 2-dimensionales Gitter mit Werten annehmen, die entweder 0 oder 1 sind und dann alle möglichen nicht überlappenden Rechtecke identifizieren?Wie teilt man einen Bereich aus kleinen Quadraten in größere Rechtecke auf?
In einer praktischen Erklärung: Ich zeichne ein Raster, das durch eine Anzahl von Quadraten dargestellt wird, und ich möchte einen Weg finden, so viele benachbarte Quadrate in Rechtecke wie möglich zu kombinieren, um die Zeit zu reduzieren verbringe es, durch jeden Platz zu radeln und ihn zu zeichnen.
Maximale Effizienz wird nicht benötigt, Geschwindigkeit ist wichtiger.
Nachtrag: Offensichtlich scheint das, was ich suche, eine Technik namens Tesselation zu sein. Jetzt muss ich nur eine gute Beschreibung für diesen speziellen Fall finden.
Addendum 2: Die Grenze der "1" Quadrate wird unregelmäßig sein und in einigen Fällen nicht einmal verbunden, da die Verteilung der "1" Quadrate völlig zufällig sein wird. Ich muss diese unregelmäßigen Formen identifizieren und in regelmäßige Rechtecke aufteilen.
Richtige Antwort: Um das beste Verhältnis zwischen Geschwindigkeit und Effizienz zu erzielen, ist es optimal, die Rasterdaten zum Füllen eines Quadbaums zu verwenden, wobei jeder Knoten einen Statuswert von leer/teilweise gefüllt/gefüllt hat.
„Maximale Effizienz nicht benötigt wird, ist die Geschwindigkeit wichtiger." - Hä? Ich nehme an, dass du meinst "Ich will nicht die absolute Mindestanzahl von Rechtecken, nur etwas, das eine gute Annäherung macht, schnell" ...? –
Oh, und haben Sie bewiesen, dass das Durchfahren jedes Platzes Ihr Leistungsengpass ist? –
Zur Annäherung, ja, das. Ich bin im Grunde auf der Suche nach der ausgewogensten Lösung, was Effektivität und Geschwindigkeit angeht. Ja, ich bin 100% sicher, dass das Radfahren der Flaschenhals ist, weil Perl viel langsamer ist als OpenGL selbst. – Mithaldu