<?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[Wie soll ich das lösen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe von einem Kunden folgende Aufgabe bekommen:</p>
<pre><code>-Finden Sie auf diesem Bild die weißen Pixel, speichern Sie die Positionen (ist erledigt mit Maps)
-Nun teilen berechnen Sie die Strecke der weißen Pixel zu anderen weißen Pixel, fals Wert unter 30 ist, dann wird er nicht gespeichert
-Berechnen Sie den Winkel zwischen den Pixel die den Wert über 30 haben
</code></pre>
<p>Die erste Aufgabe hab ich erledigt mit CIMG. Die folgenden würd ich vom Mathematischen her auch lösen können, aber nicht vom C++-mäßigem her. Ich weiß einfach nicht wie ich den Wert der Strecke bei den Pixeln speichern soll, damit ich dann noch was anfangen kann.</p>
<p>Vielleicht kann mir einer von euch helfen.<br />
Danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/283194/wie-soll-ich-das-lösen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 18:15:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/283194.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Mar 2011 12:43:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 12:43:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe von einem Kunden folgende Aufgabe bekommen:</p>
<pre><code>-Finden Sie auf diesem Bild die weißen Pixel, speichern Sie die Positionen (ist erledigt mit Maps)
-Nun teilen berechnen Sie die Strecke der weißen Pixel zu anderen weißen Pixel, fals Wert unter 30 ist, dann wird er nicht gespeichert
-Berechnen Sie den Winkel zwischen den Pixel die den Wert über 30 haben
</code></pre>
<p>Die erste Aufgabe hab ich erledigt mit CIMG. Die folgenden würd ich vom Mathematischen her auch lösen können, aber nicht vom C++-mäßigem her. Ich weiß einfach nicht wie ich den Wert der Strecke bei den Pixeln speichern soll, damit ich dann noch was anfangen kann.</p>
<p>Vielleicht kann mir einer von euch helfen.<br />
Danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030758</guid><dc:creator><![CDATA[Krumbacher]]></dc:creator><pubDate>Mon, 07 Mar 2011 12:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 12:57:50 GMT]]></title><description><![CDATA[<p>Also ich bin nicht sicher, ob ich dein Problem verstanden habe.</p>
<p>Wenn Du die Pixel schon gespeichert hast, könntest Du denen IDs oder so geben. Dann kannst Du ne struct bilden, die halt so aussieht:</p>
<pre><code class="language-cpp">struct PathInformation
{
std::size_t idPixel1;
std::size_t idPixel2;
unsigned int distance;
unsigned int angle;
};
</code></pre>
<p>oder so. Die einzelnen Pixel hättest Du ja vorher in einem vector via:</p>
<pre><code class="language-cpp">struct Pixel
{
unsigned int x;
unsigned int y;
};

typedef std::vector&lt;Pixel&gt; PixelVector;
</code></pre>
<p>speichern können. Und als IDs oben kannst Du dann z.B. die Indizes nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030768</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 07 Mar 2011 12:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 13:08:44 GMT]]></title><description><![CDATA[<p>Krumbacher schrieb:</p>
<blockquote>
<pre><code>-Finden Sie auf diesem Bild die weißen Pixel, speichern Sie die Positionen (ist erledigt mit Maps)
-Nun teilen berechnen Sie die Strecke der weißen Pixel zu anderen weißen Pixel, fals Wert unter 30 ist, dann wird er nicht gespeichert
-Berechnen Sie den Winkel zwischen den Pixel die den Wert über 30 haben
</code></pre>
</blockquote>
<p>also für mich ist grade die zweite aufgabe kein korrekter deutscher satz<br />
und da versthe ich die aufgabe nicht...</p>
<p>man soll die entfernung aller weissen pixel zueinander berechnen?<br />
(das wären doch sowas bei n! strecken dann?!)</p>
<p>und dann soll man diese ab einer gewissen länge auch speichern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030775</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 07 Mar 2011 13:08:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 13:19:56 GMT]]></title><description><![CDATA[<p>und dann soll man den Winkel zwischen Pixeln berechnen, das versteh ich am allerwenigsten ...<br />
Aber der TE hatte ja mit dem rechnerischen Teil keine Probleme ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030779</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 07 Mar 2011 13:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 13:29:55 GMT]]></title><description><![CDATA[<p>Da fehlt zunächst einmal die genaue Festlegung, was 'weiss' sein soll und mit welcher Farbtiefe das Bild vorliegt. Bereits bei mittleren Auflösungen geht die Anzahl der möglichen Strecken schnell ins uferlose oder erfordert gewaltig Rechenaufwand. Die Lösung erfordert nach dem Finden der weissen Punkte nur trigonometrische Funktionen zur Bestimmung der Abstände, der Winkel, und eine Sortierung nach Abständen.<br />
Lass den Kunden dafür bezahlen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030783</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Mon, 07 Mar 2011 13:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 13:32:50 GMT]]></title><description><![CDATA[<p>Alle diese Probleme hat TE bereits gelöst! Übrigens: Die Anzahl der möglichen Strecken hat nicht allein mit der Auflösung zu tun, sondern auch ganz entscheidend mit dem Bild. Vielleicht gibt es ja nur drei weiße Pixel? Auf jeden Fall ist die Frage doch eine andere ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030788</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 07 Mar 2011 13:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 14:15:27 GMT]]></title><description><![CDATA[<p>Schlecht aber funktioniert...</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;cmath&gt;

namespace math 
{
    const double PI(3.14159265);

    const double toDegree(const double radian) 
    { return radian * 180.0 / PI; }

    const double toRadian(const double degree) 
    { return degree * PI / 180.0; }
}; // math

class Pixel
{
public:
	Pixel(){}
	Pixel(int x, int y): x(x), y(y) {}

	friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; ostr, const Pixel&amp; p)
	{
		ostr &lt;&lt; p.x &lt;&lt; &quot; &quot; &lt;&lt; p.y &lt;&lt; &quot;\n&quot;;
		return ostr;
	}

	int GetX(){return x;}
	int GetY(){return y;}

private:
	int x;
	int y;
};

class PixelCombo
{
public:
	PixelCombo(const Pixel&amp; p1, const Pixel&amp; p2)
	{
		a = p1;
		b = p2;

		distanz = sqrt((double)((a.GetX() - b.GetX())*(a.GetX() - b.GetX())) + ((a.GetY() - b.GetY())*(a.GetY() - b.GetY())));

		if(distanz &gt; 30)
		{
			winkel = math::toDegree( std::atan((double)(a.GetY() - b.GetY()) / (a.GetX() - b.GetX())));
		}
		else
		{
			winkel = 0.0;
		}
	}

	friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; ostr, const PixelCombo&amp; p)
	{
		ostr &lt;&lt; &quot;Punkt 1: &quot; &lt;&lt; p.a &lt;&lt; &quot;Punkt 2: &quot; &lt;&lt; p.b &lt;&lt; &quot;Distanz: &quot; &lt;&lt; p.distanz &lt;&lt; &quot;\nWinkel: &quot; &lt;&lt; p.winkel &lt;&lt; &quot;\n\n&quot;;

		return ostr;
	}

private:
	Pixel a;
	Pixel b;
	double distanz;
	double winkel;
};

typedef std::vector&lt;Pixel&gt; PixelVector;
typedef std::vector&lt;PixelCombo&gt; ComboVector;

int main()		
{ 
	PixelVector pvec;
	ComboVector cvec;

	pvec.push_back(Pixel(5, 10));
	pvec.push_back(Pixel(7, 10));
	pvec.push_back(Pixel(8, 3));
	pvec.push_back(Pixel(8, 40));

	for(PixelVector::iterator i = pvec.begin(); i != pvec.end() - 1; ++i)
		for(PixelVector::iterator y = i + 1; y != pvec.end(); ++y)
			cvec.push_back(PixelCombo(*i, *y));

	for(ComboVector::iterator i = cvec.begin(); i != cvec.end(); ++i)
		std::cout &lt;&lt; *i;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2030809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030809</guid><dc:creator><![CDATA[AlsGrobeIdee]]></dc:creator><pubDate>Mon, 07 Mar 2011 14:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 16:40:06 GMT]]></title><description><![CDATA[<p>Vielen Dank!<br />
Ich musste auch schmunzeln als ich diesen Auftrag bekommen hab. Hab zuerst gar nicht gewusst was der Kunde von mir wollte <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>Eine Frage noch: Was ist am Codebeispiel von &quot;AlsGrobeIdee&quot; so schlecht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030878</guid><dc:creator><![CDATA[Krumbacher]]></dc:creator><pubDate>Mon, 07 Mar 2011 16:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Mon, 07 Mar 2011 17:44:51 GMT]]></title><description><![CDATA[<p>Naja, 100 * 100 weiße Pixel sprengen jedenfalls meinen Ram.</p>
<pre><code class="language-cpp">for(int x = 0; x &lt; 100; ++x)
	for(int y = 0; y &lt; 100; ++y)
		pvec.push_back(Pixel(x, y));
</code></pre>
<p>Mal abgesehen davon dass man Zeile 39 - 42 abkürzen kann und Zeile 19 entfernen sollte. Zeile 48 ist alles andere als sicher (Teilen durch 0).</p>
<p>Mal ganz beiseite gelassen, dass die Punkte permanent kopiert werden...</p>
<p>Es war auch nur als kurz niedergeschriebenes Beispiel gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030905</guid><dc:creator><![CDATA[AlsGrobeIdee]]></dc:creator><pubDate>Mon, 07 Mar 2011 17:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Wed, 09 Mar 2011 12:12:26 GMT]]></title><description><![CDATA[<p>AlsGrobeIdee schrieb:</p>
<blockquote>
<p>Naja, 100 * 100 weiße Pixel sprengen jedenfalls meinen Ram.</p>
</blockquote>
<p>Was sind schon 100 x 100 Punkte? Es können doch auch viel mehr sein. 'Mach das' sagt der Kunde und man steht schnell auf dem Schlauch! <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="😃"
    /> Im Ram macht man das sinnvollerweise nicht. Mit einer zu sortierenden Datei ist das aber jederzeit machbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2031726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2031726</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Wed, 09 Mar 2011 12:12:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Wed, 09 Mar 2011 12:33:06 GMT]]></title><description><![CDATA[<p>AlsGrobeIdee schrieb:</p>
<blockquote>
<p>Naja, 100 * 100 weiße Pixel sprengen jedenfalls meinen Ram.</p>
<pre><code class="language-cpp">for(int x = 0; x &lt; 100; ++x)
	for(int y = 0; y &lt; 100; ++y)
		pvec.push_back(Pixel(x, y));
</code></pre>
<p>Mal abgesehen davon dass man Zeile 39 - 42 abkürzen kann und Zeile 19 entfernen sollte. Zeile 48 ist alles andere als sicher (Teilen durch 0).</p>
<p>Mal ganz beiseite gelassen, dass die Punkte permanent kopiert werden...</p>
<p>Es war auch nur als kurz niedergeschriebenes Beispiel gedacht.</p>
</blockquote>
<p>Hä? 10000 ist doch nix, was hast du für nen PC?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2031741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2031741</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Wed, 09 Mar 2011 12:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wie soll ich das lösen? on Wed, 09 Mar 2011 14:48:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Hä? 10000 ist doch nix, was hast du für nen PC?</p>
</blockquote>
<p>Bevor du sowas schreibst hättest du den Programmabsturz gut und gerne in deinem Taskmanager mitverfolgen können.</p>
<p>Edit: Was eine dämliche Rechnung meinerseits...</p>
<p>Ok nochmal:<br />
Summierung 10000 bis 1 entspricht ((10000 + 10000^2) / 2)<br />
Dadurch ergibt sich eine Speicheranforderung von ((10000 + 10000^2) / 2) * 32 Byte = 1,49 GB</p>
<p>Nicht gerade unbedeutend bei nur 10000 Pixel...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2031777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2031777</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 09 Mar 2011 14:48:55 GMT</pubDate></item></channel></rss>