<?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[Kreisberechnung ist falsch, brauche Hilfe]]></title><description><![CDATA[<p>Moin,</p>
<p>ich wollte mit ein paar Matheroutinen einen Kreis berechnen bzw, Positionen für Objekte die sich radial von einem Mittelpunkt wegbewegen.</p>
<pre><code class="language-cpp">//schleife ca 2500 mal
//{
float x, y;

//erstelle uns einen winkel zwischen 0.0f und 360.0f
angle += ((rand() % (int) (360*200+1)) - 360*100) / 100.0f;

x = (velocity * lifetime) * sin(angle / 180 * 3.141592653);
y = (velocity * lifetime) * cos(angle / 180 * 3.141592653);
//}
</code></pre>
<p>(velocity * lifetime) entspricht dabei lediglich einem Multiplikator. Das Problem ist, dass wenn ich viele Objekte zeichnen würde, ich eigentlich so etwas wie einen Kreis darstellen müsste. Da nach dem Gesetz der großen Zahlen alle Winkel mindestens ein mal betroffen sind usw.</p>
<p>Ich sehe aber, dass ein gewisser Kreisauschnitt immer ausgelasen wird, so von ca 30°. Hab aber den Fehler noch nicht rausgefunden. <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=":/"
      alt="😕"
    /> Kann mir jemand dabei helfen, bitte?</p>
<p>mfg freaker</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255335/kreisberechnung-ist-falsch-brauche-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 02:19:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255335.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Nov 2009 10:09:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kreisberechnung ist falsch, brauche Hilfe on Sun, 29 Nov 2009 10:09:46 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich wollte mit ein paar Matheroutinen einen Kreis berechnen bzw, Positionen für Objekte die sich radial von einem Mittelpunkt wegbewegen.</p>
<pre><code class="language-cpp">//schleife ca 2500 mal
//{
float x, y;

//erstelle uns einen winkel zwischen 0.0f und 360.0f
angle += ((rand() % (int) (360*200+1)) - 360*100) / 100.0f;

x = (velocity * lifetime) * sin(angle / 180 * 3.141592653);
y = (velocity * lifetime) * cos(angle / 180 * 3.141592653);
//}
</code></pre>
<p>(velocity * lifetime) entspricht dabei lediglich einem Multiplikator. Das Problem ist, dass wenn ich viele Objekte zeichnen würde, ich eigentlich so etwas wie einen Kreis darstellen müsste. Da nach dem Gesetz der großen Zahlen alle Winkel mindestens ein mal betroffen sind usw.</p>
<p>Ich sehe aber, dass ein gewisser Kreisauschnitt immer ausgelasen wird, so von ca 30°. Hab aber den Fehler noch nicht rausgefunden. <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=":/"
      alt="😕"
    /> Kann mir jemand dabei helfen, bitte?</p>
<p>mfg freaker</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814831</guid><dc:creator><![CDATA[freaker]]></dc:creator><pubDate>Sun, 29 Nov 2009 10:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to Kreisberechnung ist falsch, brauche Hilfe on Sun, 29 Nov 2009 10:28:14 GMT]]></title><description><![CDATA[<p>Wieso berechnest du zufällige Punkte? Ich würde etwas systematischer an die Sache rangehen. Das Gesetz der grossen Zahlen stimmt natürlich (besonders bei linearen Kongruenzgeneratoren), aber viel effizienter ist es immer noch, gleich die benötigten Punkte auszurechnen.</p>
<pre><code class="language-cpp">const float radius = velocity * lifetime;
const unsigned int num_points = 100; // vielleicht dem Radius anpassen
for (unsigned int i = 0; i &lt; num_points; ++i)
{
	float angle = 2 * 3.141592653f * i / num_points;

	float x = radius * cos(angle);
	float y = radius * sin(angle);

	draw_point(x, y);
}
</code></pre>
<p>Du könntest auch in der For-Schleife gleich <code>float</code> s inkrementieren, allerdings riskierst du dabei (kleine) Rundungsfehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814840</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Nov 2009 10:28:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kreisberechnung ist falsch, brauche Hilfe on Sun, 29 Nov 2009 10:46:13 GMT]]></title><description><![CDATA[<p>Ich wollte ja absichtlich zufällig berechnete Punkte erhalten. Es handlet sich bei dem ganzen um ein Partikelsystem, hier speziell um einen Emitter, der die Partikel kreisförmig emittiert. Und da brauche ich zufällige Punkte, damit die Partikel nicht wie in einer Strahlenkanone reihum herausgeschossen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814849</guid><dc:creator><![CDATA[freaker]]></dc:creator><pubDate>Sun, 29 Nov 2009 10:46:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kreisberechnung ist falsch, brauche Hilfe on Sun, 29 Nov 2009 11:25:11 GMT]]></title><description><![CDATA[<p>Okay, das hättest du aber auch sagen dürfen. Ich habe deinen Post so verstanden, als ob du das Gesetz der Grossen Zahlen dazu verwenden wolltest, einen Kreis zu zeichnen.</p>
<p>Berechne den Winkel dann eben so:</p>
<pre><code class="language-cpp">float angle = (2 * 3.141592653f * rand()) / RAND_MAX;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1814871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814871</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Nov 2009 11:25:11 GMT</pubDate></item><item><title><![CDATA[Reply to Kreisberechnung ist falsch, brauche Hilfe on Sun, 29 Nov 2009 11:28:25 GMT]]></title><description><![CDATA[<p>Ein sehr effizienter Algorithmus für Kreise ist: <a href="http://de.wikipedia.org/wiki/Bresenham-Algorithmus#Kreisvariante_des_Algorithmus" rel="nofollow">http://de.wikipedia.org/wiki/Bresenham-Algorithmus#Kreisvariante_des_Algorithmus</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814874</guid><dc:creator><![CDATA[Leprechaun]]></dc:creator><pubDate>Sun, 29 Nov 2009 11:28:25 GMT</pubDate></item></channel></rss>