<?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[Ansatz gesucht]]></title><description><![CDATA[<p>Ich habe ein Bild in das geklickt wird. Ab diesem Pixel möchte ich die Datenbank abfragen ob es an dieser Stelle eine Koordinate hinterlegt ist. Wenn keine Koordinate gefunden wird, soll sich der Algorithmus mit ständig steigendem Radius den <strong>ersten nächst gelegenen Pixel</strong> finden an dem die Datenbank etwas zurück gibt. Am besten so:</p>
<p>Geklickt wird bei Null, geschlängelt wird im oder gegen den Uhrzeigersinn, Hauptsache es geht aus der Mitte heraus.</p>
<pre><code>20 21 22 23 24
19  6  7  8  9
18  5  0  1 10
17  4  3  2 11
16 15 14 13 12
</code></pre>
<p>Ich habe einige raumfüllende Kurven wie z. B. Peano-Kurve gefunden, die jedoch meistens oben Links beginnen. Vielleicht kennt jemand so etwas und kann mir da einen Tipp geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273901/ansatz-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 21:45:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273901.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Sep 2010 10:19:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:19:38 GMT]]></title><description><![CDATA[<p>Ich habe ein Bild in das geklickt wird. Ab diesem Pixel möchte ich die Datenbank abfragen ob es an dieser Stelle eine Koordinate hinterlegt ist. Wenn keine Koordinate gefunden wird, soll sich der Algorithmus mit ständig steigendem Radius den <strong>ersten nächst gelegenen Pixel</strong> finden an dem die Datenbank etwas zurück gibt. Am besten so:</p>
<p>Geklickt wird bei Null, geschlängelt wird im oder gegen den Uhrzeigersinn, Hauptsache es geht aus der Mitte heraus.</p>
<pre><code>20 21 22 23 24
19  6  7  8  9
18  5  0  1 10
17  4  3  2 11
16 15 14 13 12
</code></pre>
<p>Ich habe einige raumfüllende Kurven wie z. B. Peano-Kurve gefunden, die jedoch meistens oben Links beginnen. Vielleicht kennt jemand so etwas und kann mir da einen Tipp geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952865</guid><dc:creator><![CDATA[ansatz_]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:19:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:27:41 GMT]]></title><description><![CDATA[<p>Berechne doch einfach des Punktes zu allen Pixeln in der Datenbank. Dauert O(n) und wenn du eine geeignete Ordnung definiert hast, dann nur O(log n ). Quadtrees etc. sind ein guter Ansatzpunkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952868</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:27:41 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:31:25 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Berechne doch einfach des Punktes zu allen Pixeln in der Datenbank.</p>
</blockquote>
<p>Da fehlt noch ein &quot;Abstand&quot;, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952869</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:32:45 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Berechne doch einfach des Punktes zu allen Pixeln in der Datenbank.</p>
</blockquote>
<p>Im Moment habe ich es tatsächlich so, dadurch stockt das Programm eine Weile. Es ist ein Raster von 18000x9000. Daher wollte ich es optimieren</p>
<p>knivil schrieb:</p>
<blockquote>
<p>Dauert O(n) und wenn du eine geeignete Ordnung definiert hast, dann nur O(log n ). Quadtrees etc. sind ein guter Ansatzpunkt.</p>
</blockquote>
<p>Die Daten haben kaum Lücken, so dass Quad Trees wohl nicht viel bringen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952870</guid><dc:creator><![CDATA[ansatz_]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:32:45 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:34:30 GMT]]></title><description><![CDATA[<p>ProgChild schrieb:</p>
<blockquote>
<p>knivil schrieb:</p>
<blockquote>
<p>Berechne doch einfach des Punktes zu allen Pixeln in der Datenbank.</p>
</blockquote>
<p>Da fehlt noch ein &quot;Abstand&quot;, oder?</p>
</blockquote>
<p>Ist mir gar nicht aufgefallen <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="🙂"
    /> Jedenfalls gehe ich in meinem Beitrag auch davon aus, dass dort &quot;Abstand&quot; stehen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952872</guid><dc:creator><![CDATA[ansatz_]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:41:52 GMT]]></title><description><![CDATA[<p>Was spricht denn gegen diese Schlängelkurve die du schon hast? Das kommt mir wie ein ziemlich guter Ansatz vor. Wenn die Daten so dicht liegen, dann dürfte die doch auch ziemlich schnell auf einen Punkt treffen. Danach noch ein bisschen weitersuchen auf allen Pixeln die noch fehlen mit dem gleichen Abstand oder weniger wie der gefundene Punkt und du hast dein Ergebnis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952879</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:41:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:43:21 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Was spricht denn gegen diese Schlängelkurve die du schon hast? Das kommt mir wie ein ziemlich guter Ansatz vor. Wenn die Daten so dicht liegen, dann dürfte die doch auch ziemlich schnell auf einen Punkt treffen. Danach noch ein bisschen weitersuchen auf allen Pixeln die noch fehlen mit dem gleichen Abstand oder weniger wie der gefundene Punkt und du hast dein Ergebnis.</p>
</blockquote>
<p>Ich ging eigentlich ganz fest davon aus, dass so etwas bereits irgendwo implementiert ist und wollte mich daher umfragen bevor ich mit eigenem bescheidenen Ansatz anfange.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952880</guid><dc:creator><![CDATA[ansatz_]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 10:55:57 GMT]]></title><description><![CDATA[<p>ansatz_ schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Was spricht denn gegen diese Schlängelkurve die du schon hast? Das kommt mir wie ein ziemlich guter Ansatz vor. Wenn die Daten so dicht liegen, dann dürfte die doch auch ziemlich schnell auf einen Punkt treffen. Danach noch ein bisschen weitersuchen auf allen Pixeln die noch fehlen mit dem gleichen Abstand oder weniger wie der gefundene Punkt und du hast dein Ergebnis.</p>
</blockquote>
<p>Ich ging eigentlich ganz fest davon aus, dass so etwas bereits irgendwo implementiert ist und wollte mich daher umfragen bevor ich mit eigenem bescheidenen Ansatz anfange.</p>
</blockquote>
<p>Stimmt. <a href="http://stackoverflow.com/questions/307445/finding-closest-non-black-pixel-in-an-image-fast" rel="nofollow">Diese Leute hier</a> haben ein ähnliches Problem diskutiert und sind zu ähnlichen Ergebnissen gekommen. In dem Thread steht jedenfalls sehr viel relevantes, was ich jetzt aber nicht wiederholen möchte, weil es dort ja schon geschrieben ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952887</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 15 Sep 2010 10:55:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ansatz gesucht on Wed, 15 Sep 2010 11:00:28 GMT]]></title><description><![CDATA[<p>ansatz_ schrieb:</p>
<blockquote>
<p>Im Moment habe ich es tatsächlich so, dadurch stockt das Programm eine Weile. Es ist ein Raster von 18000x9000. Daher wollte ich es optimieren</p>
</blockquote>
<p>Du behandelst deine Datenbank so, als hätte eine Datenbank-Abfrage O(1)-Operationen. Davon kannst du aber nicht ausgehen. Wenn wir mal davon ausgehen, dass eine Datenbank-Abfrage einen Aufwand von O(n) hat (Je nach dem, wie sie geschrieben ist, kann es auch schneller oder langsamer gehen), dann kriegst du das mit deinem Ansatz nicht schneller.</p>
<p>ansatz_ schrieb:</p>
<blockquote>
<p>Die Daten haben kaum Lücken, so dass Quad Trees wohl nicht viel bringen werden.</p>
</blockquote>
<p>Das lässt sich aber Wunderbar ausnutzen. Wenn du weist, das der Abstand zu einem Punkt in der Datenbank maximal 10 Pixel beträgt, kannst du deine Datenbank vorbereiten.</p>
<p>Teile dein Bild in 10x10 Pixel große Blöcke auf. Und trage in der Datenbank die Zugehörigkeit der Pixel zu den Blöcken ein. Wenn auf einen Pixel geklickt wird, nimmst du den 10x10 Block, der zu diesem Pixel gehört und alle benachbarten und holst ihn dir aus der Datenbank. Und nur noch den Pixel, die in den Blöcken enthalten sind, berechnest du den Abstand.</p>
<p>Falls du das mit 10 Pixeln nicht genau weißt, kannst du auch mehrere Rasterstufen verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952892</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 15 Sep 2010 11:00:28 GMT</pubDate></item></channel></rss>