<?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[Ideenlos, Nullpunkt&#x2F;Skallierung in einer Paintbox mit einesm Grafen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich hab einfach eine Denkblockade, aber das Projekt reizt mich weiterzumachen. Angefangen hat es mit einem Schulprojekt, ich führe es nun trotz der Tatsache das wir beschlossen haben es sein zu lassen weiter.</p>
<p>Kann sein das ich den Wald vor lauter Bäumen nicht sehe daher bitte in klein wenig Rücksicht mir fehlt noch was an Praxiserfahrung :D.</p>
<p>Die Situation:<br />
Ich habe das ganze als Painbox als &quot;Zeichenfläche&quot; dargestellt. Den Funktionsparser hab ich auch schon. In der Pb will ich nun ein Koordinaten Kreuz samt Funktion darstellen. Mit einem fixem Koordinaten Kreuz ist es auch kein Problem, doch ich will nun das Koordinaten Kreuz selbst skalierend auf Basis der Funktionswerte machen. d.h. wenn man nur den rein positiven Quadranten brauch wird auch nur der gezeichnet und platzsparend.<br />
Hier fällt mir nicht ein wie ich die Umrechnung so variable hin bekomme um ein Offset zu erstellen.</p>
<p>Ich zeig mal was ich als Ansatz hab:</p>
<pre><code>...
  FunctionParser Parser;

  if(efunktion-&gt;Text!=NULL)
  {
    wertemenge = atoi(exmin-&gt;Text.c_str());
    //erster wert der minimal und maximal Werte
    xskallmax= atoi(exmax-&gt;Text.c_str());
    xskallmin= atoi(exmin-&gt;Text.c_str());
    yskallmax=Parser.Parse(efunktion-&gt;Text.c_str(),wertemenge);
    yskallmin=Parser.Parse(efunktion-&gt;Text.c_str(),wertemenge);

    for(int i=atoi(exmin-&gt;Text.c_str());i&lt;=atoi(exmax-&gt;Text.c_str());i++)
    {
      //maximalane und minimalen Werte finden
      if(yskallmax&lt;Parser.Parse(efunktion-&gt;Text.c_str(),i))
      {
        yskallmax=Parser.Parse(efunktion-&gt;Text.c_str(),i);
      }
      if(yskallmin&gt;Parser.Parse(efunktion-&gt;Text.c_str(),i))
      {
        yskallmin=Parser.Parse(efunktion-&gt;Text.c_str(),i);
      }
    }
    ////Koordinatenkreuz Zeichen mit übergabe der min und max werte
    kordkreuz(xskallmin,xskallmax,yskallmin,yskallmax);
...
</code></pre>
<pre><code>void __fastcall TForm1::kordkreuz(int xskallmin,int xskallmax,int yskallmin,int yskallmax)
{
  int xmax, ymax;
  int skallx, skally;
  int skallierungx, skallierungy;
  int xnull,ynull;

  xmax=pb1-&gt;Width;
  ymax=pb1-&gt;Height;
  ///Berechnung der Skallierung
  if(xskallmin&lt;0)
  {
    skallierungx=(-xskallmin+xskallmax);
  }else{
    skallierungx=xskallmax;
  }
  if(yskallmin&lt;0)
  {
    skallierungy=(-yskallmin+yskallmax);
  }else{
    skallierungy=yskallmax;
  }

  skallx=xmax/skallierungx;
  skally=ymax/skallierungy;

  xnull=(xmax/2)*skallx;
  ynull=(ymax/2)*skally;
  /*
  /////Für die Foren Leser ^^, das war einer meiner Ideen, die wie ich  
  //festgestellt hab schon rein mathematisch nicht geht aber hier als Bsp.

  ///Berechnung des Nullpunktes
  if (xskallmin&lt;0)
  {
    xnull=-xskallmin*skallx;
  }else{
    xnull=xskallmin*skallx;
  }

  if (yskallmin&lt;0)
  {
    ynull=-yskallmin*skally;
  }else{
    ynull=yskallmin*skally;
  }
  */
  //Nur kleines Kreuz gezeichnet, da ich erstmal den Nullpunkt stellen wollte.
  pb1-&gt;Canvas-&gt;MoveTo(xnull,ynull-10);
  pb1-&gt;Canvas-&gt;LineTo(xnull,ynull+10);
  pb1-&gt;Canvas-&gt;MoveTo(xnull-10,ynull);
  pb1-&gt;Canvas-&gt;LineTo(xnull+10,ynull);
}
</code></pre>
<p>Vlt. habt ihr eine Idee oder einen Lösungsansatz.</p>
<p>greez<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205310/ideenlos-nullpunkt-skallierung-in-einer-paintbox-mit-einesm-grafen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 17:25:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205310.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Feb 2008 21:50:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ideenlos, Nullpunkt&#x2F;Skallierung in einer Paintbox mit einesm Grafen on Tue, 12 Feb 2008 21:50:50 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich hab einfach eine Denkblockade, aber das Projekt reizt mich weiterzumachen. Angefangen hat es mit einem Schulprojekt, ich führe es nun trotz der Tatsache das wir beschlossen haben es sein zu lassen weiter.</p>
<p>Kann sein das ich den Wald vor lauter Bäumen nicht sehe daher bitte in klein wenig Rücksicht mir fehlt noch was an Praxiserfahrung :D.</p>
<p>Die Situation:<br />
Ich habe das ganze als Painbox als &quot;Zeichenfläche&quot; dargestellt. Den Funktionsparser hab ich auch schon. In der Pb will ich nun ein Koordinaten Kreuz samt Funktion darstellen. Mit einem fixem Koordinaten Kreuz ist es auch kein Problem, doch ich will nun das Koordinaten Kreuz selbst skalierend auf Basis der Funktionswerte machen. d.h. wenn man nur den rein positiven Quadranten brauch wird auch nur der gezeichnet und platzsparend.<br />
Hier fällt mir nicht ein wie ich die Umrechnung so variable hin bekomme um ein Offset zu erstellen.</p>
<p>Ich zeig mal was ich als Ansatz hab:</p>
<pre><code>...
  FunctionParser Parser;

  if(efunktion-&gt;Text!=NULL)
  {
    wertemenge = atoi(exmin-&gt;Text.c_str());
    //erster wert der minimal und maximal Werte
    xskallmax= atoi(exmax-&gt;Text.c_str());
    xskallmin= atoi(exmin-&gt;Text.c_str());
    yskallmax=Parser.Parse(efunktion-&gt;Text.c_str(),wertemenge);
    yskallmin=Parser.Parse(efunktion-&gt;Text.c_str(),wertemenge);

    for(int i=atoi(exmin-&gt;Text.c_str());i&lt;=atoi(exmax-&gt;Text.c_str());i++)
    {
      //maximalane und minimalen Werte finden
      if(yskallmax&lt;Parser.Parse(efunktion-&gt;Text.c_str(),i))
      {
        yskallmax=Parser.Parse(efunktion-&gt;Text.c_str(),i);
      }
      if(yskallmin&gt;Parser.Parse(efunktion-&gt;Text.c_str(),i))
      {
        yskallmin=Parser.Parse(efunktion-&gt;Text.c_str(),i);
      }
    }
    ////Koordinatenkreuz Zeichen mit übergabe der min und max werte
    kordkreuz(xskallmin,xskallmax,yskallmin,yskallmax);
...
</code></pre>
<pre><code>void __fastcall TForm1::kordkreuz(int xskallmin,int xskallmax,int yskallmin,int yskallmax)
{
  int xmax, ymax;
  int skallx, skally;
  int skallierungx, skallierungy;
  int xnull,ynull;

  xmax=pb1-&gt;Width;
  ymax=pb1-&gt;Height;
  ///Berechnung der Skallierung
  if(xskallmin&lt;0)
  {
    skallierungx=(-xskallmin+xskallmax);
  }else{
    skallierungx=xskallmax;
  }
  if(yskallmin&lt;0)
  {
    skallierungy=(-yskallmin+yskallmax);
  }else{
    skallierungy=yskallmax;
  }

  skallx=xmax/skallierungx;
  skally=ymax/skallierungy;

  xnull=(xmax/2)*skallx;
  ynull=(ymax/2)*skally;
  /*
  /////Für die Foren Leser ^^, das war einer meiner Ideen, die wie ich  
  //festgestellt hab schon rein mathematisch nicht geht aber hier als Bsp.

  ///Berechnung des Nullpunktes
  if (xskallmin&lt;0)
  {
    xnull=-xskallmin*skallx;
  }else{
    xnull=xskallmin*skallx;
  }

  if (yskallmin&lt;0)
  {
    ynull=-yskallmin*skally;
  }else{
    ynull=yskallmin*skally;
  }
  */
  //Nur kleines Kreuz gezeichnet, da ich erstmal den Nullpunkt stellen wollte.
  pb1-&gt;Canvas-&gt;MoveTo(xnull,ynull-10);
  pb1-&gt;Canvas-&gt;LineTo(xnull,ynull+10);
  pb1-&gt;Canvas-&gt;MoveTo(xnull-10,ynull);
  pb1-&gt;Canvas-&gt;LineTo(xnull+10,ynull);
}
</code></pre>
<p>Vlt. habt ihr eine Idee oder einen Lösungsansatz.</p>
<p>greez<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1454741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1454741</guid><dc:creator><![CDATA[Menbow]]></dc:creator><pubDate>Tue, 12 Feb 2008 21:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to Ideenlos, Nullpunkt&#x2F;Skallierung in einer Paintbox mit einesm Grafen on Wed, 13 Feb 2008 11:45:50 GMT]]></title><description><![CDATA[<p>Kannst Du das Maximum und Minimum der Funktion in dem darzustellenden Bereich ausrechnen (lassen)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455004</guid><dc:creator><![CDATA[witte_]]></dc:creator><pubDate>Wed, 13 Feb 2008 11:45:50 GMT</pubDate></item><item><title><![CDATA[Reply to Ideenlos, Nullpunkt&#x2F;Skallierung in einer Paintbox mit einesm Grafen on Wed, 13 Feb 2008 14:05:27 GMT]]></title><description><![CDATA[<p>jap, das sind die werte die ich an die Funktion übergebe:<br />
kordkreuz(int xskallmin,int xskallmax,int yskallmin,int yskallmax)</p>
<p>mit denen Berechne ich auch die Skalierung da sich das Fenster öffnen lässt, also wie viel Pixel eine Einheit bilden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455116</guid><dc:creator><![CDATA[Menbow]]></dc:creator><pubDate>Wed, 13 Feb 2008 14:05:27 GMT</pubDate></item></channel></rss>