<?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[Genauigkeit für Poligon Elipse]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab ein kleines Algorithmisches Problem beim erzeugen einer Elipse.<br />
Ich will beim erstellen einer Elipse eine gleichbleibende genauigkeit erreichen.</p>
<p>derzeit erzeuge ich die Elipse so:</p>
<pre><code class="language-cpp">double a= RoundTo((Quadrat.Right-Quadrat.Left)/2,0);
	double b= RoundTo((Quadrat.Bottom-Quadrat.Top)/2,0);

//Startpunkt
	PolKreis-&gt;resize(PolKreis-&gt;size()+1);
	(*PolKreis)[PolKreis-&gt;size()-1].x=Quadrat.Left+a;
	(*PolKreis)[PolKreis-&gt;size()-1].y=Quadrat.Top;

// Rechte Kreisseite erzeugen
	for(int i=-b ;i&lt;= b;i++)
	{

		PolKreis-&gt;resize(PolKreis-&gt;size()+1);
		(*PolKreis)[PolKreis-&gt;size()-1].x=Quadrat.Left+a+Sqrt((pow(a,2)- (pow(a,2) * pow((double)i,2))/ pow(b,2)));
		(*PolKreis)[PolKreis-&gt;size()-1].y=Quadrat.Top+b+i;
	}

// Linke Kreisseite erzeugen
	for(int i=b ;i&gt;= -b;i--)
	{

		PolKreis-&gt;resize(PolKreis-&gt;size()+1);
		(*PolKreis)[PolKreis-&gt;size()-1].x=Quadrat.Left+a-Sqrt((pow(a,2)- (pow(a,2) * pow((double)i,2))/ pow(b,2)));
		(*PolKreis)[PolKreis-&gt;size()-1].y=Quadrat.Top+b+i;
	}
</code></pre>
<p>Quadrat enthält die Abmaße im Koordiantensystem</p>
<p>der schleifenzähler i erzeugt die Genauigkeit der Elipse. Problem ist je größer meine Geometrie ist, desto mehr Punkte werden auch erzeugt.<br />
Ich würde gerne die Genauigkeit gerne so einstellbar machen das man unabhängig von der größe immer gleichbleibende anzahl an Punkten hat.</p>
<p>Hat jemand ne Idee wie ich das anstelle? Ich zerbrech mir schon seit stunden den Kopf darüber.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247416/genauigkeit-für-poligon-elipse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 13:52:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247416.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Aug 2009 17:56:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Genauigkeit für Poligon Elipse on Mon, 10 Aug 2009 17:56:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab ein kleines Algorithmisches Problem beim erzeugen einer Elipse.<br />
Ich will beim erstellen einer Elipse eine gleichbleibende genauigkeit erreichen.</p>
<p>derzeit erzeuge ich die Elipse so:</p>
<pre><code class="language-cpp">double a= RoundTo((Quadrat.Right-Quadrat.Left)/2,0);
	double b= RoundTo((Quadrat.Bottom-Quadrat.Top)/2,0);

//Startpunkt
	PolKreis-&gt;resize(PolKreis-&gt;size()+1);
	(*PolKreis)[PolKreis-&gt;size()-1].x=Quadrat.Left+a;
	(*PolKreis)[PolKreis-&gt;size()-1].y=Quadrat.Top;

// Rechte Kreisseite erzeugen
	for(int i=-b ;i&lt;= b;i++)
	{

		PolKreis-&gt;resize(PolKreis-&gt;size()+1);
		(*PolKreis)[PolKreis-&gt;size()-1].x=Quadrat.Left+a+Sqrt((pow(a,2)- (pow(a,2) * pow((double)i,2))/ pow(b,2)));
		(*PolKreis)[PolKreis-&gt;size()-1].y=Quadrat.Top+b+i;
	}

// Linke Kreisseite erzeugen
	for(int i=b ;i&gt;= -b;i--)
	{

		PolKreis-&gt;resize(PolKreis-&gt;size()+1);
		(*PolKreis)[PolKreis-&gt;size()-1].x=Quadrat.Left+a-Sqrt((pow(a,2)- (pow(a,2) * pow((double)i,2))/ pow(b,2)));
		(*PolKreis)[PolKreis-&gt;size()-1].y=Quadrat.Top+b+i;
	}
</code></pre>
<p>Quadrat enthält die Abmaße im Koordiantensystem</p>
<p>der schleifenzähler i erzeugt die Genauigkeit der Elipse. Problem ist je größer meine Geometrie ist, desto mehr Punkte werden auch erzeugt.<br />
Ich würde gerne die Genauigkeit gerne so einstellbar machen das man unabhängig von der größe immer gleichbleibende anzahl an Punkten hat.</p>
<p>Hat jemand ne Idee wie ich das anstelle? Ich zerbrech mir schon seit stunden den Kopf darüber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758461</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Mon, 10 Aug 2009 17:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Genauigkeit für Poligon Elipse on Mon, 10 Aug 2009 18:53:15 GMT]]></title><description><![CDATA[<p>Ich bin mir nicht sicher, ob ich dich richtig verstanden habe, aber meinst du einfach das hier?</p>
<pre><code class="language-cpp">double a= irgendein_größenunabhängiger_wert;
    double b= irgendein_größenunabhängiger_wert;
</code></pre>
<p>Wobei ich allerdings nicht verstehe, wieso du die Punktezahl überhaupt als double speicherst.</p>
<p>Und den Rest des Codes würde ich an deiner Stelle nochmal überarbeiten. Insbesondere guck dir mal an, wie man mit dynamischen Containern arbeitet, ich glaube, du hast da was falsch verstanden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758480</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 10 Aug 2009 18:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to Genauigkeit für Poligon Elipse on Mon, 10 Aug 2009 19:27:06 GMT]]></title><description><![CDATA[<p>Das ist nur ein Auszug aus meinem Quelltext.<br />
Optimieren kann ich den wenn er funktioniert.</p>
<p>Grundlage ist die Ellipsengleichung x<sup>2</sup>/a<sup>2</sup> + y<sup>2</sup>/b<sup>2</sup> =1<br />
wobei a der Radius auf X-Achse und b der Radius auf Y Achse ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758495</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Mon, 10 Aug 2009 19:27:06 GMT</pubDate></item><item><title><![CDATA[Reply to Genauigkeit für Poligon Elipse on Mon, 10 Aug 2009 20:04:31 GMT]]></title><description><![CDATA[<p>JBOpael schrieb:</p>
<blockquote>
<p>Das ist nur ein Auszug aus meinem Quelltext.<br />
Optimieren kann ich den wenn er funktioniert.</p>
<p>Grundlage ist die Ellipsengleichung x<sup>2</sup>/a<sup>2</sup> + y<sup>2</sup>/b<sup>2</sup> =1<br />
wobei a der Radius auf X-Achse und b der Radius auf Y Achse ist.</p>
</blockquote>
<p>Oh, hatte gar nicht gesehen, dass a und b auch nochmal in den for-Schleifen vorkommen. Dann passt das ja schon mit dem double. In dem Fall kann man das aber trotzdem leicht auf eine feste Punktmenge umschreiben:</p>
<pre><code class="language-cpp">for(double i=-b ;i&lt;= b; i+= 2*b/anzahl_Punkte)
 {
   [...]
 }
 for(double i=b ;i&gt;= -b; i-= 2*b/anzahl_Punkte)
 {
   [...]
 }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1758510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758510</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 10 Aug 2009 20:04:31 GMT</pubDate></item><item><title><![CDATA[Reply to Genauigkeit für Poligon Elipse on Mon, 10 Aug 2009 20:15:27 GMT]]></title><description><![CDATA[<p>an sowas habe ich auch gedacht, aber das ist nicht so ganz was ich mir vorgestellt habe.</p>
<p>nachdem ich noch ein wenig gesucht habe habe ich eine formel gefunden die nicht nur kleiner ist, sondern auch noch mein problem der Präzision erledigt.</p>
<pre><code class="language-cpp">for(double i=-90;i&lt;=270; i=i+0.1)
	{
		PolKreis-&gt;resize(PolKreis-&gt;size()+1);
		(*PolKreis)[PolKreis-&gt;size()-1].x=Quadrat.Left+a+(a*cos(i*M_PI/180.0));
		(*PolKreis)[PolKreis-&gt;size()-1].y=Quadrat.Top+b+(b*sin(i*M_PI/180.0));
	}
</code></pre>
<p>trotzdem danke für deine Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1758512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1758512</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Mon, 10 Aug 2009 20:15:27 GMT</pubDate></item></channel></rss>