Kreis zeichnen..Formel in übersetzen...



  • Formatier deine Codeausschnitte bitte richtig, so sieht das nicht schön aus.

    akzeptiert mein Compiler nicht..falscher Ausdruck, er erwartet ein ; irgendwo..

    Irgendwo hilft uns nichts. gib uns den Code (mit Zeilennummern falls länger) und die genaue Fehlermeldung.



  • das ist alles an code..außer int main 🙂

    signed int x = 50;
        signed int y = 50;
        signed int y1;
        signed int r =50;
        signed int y0 = 50;
                   y0=0;
                  for (x=-R; x<=R; ++x){
                   y1 = sqrt(R*R - x*x);
                  for (y=y0; y<=y1; ++y){
                   TFT_Dot(x,y, CL_YELLOW); TFT_Dot(x,-y, CL_YELLOW);
                  }
                  y0=y1;
                  }
    


  • Und wo ist R definiert?

    Wo ist denn der Koordinatenursprung von deinem Display?
    Etwa unten links?

    Der Kreis wird um (0;0) gezeichnet, darum siehst du nur einen Quadranten.



  • nein, vorher hatte ich alles auf 0 und nur r auf 50...das waren bloß die letzten versuche...


  • Mod

    C ist case-sensitiv. Aber Pascal doch auch?



  • SeppJ schrieb:

    Aber Pascal doch auch?

    Nein?



  • ach Mißt...offenbar ist das so richtig...hmpf..nicht zu ende gelesen..
    http://www-i1.informatik.rwth-aachen.de/~algorithmus/algo32.php

    Nein, Pascal interessiert groß und klein nicht



  • oh man!!
    ganz unten steht der Link zum C Beispielcode..*patsch*!!



  • DirkB schrieb:

    Etwa unten links?

    Sorry, ich meinte oben links.

    int x0 = 50, y0 = 50; // Mittelpunkt vom Kreis
    
        int R = 50;  // Radius
        int y1,y2;
    
        y1=0;
        for (x=-R; x<=R; ++x){
          y2 = sqrt(R*R - x*x);
          for (y=y0; y<=y1; ++y){
            TFT_Dot(x0+x,y0+y, CL_YELLOW); TFT_Dot(x0+x,y0-y, CL_YELLOW); 
            // es gibt noch mehr Symetrien
          }
          y1=y2;
        }
    


  • so ein Frust..bei Pascal geht das fast immer von einem zum anderen zu portieren..hier gibt es eine Fehlermeldung bei zeile 37 😞
    Er bemängelt das Int, er erwartet aber eine Funktion?!

    #include <iostream>
    #include <vector>
    #include <math.h>
    
    int res_x = 1024;
    int res_y = 968;
    std::vector<bool> pixel;
    
    void plot(int _x, int _y)
    {
      //the center of the circle is always center of the image
      _x += res_x/2;
      _y += res_y/2;
      if (_x < 0 || _x >= res_x || _y < 0 || _y >= res_y)
        return;
      else
        pixel[res_x * _y + _x] = true;
    }
    
    int main()
    {
      int R = 100;
      int x = 0;
      int y = 0;
      int F = 0;
    
      //clear image
      pixel.resize(res_x*res_y,0);
    
      ///Algorithm 1 (Naiver Algorithmus für N=7R)
    
        for (int j = 0; j < 7*R; ++j)
        {
          x = int (float(R) * cos(2.0*M_PI*float(j)/float(7*R)));
          y = int(float(R) * sin(2.0*M_PI*float(j)/float(7*R)));
          plot (x,y);
        }
    
      ///Algorithm 2 (Verbesserter Naiver Algorithmus)
        int y1 = 0;
    
        //9:00 - 12:00
        int y0 = 0;
        for (x = -R; x <= 0; ++x)
        {
          y1 = int(sqrt(R*R - x*x));
          for (y = y0; y <= y1; ++y)
          {
            plot(x,y); plot(x,-y);
          }
          y0 = y1;
        }
        //3:00 - 12:00
        y0 = 0;
        for (x = R; x > 0; --x)
        {
          y1 = int(sqrt(R*R - x*x));
          for (y = y0; y <= y1; ++y)
          {
            plot(x,y); plot(x,-y);
          }
          y0 = y1;
        }
    
      ///Algorithm 3 (Verbesserter Bresenham-Algorithmus)
    
        x = 0; y = R;
        F = 1 - R;
        while (x < y)
        {
          ++x;
          if (F < 0)
          {
            F += 2*x - 1;
          }
          else
          {
            F += 2*(x - y);
            --y;
          }
          plot(x,y), plot(y,x);
          plot(-x,y), plot(y,-x);
          plot(x,-y), plot(-y,x);
          plot(-x,-y), plot(-y,-x);
        }
    
      return 0;
    }
    


  • Tja das kommt immer dabei raus, wenn man ohne Sinn und Verstand drauflos hackt; in jeder Programmiersprache. Wenigstens Grundlagen sollte man können, und nicht nur Zeile 37 ist dir misslungen.



  • ??
    wieso mir?
    Das ist die originalvorlage der uni aus dem Link....



  • Es fällt unmittelbar auf, dass das C++ ist und nicht C. Beim zweiten Blick fällt auf, dass die Konstante M_PI verwendet wird, deren Definition in math.h vom Standard nicht gefordert wird (es ist eine gnu-Erweiterung meines Wissens). Wahrscheinlich funktioniert der Code auf dem Compiler, mit dem er ursprünglich geschrieben wurde. Wahrscheinlich kann ihn jeder minimal kompetente C++-Programmierer zum Laufen bringen. Aber so absolut gar keine Ahnung zu haben ist einfach schlecht.



  • das ist das Problem bei einem c neuling....



  • Ich bin mir sehr sicher, dass du (und deine Uni-Lehrer) den Unterschied zwischen

    float(R)
    und
    (float)R bzw. (float)(R)
    

    NICHT kennen, und demzufolge auch nicht den zw. C und C++. (frei nach dem Motto: der Compiler mäkelt nicht (mehr), also ist der Code OK, wobei es auch völlig egal ist, ob "der Compiler" nun ein C oder C++ Compiler ist)

    Das ist die originalvorlage der uni aus dem Link....

    Wenn du gedacht hast, an der Uni Programmieren oder Softwareentwicklung zu lernen, hast du dich (wie alle anderen Kommilitonen auch) geirrt.
    Programmieren und Softwareentwicklung lernt niemand an der Uni, weil es dort nicht gelehrt wird, was an der Qualität des dortigen Lehrpersonals liegt.
    Maximal werdet ihr an der Uni lernen, wie man mit zusammengegoogeltem Halbwissen irgendwelche PP-Präsentationen erstellt oder wie man mit zusammengegoogeltem Halbwissen IT-Projekte managt.



  • corado schrieb:

    Das ist die originalvorlage der uni aus dem Link....

    Wie man schon an der Endung .cc sieht, handelt es sich um ein C++-Programm für den GCC, besser G++. Die Kompilierung geschieht mit:

    g++ circles.cc

    So kompiliert es bei mir ohne irgendwelche Meckerei auf MinGW, CygWin und Wheezy. Allerdings gibt das Programm nichts aus, die Ausgabe musst Du noch hinzubasteln.

    viele grüße
    ralph



  • @wutz
    ich bin auf keiner Uni, ich bin auch kjein Student oder sonstwas..ich bin Hobbyist!
    egal....deshalb sind es Anfängerfragen, da gibt es eigentlich gar nichts zu diskutieren!
    Ich lerne nicht jeden Tag um programmieren zu können, es ist ein Hobby, und deshlab frage ich!

    Und ob es c oder c++ ist erkenne ich nicht auf den ersten Blick!! da ich aus der Pascal Ecke komme hatte ich bis vor kurzem mit C nichts am Hut!!
    In PAscal gibt es kein fast richtig, daher wird Ada(Pascal ähnlich) auch in Sicherheitskritischen Umgebungen eingesetzt!
    Und derzeit schwanke ich noch, ob ich nicht doch bei pascal bleibe..ganz oft bekommt man zu einfachen Fragen 5 verschiedene Antworten und es bricht eine Diskussion über C Standards aus..in Pascal gehts wenn es richtig ist!! wenn nicht dann wirds nicht kompiliert!

    Rechnen bzw Formeln sind mit Pascal natürlich um welten einfacher/übersichtlicher, so haben beide Sprachen eindeutig ihr Vorzüge
    Anderseits hat C halt schon einige Sachen die mir gefallen..und wenn es nur Kleinigkeiten bislang sind, wie das Initalisieren und vor belegen von Variablen und ich gleichem Atemzug.



  • corado schrieb:

    Und ob es c oder c++ ist erkenne ich nicht auf den ersten Blick!! da ich aus der Pascal Ecke komme hatte ich bis vor kurzem mit C nichts am Hut!!

    Da Du C++ benutzt, wäre es einfacher gewesen, im C++-Forum zu posten. Hier kriegste C- und C++-Antworten gemischt, weil die einen aufs Dorum und die anderen auf den Code achten.

    corado schrieb:

    In PAscal gibt es kein fast richtig, daher wird Ada(Pascal ähnlich) auch in Sicherheitskritischen Umgebungen eingesetzt!
    Und derzeit schwanke ich noch, ob ich nicht doch bei pascal bleibe..ganz oft bekommt man zu einfachen Fragen 5 verschiedene Antworten und es bricht eine Diskussion über C Standards aus..in Pascal gehts wenn es richtig ist!! wenn nicht dann wirds nicht kompiliert!

    Im zweiten Posting war doch schon die Lösung. Ab dann hast Du ein wenig CHaos verbreitet.

    corado schrieb:

    Rechnen bzw Formeln sind mit Pascal natürlich um welten einfacher/übersichtlicher,

    Das ist entschieden nicht richtig. Oder siehst DU bei der gegenüberstellung von COde, der das gleiche tut, einen Unterschied?

    corado schrieb:

    so haben beide Sprachen eindeutig ihr Vorzüge
    Anderseits hat C halt schon einige Sachen die mir gefallen..und wenn es nur Kleinigkeiten bislang sind, wie das Initalisieren und vor belegen von Variablen und ich gleichem Atemzug.

    Sag jetzt mal, ob Du C oder C++ machen willst. Das wäre recht wichtig, wenn man Dir Tipps geben soll. Sehr gute Tipps für die eine Sprache können für die andere Sprache Mist sein.



  • da ich überwiegend Microcontroller programmiere, liegt der Schwerpunkt bei C, bzw soll...seit Jahren mache ich es in Pascal



  • Bietet Pascal überhaupt binäre Operatoren wie & | ^ ~ ?

    Und ich meine Standard-Pascal und nicht eine Compilererweiterung.


Anmelden zum Antworten