<?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[kdbaum  -&amp;gt; Zerlegung einer Ebene in Rechteckflächen]]></title><description><![CDATA[<p>Ich habe eine Programmieraufgabe, in der ich mittels eines kd-Baums eine Fläche in Rechtecke zerlegen soll und bräuchte da etwas hilfe.</p>
<p>Zu Testzwecken habe ich einfach mal eine Baumstruktur wie hier:</p>
<p><a href="http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/node34.html" rel="nofollow">http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/node34.html</a></p>
<p>angelegt. Ich weiß, dass ich den Baum traversieren muss, um die Fläche zu zerteilen, daher habe ich eine ganz einfache preorder-Funktion angelegt:</p>
<pre><code class="language-cpp">void preorder(node *n)
{
    printf(&quot;\n%i %i &quot;, n-&gt;p.x, n-&gt;p.y);

    if (n-&gt;l !=z)
    {     
         preorder (n-&gt;l);
    }

    if (n-&gt;r !=z)
    {
         preorder (n-&gt;r);
    } 
}
</code></pre>
<p>Ich habe einer Header-Datei, mit deren Hilfe ich verschiedene Formen zeichnen kann (u.a. Rechtecke &quot;rectangle(top_x, top_y, bottom_x, bottom_y)&quot; oder Linien &quot;lineto(x1,y1,x2,y2)&quot;.</p>
<p>Wie zeichne ich nun passend zur Baumstruktur und deren Punkte die Rechtecke? Der Vaterknoten repräsentiert ein Rechteck, wobei der linke Sohn das untere oder linke Rechteck einer Unterteilung bildet (der oben oder rechts). Wie müsste die preorder-Funktion verändert werden?</p>
<p>Vielen Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271594/kdbaum-gt-zerlegung-einer-ebene-in-rechteckflächen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 10:21:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271594.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Jul 2010 14:05:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kdbaum  -&amp;gt; Zerlegung einer Ebene in Rechteckflächen on Sat, 31 Jul 2010 14:05:08 GMT]]></title><description><![CDATA[<p>Ich habe eine Programmieraufgabe, in der ich mittels eines kd-Baums eine Fläche in Rechtecke zerlegen soll und bräuchte da etwas hilfe.</p>
<p>Zu Testzwecken habe ich einfach mal eine Baumstruktur wie hier:</p>
<p><a href="http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/node34.html" rel="nofollow">http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/node34.html</a></p>
<p>angelegt. Ich weiß, dass ich den Baum traversieren muss, um die Fläche zu zerteilen, daher habe ich eine ganz einfache preorder-Funktion angelegt:</p>
<pre><code class="language-cpp">void preorder(node *n)
{
    printf(&quot;\n%i %i &quot;, n-&gt;p.x, n-&gt;p.y);

    if (n-&gt;l !=z)
    {     
         preorder (n-&gt;l);
    }

    if (n-&gt;r !=z)
    {
         preorder (n-&gt;r);
    } 
}
</code></pre>
<p>Ich habe einer Header-Datei, mit deren Hilfe ich verschiedene Formen zeichnen kann (u.a. Rechtecke &quot;rectangle(top_x, top_y, bottom_x, bottom_y)&quot; oder Linien &quot;lineto(x1,y1,x2,y2)&quot;.</p>
<p>Wie zeichne ich nun passend zur Baumstruktur und deren Punkte die Rechtecke? Der Vaterknoten repräsentiert ein Rechteck, wobei der linke Sohn das untere oder linke Rechteck einer Unterteilung bildet (der oben oder rechts). Wie müsste die preorder-Funktion verändert werden?</p>
<p>Vielen Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934421</guid><dc:creator><![CDATA[Shinzon]]></dc:creator><pubDate>Sat, 31 Jul 2010 14:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to kdbaum  -&amp;gt; Zerlegung einer Ebene in Rechteckflächen on Sun, 01 Aug 2010 19:07:41 GMT]]></title><description><![CDATA[<p>Niemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934836</guid><dc:creator><![CDATA[Shinzon]]></dc:creator><pubDate>Sun, 01 Aug 2010 19:07:41 GMT</pubDate></item><item><title><![CDATA[Reply to kdbaum  -&amp;gt; Zerlegung einer Ebene in Rechteckflächen on Sun, 01 Aug 2010 22:06:51 GMT]]></title><description><![CDATA[<blockquote>
<p>Der Vaterknoten repräsentiert ein Rechteck, wobei der linke Sohn das untere oder linke Rechteck einer Unterteilung bildet (der oben oder rechts). Wie müsste die preorder-Funktion verändert werden?</p>
</blockquote>
<p>mach nen bsp. - vll mit code-tags und mit paar strichen was malen und dann beschreiben - so versteh ich das gerade nicht, vll gehts den anderen da ja auch so...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934897</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 01 Aug 2010 22:06:51 GMT</pubDate></item><item><title><![CDATA[Reply to kdbaum  -&amp;gt; Zerlegung einer Ebene in Rechteckflächen on Mon, 02 Aug 2010 04:03:20 GMT]]></title><description><![CDATA[<p>Er will, dass du seine Programmieraufgabe machst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934929</guid><dc:creator><![CDATA[ich versteh es]]></dc:creator><pubDate>Mon, 02 Aug 2010 04:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to kdbaum  -&amp;gt; Zerlegung einer Ebene in Rechteckflächen on Mon, 02 Aug 2010 13:11:41 GMT]]></title><description><![CDATA[<p>Ok <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Also das ganze Thema basiert ja auf der orthogonalen Bereichssuche, nur das ich nicht wirklich suchen, sondern nur die Bereiche zeichnen möchte.</p>
<p>Ich habe folgende Baumstruktur erstellt und die Punkte wie in diesem Beispiel eingetragen:</p>
<p><a href="http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/Images/Ps/abb-5-3.gif" rel="nofollow">http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/Images/Ps/abb-5-3.gif</a></p>
<p>Mein Ziel ist nun, folgende grafische Ausgabe zu programmieren, wobei die Linien völlig ausreichend sind (also keine Achsen- bzw. Punktebezeichnungen):</p>
<p><a href="http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/Images/Ps/abb-5-2.gif" rel="nofollow">http://www-lehre.informatik.uni-osnabrueck.de/~dbs/2001/skript/Images/Ps/abb-5-2.gif</a></p>
<p>A ist hier die Wurzel. Wenn wir uns alle Punkte außer A wegdenken, teilt A die vorhandene Fläche (16 x 10) in zwei Teilrechtecke. Alle Punkte mit y &lt;= y von A befinden sich nun in dem unteren Rechteck (bzw. im linken Teilast von A), aller Punkte mit y &gt; y von A im oberen Rechteck (bzw. im rechten Teilast von A).</p>
<p>Ich habe vor, den Baum preorder zu traversieren, so dass als nächtstes Punkt B &quot;ausgegeben&quot; würde. Wir befinden uns also nun im unteren Rechteck bei Punkt B, wobei B nun selbiges tut und das untere Rechteck in 2 Teilrechtecke teilt, wobei hier nun alle Punkte mit x &lt;= x von B im linken Teilast, alle Punkte mit x &gt; x von B im rechten Teilast (bzw. im Rechteck, hier: 0 Punkte) liegen.</p>
<p>Der Baum wird nun also traversiert und es sollen immer fleißig Rechtecke gezeichnet werden. Ich tue mich aber gerade sehr schwer beim Ermitteln der Rechtecke bzw. bei deren Grenzen, da sie ja nicht überlappen dürfen bzw. nicht außerhalb des Rechtecks des Vaterknotens liegen dürfen.</p>
<p>Die &quot;nackte&quot; Preorder-Funktion habe ich ja oben bereits gezeigt, hier nochmal die Deklaration der Baumstruktur:</p>
<pre><code class="language-cpp">typedef struct node_
{
    point p;
    node_ *l, *r; // l = linker, r = rechter Sohn
}node;

node *z, *head, *n; // head -&gt; Wurzel
</code></pre>
<p>Wenn noch etwas unklar ist, bitte bescheid sagen. Ich wollte nicht mein ganzes Programm posten, da sonst bestimmt Verwirrung auftritt :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935155</guid><dc:creator><![CDATA[Shinzon]]></dc:creator><pubDate>Mon, 02 Aug 2010 13:11:41 GMT</pubDate></item></channel></rss>