<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Quadtrees - Nachbarn der einzelnen Zellen ermitteln?]]></title><description><![CDATA[<p>Ich bin dabei, ein Programm zu schreiben, das eine quadratische Fläche in Flächen verschiedener Form unterteilt. Das wird dadurch erreicht, dass die quadratische fläche gleichmäßig gevierteilt wird, die unterflächen bei bedarf wieder usw.<br />
Das sieht dann in etwa so aus:<br />
<a href="http://www.derpumu.de/quadtree/htmltest.html" rel="nofollow">http://www.derpumu.de/quadtree/htmltest.html</a></p>
<p>Das Konzept der quadtrees sieht bei mir etwa wie folgt aus:</p>
<pre><code class="language-cpp">class QuadTree
  {
  Quadtree* upper_left_child;
  Quadtree* upper_right_child;
  Quadtree* lower_left_child;
  Quadtree* lower_right_child;
  Quadtree* parent;

  int up, down, left, right; //die Koordinaten, die das Quadrat abdeckt;
  Datastruct data;  //Die eigentlichen Daten, z.B. Farbe einer gefärbten Fläche etc.
  }
</code></pre>
<p>Wenn ein Quadrat also unterteilt wird, werden vier kleinere Quadrate mit jeweils halb so großer Kantenlänge &quot;eingehängt&quot;</p>
<p>jetzt möchte ich informationen über die Nachbarn der einzelnen Quadrate speichern können, um von einem Quadrat ausgehend, die Nachbarquadrate mit Informationen zu &quot;flooden&quot;.<br />
Hat jemand ne Idee wie man das veranstalten könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117319/quadtrees-nachbarn-der-einzelnen-zellen-ermitteln</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 23:57:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117319.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Aug 2005 13:20:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Fri, 05 Aug 2005 13:20:25 GMT]]></title><description><![CDATA[<p>Ich bin dabei, ein Programm zu schreiben, das eine quadratische Fläche in Flächen verschiedener Form unterteilt. Das wird dadurch erreicht, dass die quadratische fläche gleichmäßig gevierteilt wird, die unterflächen bei bedarf wieder usw.<br />
Das sieht dann in etwa so aus:<br />
<a href="http://www.derpumu.de/quadtree/htmltest.html" rel="nofollow">http://www.derpumu.de/quadtree/htmltest.html</a></p>
<p>Das Konzept der quadtrees sieht bei mir etwa wie folgt aus:</p>
<pre><code class="language-cpp">class QuadTree
  {
  Quadtree* upper_left_child;
  Quadtree* upper_right_child;
  Quadtree* lower_left_child;
  Quadtree* lower_right_child;
  Quadtree* parent;

  int up, down, left, right; //die Koordinaten, die das Quadrat abdeckt;
  Datastruct data;  //Die eigentlichen Daten, z.B. Farbe einer gefärbten Fläche etc.
  }
</code></pre>
<p>Wenn ein Quadrat also unterteilt wird, werden vier kleinere Quadrate mit jeweils halb so großer Kantenlänge &quot;eingehängt&quot;</p>
<p>jetzt möchte ich informationen über die Nachbarn der einzelnen Quadrate speichern können, um von einem Quadrat ausgehend, die Nachbarquadrate mit Informationen zu &quot;flooden&quot;.<br />
Hat jemand ne Idee wie man das veranstalten könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846542</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 05 Aug 2005 13:20:25 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 16:41:53 GMT]]></title><description><![CDATA[<p>*push*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847068</guid><dc:creator><![CDATA[pumu @ uni]]></dc:creator><pubDate>Sat, 06 Aug 2005 16:41:53 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 17:20:49 GMT]]></title><description><![CDATA[<p>ich weiß zwar nicht, was das auf der hp darstellen soll und ich weiß auch nicht was du mit informationen &quot;flooden&quot; meinst, aber wenn du einfach ab nem knoten eine information für alle knoten des entsprechenden teilbaums setzen willst, machs doch einfach so:</p>
<pre><code class="language-cpp">//pseudocode
void setColor(Color color)
{
   data.color = color;
   foreach children as child
   {
     if(child != NULL)
       child-&gt;setColor(color);
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/847086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847086</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Sat, 06 Aug 2005 17:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 20:04:57 GMT]]></title><description><![CDATA[<p>das auf der HP ist die unterteilung eines quadrates in kleinere quadrate wie oben beschrieben, um die dargestellte blaue Fläche (schwarz umrandet) mit den entsprechenden Quadraten darzustellen.<br />
Und wie schon oben gesagt möchte ich die jeweiligen Nachbarn (auf der Fläche) der einzelnen quadrate erreichen können.<br />
Die Fläche soll folgendermaßen erzeugt werden:<br />
- ich habe als Daten einen (oder mehrere) Polygonzüge (listen von x/y-koordinatenpaaren), die die Umrandung der blauen Fläche bezeichnen.<br />
- diese Polygonzüge werden bei Bedarf um Zwischenpunkte ergänzt, also die Auflösung erhöht bzw. die Abstände zwischen den Punkten so verringert, dass die schwarze Umrandung lückenlos erstellt werden kann.<br />
- wenn das getan ist, müssen &quot;nur noch&quot; die Quadrate innerhalb und außerhalb der Umrandung mit der entsprechenden Farbinformation gefüllt werden. Das geht, wie klar ersichtlich ist, nicht einfach indem man einen gewissen Unterbaum rekursiv abgrast. Deshalb wollte ich einen Weg finden, indem ich von einem einzelnen Quadrat ausgehend immer weiter die Nachbarn erreiche und einfärbe. Die schwarzen quadrate stellen dabei sozusagen eine &quot;mauer&quot; dar, da sie nicht weiter eingefärbt werden. Ich hab das flooden genannt, weil derartige Mechanismen (z.B. bei M$-Paint der Farbeimer) auch oft &quot;flood-fill&quot; genannt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847164</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 06 Aug 2005 20:04:57 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 20:44:51 GMT]]></title><description><![CDATA[<p>also bei mir sieht das so aus:<br />
<a href="http://img287.imageshack.us/img287/276/forum9jy.jpg" rel="nofollow">http://img287.imageshack.us/img287/276/forum9jy.jpg</a><br />
und ich verstehe immernoch nicht, was das darstellen soll &gt;_&lt;</p>
<p>wenn es nur darum geht einen nachbarn im quadtree zu bestimmen, könntest du es z.b. so machen (ungetestet):</p>
<pre><code class="language-cpp">QuadTree* searchUpperNode()
{
  //sucht nach node, die den pixel oberhalb vom jetzigen blatt enthält
  return searchUpperNode(this-&gt;up-1, this-&gt;left);
}

QuadTree* searchUpperNode(int x, int y)
{
  if(this-&gt;up &gt; y)
  {
     //liegt drunter also nächst größeres quad fragen
     if(this-&gt;parent != NULL)
         return searchUpperNode(x,y); 
     return NULL; //not found       
  }

  //quad enthält koordinaten nun einfach richtige kind suchen
  if(this-&gt;hasChildren())
  {
     //gucken welches child koordinaten enthält
     //dann für dieses kind wieder searchUpperNode aufrufen (oder andere funktion ohne up &gt; y zeugs)  
  }

  //keine kinder dann isses der nachbar
  return this;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/847172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847172</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Sat, 06 Aug 2005 20:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 20:54:40 GMT]]></title><description><![CDATA[<p>life schrieb:</p>
<blockquote>
<p>also bei mir sieht das so aus:<br />
<a href="http://img287.imageshack.us/img287/276/forum9jy.jpg" rel="nofollow">http://img287.imageshack.us/img287/276/forum9jy.jpg</a><br />
und ich verstehe immernoch nicht, was das darstellen soll &gt;_&lt;</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Sieht bei mir ganz anders aus:<br />
Versuchs mal so:: <a href="http://www.derpumu.de/quadtree/s8.gif" rel="nofollow">http://www.derpumu.de/quadtree/s8.gif</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/847190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847190</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 06 Aug 2005 20:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 21:40:30 GMT]]></title><description><![CDATA[<p>probierts mal mitm firefox der zeigts korrekt an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847207</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 06 Aug 2005 21:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 22:28:13 GMT]]></title><description><![CDATA[<p>es sollte eigentlich so aussehen: <a href="http://www.derpumu.de/quadtree/quadtree.gif" rel="nofollow">http://www.derpumu.de/quadtree/quadtree.gif</a></p>
<p>Ich hatte überlegt, so ne Art &quot;Klammer&quot; einzuführen: wenn ein Quadtree unterteilt wird, dann wird so eine klammer zwischen je zwei benachbarten Quadraten eingefügt, die die Verlinkung in beiden Richtungen im Kopf hat. (<a href="http://www.derpumu.de/quadtree/cramps.gif" rel="nofollow">http://www.derpumu.de/quadtree/cramps.gif</a> rechts oben)<br />
Wenn das Quadrat am Ende einer Klammer unterteilt wird, wird auch das Ende der Klammer dort geteilt (links unten). Das kann auch mehrmals passieren (rechts unten, oberer Teil).<br />
Wird das Quadrat am anderen Ende der Klammer auch geteilt, dann wird die Klammer in zwe Hälften geteilt.... (rechts unten)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847214</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 06 Aug 2005 22:28:13 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 22:04:28 GMT]]></title><description><![CDATA[<p>Uups falscher Link sieht bei mir natürlich wie bei pumuckl aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/847219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847219</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 06 Aug 2005 22:04:28 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 22:51:04 GMT]]></title><description><![CDATA[<p>dann mach das doch so.. eine wirklich einfache möglichkeit den nachbarn zur laufzeit zu bestimmen gibt es imho nicht. Also wirste wohl nicht drum herumkommen, dir die nachbarn schon beim aufbaun zu merken, wenn du die quadtree struktur beibehalten willst..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847238</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Sat, 06 Aug 2005 22:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 23:00:10 GMT]]></title><description><![CDATA[<p>eine sparsamere Möglichkeit hab ich bisher auch nicht gefunden. Und den quadtree will ich beibehalten, zumal dadurch die Ausgabe in HTML-code ziemlich simpel wird: eine 2x2-Tabelle, wenn das Element Kinder hat, und ein Bild, wenns keine Kinder hat...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847244</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 06 Aug 2005 23:00:10 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 23:09:44 GMT]]></title><description><![CDATA[<p>ja, die ausgabe scheint ja schon sehr gut zu klappen .. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>bei den speichern der nachbarn sollteste dir aber vielleicht überlegen, ob du wirklich immer ALLE nachbarn kennen musst, oder ob es nicht reicht EINEN nachbarn in die jeweilige richtung zu kennen .. :&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847245</guid><dc:creator><![CDATA[life]]></dc:creator><pubDate>Sat, 06 Aug 2005 23:09:44 GMT</pubDate></item><item><title><![CDATA[Reply to Quadtrees - Nachbarn der einzelnen Zellen ermitteln? on Sat, 06 Aug 2005 23:22:30 GMT]]></title><description><![CDATA[<p>naja, die &quot;ausgabe&quot; auf der seite ist per Hand zusammengefrickelt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> das waren anderthalb stunden copy&amp;paste *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847247</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 06 Aug 2005 23:22:30 GMT</pubDate></item></channel></rss>