<?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[Kreis berechnen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich siitze hier an einem ziemlich verzwickten Problem.</p>
<p>Ich brauche eine Funktion die mir die Koordinaten einzelner Punkte auf einem Kreis ausgibt.<br />
Aber nacheinander und in gleichbleibenden zeitlichen Abständen.</p>
<p>Soweit bin ich im Moment:</p>
<pre><code class="language-cpp">// fd - globale Variable zum 
// vzw - Vorzeichenwechsel, siehe: y = +- Wurzel (r²-x²) 

	if (fd+1 &gt; r || fd-1 &lt;= -r) vzw *= -1;
	int x, y;

	if (vzw &lt; 0) x = fd--;
	else x = fd++;

	//Memo1-&gt;Lines-&gt;Add(IntToStr((int)fd));

	y=sqrt(pow(r,2)-pow(x,2))*vzw;
	PaintBox1-&gt;Canvas-&gt;LineTo(250+x,250+y);
</code></pre>
<p>Damit läuft es auch schon fast wie gewünscht.<br />
Allerdings werden die Abstände am rechten, bzw. linken Rand des Kreises immer größer und genau das möchte ich vermeiden.</p>
<p>Zur Veranscheulichung hier das kompilierte Programm: <a href="http://www.file-upload.net/download-2421030/Project1.exe.html" rel="nofollow">http://www.file-upload.net/download-2421030/Project1.exe.html</a><br />
(Auf das Forumular klicken um die Animation zu starten)</p>
<p>Ich hoffe jemand kann mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264559/kreis-berechnen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 15:37:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264559.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Apr 2010 10:53:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 10:53:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich siitze hier an einem ziemlich verzwickten Problem.</p>
<p>Ich brauche eine Funktion die mir die Koordinaten einzelner Punkte auf einem Kreis ausgibt.<br />
Aber nacheinander und in gleichbleibenden zeitlichen Abständen.</p>
<p>Soweit bin ich im Moment:</p>
<pre><code class="language-cpp">// fd - globale Variable zum 
// vzw - Vorzeichenwechsel, siehe: y = +- Wurzel (r²-x²) 

	if (fd+1 &gt; r || fd-1 &lt;= -r) vzw *= -1;
	int x, y;

	if (vzw &lt; 0) x = fd--;
	else x = fd++;

	//Memo1-&gt;Lines-&gt;Add(IntToStr((int)fd));

	y=sqrt(pow(r,2)-pow(x,2))*vzw;
	PaintBox1-&gt;Canvas-&gt;LineTo(250+x,250+y);
</code></pre>
<p>Damit läuft es auch schon fast wie gewünscht.<br />
Allerdings werden die Abstände am rechten, bzw. linken Rand des Kreises immer größer und genau das möchte ich vermeiden.</p>
<p>Zur Veranscheulichung hier das kompilierte Programm: <a href="http://www.file-upload.net/download-2421030/Project1.exe.html" rel="nofollow">http://www.file-upload.net/download-2421030/Project1.exe.html</a><br />
(Auf das Forumular klicken um die Animation zu starten)</p>
<p>Ich hoffe jemand kann mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879933</guid><dc:creator><![CDATA[yuri _m]]></dc:creator><pubDate>Fri, 09 Apr 2010 10:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:00:19 GMT]]></title><description><![CDATA[<p>Dafuer hat ein schlauer Mensch mal sin&amp;cos erfunden, damit hast du auch nicht mehr das Problem mit dem Verzeichenwechsel.</p>
<pre><code class="language-cpp">for( double i = 0 bis 2pi )
{
 double x = r * cos( i );
 double y = r * sin( i );

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1879935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879935</guid><dc:creator><![CDATA[stumpfi]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:00:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:04:12 GMT]]></title><description><![CDATA[<p>Das Problem hierbei ist jedoch, dass die Punkte nicht nacheinander den Kreis füllen sondern immer an verschiedenen Positionen.</p>
<p>Wenn du möchtest , kann ich dir zeigen, was dann passiert.</p>
<p>Außerdem sind sinus-Funktionen sehr ressourcenfressend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879936</guid><dc:creator><![CDATA[yuri _m]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:09:57 GMT]]></title><description><![CDATA[<p>yuri _m schrieb:</p>
<blockquote>
<p>Das Problem hierbei ist jedoch, dass die Punkte nicht nacheinander den Kreis füllen sondern immer an verschiedenen Positionen.</p>
<p>Wenn du möchtest , kann ich dir zeigen, was dann passiert.</p>
</blockquote>
<p>Du versuchst nicht zufällig die Funktionen mit Winkeln in Grad zu benutzen? Die erwarten nämlich Bogenmaß.</p>
<blockquote>
<p>Außerdem sind sinus-Funktionen sehr ressourcenfressend.</p>
</blockquote>
<p><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="😃"
    /> Kein Kommentar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879944</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:09:57 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:13:45 GMT]]></title><description><![CDATA[<p>yuri _m schrieb:</p>
<blockquote>
<p>Außerdem sind sinus-Funktionen sehr ressourcenfressend.</p>
</blockquote>
<p>Du benutzt grad Wurzel und exp-Funktionen und zeichnest deinen einzelnen Punkt in einer langsamen GUI mit einer sehr langsamen Zeichenmethode. Da macht ein sin/cos nichts mehr aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879947</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:13:45 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:13:12 GMT]]></title><description><![CDATA[<p>yuri _m schrieb:</p>
<blockquote>
<p>Das Problem hierbei ist jedoch, dass die Punkte nicht nacheinander den Kreis füllen sondern immer an verschiedenen Positionen.</p>
<p>Wenn du möchtest , kann ich dir zeigen, was dann passiert.</p>
<p>Außerdem sind sinus-Funktionen sehr ressourcenfressend.</p>
</blockquote>
<p>Aha...ja wuerde mich mal interessieren wie du das meinst.<br />
Dir ist Performance also wichtig, verwendest aber pow um ein Quadrat zu berechnen? Ausserdem ist ein sqrt auch nicht grad billig und das was du haben willst, eine gleichmassige Verteilung, kriegst du nur mit sin/cos hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879948</guid><dc:creator><![CDATA[stumpfi]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:13:12 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:15:56 GMT]]></title><description><![CDATA[<p>yuri _m schrieb:</p>
<blockquote>
<p>Das Problem hierbei ist jedoch, dass die Punkte nicht nacheinander den Kreis füllen sondern immer an verschiedenen Positionen.</p>
</blockquote>
<p>.. das liegt wahrscheinlich daran, dass Du den Unterschied zwischen Grad und Bogenmaß nicht kennst.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<blockquote>
<p>Außerdem sind sinus-Funktionen sehr ressourcenfressend.</p>
</blockquote>
<p><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="😃"
    /> Kein Kommentar.</p>
</blockquote>
<p>Ich beobachte eine gewisse Korrelation zwischen dem Unwissen eines Programmierers und dem Trieb das schnellstmögliche Programm zu schreiben. man beachte:</p>
<p>yuri _m schrieb:</p>
<blockquote>
<pre><code class="language-cpp">y=sqrt(pow(r,2)-pow(x,2))*vzw;
</code></pre>
</blockquote>
<p>.. wenn Du bei pow(..,2) die richtige Include-Datei erwischt hat (die mit 2 double als Paramter), dann kann man von 'ressourcenfressend' reden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879952</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:26:03 GMT]]></title><description><![CDATA[<p>Das ist doch nicht das Programm an dem ich programmiere. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Das was ich oben stehen habe, dient der Veranschaulichung.</p>
<p>Also bitte, darum geht es hier schließlich auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879961</guid><dc:creator><![CDATA[yuri _m]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:26:03 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:27:02 GMT]]></title><description><![CDATA[<p>Fairerweise soll Dir noch verraten werden, wie es wirklich performant zu lösen geht.</p>
<p>stumpfi schrieb:</p>
<blockquote>
<p>Dir ist Performance also wichtig, verwendest aber pow um ein Quadrat zu berechnen? Ausserdem ist ein sqrt auch nicht grad billig und das was du haben willst, eine gleichmassige Verteilung, kriegst du nur mit sin/cos hin.</p>
</blockquote>
<p>Das stimmt, nur wie oft? Man muss sin/cos nämlich nur genau einmal aufrufen. In etwa so:</p>
<pre><code class="language-cpp">const double PI = std::acos(-1.0); // benötigt #include &lt;cmath&gt;
const double delta = 20* (PI/180); // das sind 20Grad (das Delta um das der Kreisbogen weiter gezeichnet wird) im Bogenmaß 
const double sin_delta = std::sin( delta );
const double cos_delta = std::cos( delta );

// .. Initialisierung:
double x = r;
double y = 0;

    // .. später dann in der Schleife, wird x und y aus den alten Werten neu bestimmt.
    double x_neu =  x*cos_delta + y*sin_delta;
    y = -x*sin_delta + y*cos_delta;
    x = x_neu;
    // usw.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1879963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879963</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 11:46:10 GMT]]></title><description><![CDATA[<p>okay, danke werner.</p>
<p>es lag tatsächlich daran, dass ich bogenmaß und gradmaß verwechselt habe.<br />
ich bin noch nicht so alt, da darf man sich so einen Fehler schon mal erlauben <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>nun funktioniert es perfekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879989</guid><dc:creator><![CDATA[yuri _m]]></dc:creator><pubDate>Fri, 09 Apr 2010 11:46:10 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 12:00:32 GMT]]></title><description><![CDATA[<p>Ist es denn auch schnell genug? Schließlich kann ein moderner Prozessor nur gut 15 Millionen Punkte pro Sekunde berechnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1880004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1880004</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Apr 2010 12:00:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 12:44:50 GMT]]></title><description><![CDATA[<p>Wenn du cmath schon inkludierst, kannst auch gleich M_PI benutzen statt es &quot;selbst&quot; zu berechnen. <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1880039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1880039</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 09 Apr 2010 12:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 12:46:27 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Wenn du cmath schon inkludierst, kannst auch gleich M_PI benutzen statt es &quot;selbst&quot; zu berechnen. <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="😉"
    /></p>
</blockquote>
<p>Nein, denn <code>M_PI</code> steht nämlich nicht im C++-Standard. <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1880040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1880040</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 09 Apr 2010 12:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 12:48:08 GMT]]></title><description><![CDATA[<p>Ah, okay. Naja. Mir egal. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1880041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1880041</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 09 Apr 2010 12:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kreis berechnen on Fri, 09 Apr 2010 12:55:26 GMT]]></title><description><![CDATA[<p>Aber ich würde wenigstens die Berechnung durch einen festen Wert ersetzen. Ich wäre mir nämlich nicht so sicher, ob ein acos wegoptimiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1880049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1880049</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Apr 2010 12:55:26 GMT</pubDate></item></channel></rss>