Halbkreis in ein Kartesisches Koordinate System



  • Hallo erstmal

    meine Aufgabenstellung ist folgendermassen

    Habe einen Halbkreis 180° von dem ich den Radius kenne. ist 120(mm).

    nun möchte ich die Koordinaten in 1° schritten ermitteln.

    die Formel dazu lautet bis jetzt:

    Px = r * (cos(winkel);
    Py = r * (sin(winkel));

    noch meinen Source::

    TPoint myPoints[180];
        int len = 180;
        double   r = 0.0;          //Kreisradius _._ Messdistanz
        double   winkel = 0;       //Winkel zur Horizontalle
        double   winkAbstand = 1;  //Winkel einzel Schritte  (0.25° / 0.5° / 0.75° / 1°)
        double   x = 0, y = 0;     //Kartesische Koordinaten
    
        int     num_segments;       //anzahl Distanz Messwerte
    
        num_segments = len;
    
              //Poligon Punkte Array erstellen
            for(int i = 0; i < num_segments; i++){
                //Messdistanz auslesen
                r = 100;
    
                if(i == 0 /*0°*/){
                   x = r;
                   y = 0;
                   winkel += winkAbstand;
                }
                else if((i < (num_segments / 2) /*<=90° Winkel*/) && (i != 0)){
                   //virtual rechts bis 90°
                   x = r * (cos(winkel));
                   y = r * (sin(winkel));
                   winkel += winkAbstand;
                }
                else if(i == (num_segments / 2)){
                    x = 0;
                    y = r;
                    winkel -= winkAbstand;
                    continue;
                }
                else if(i > (num_segments / 2) && (i != num_segments) && (i != (num_segments / 2))){
                    //Virtuel links
                    x = (cos(winkel) * r);
                    y = (sin(winkel) * r);
                    winkel -= winkAbstand;
                }
    
                myPoints[i] = Point(x, y); //ausgabe leicht angepasst
    
            }
    

    nur das problem an der gischichte das ich föllig unrealistische zahlen erhalte. wie zb:
    P(100/0)
    P(54/84)
    P(-41/90)
    P(-98/14)... usw

    komme nicht mehr weiter und höffe jemand kann mein gewirr auflössen 😮



  • Du mußt die Winkel ins Bogenmaß umrechnen: π180\cdot \frac \pi {180}



  • fubar schrieb:

    Du mußt die Winkel ins Bogenmaß umrechnen: π180\cdot \frac \pi {180}

    du meinst etwa so:

    x = r * (cos(winkel * M_PI / 100));
     y = r * (sin(winkel * M_PI / 100));
    


  • Wenn du aus der 100 ne 180 machst - ja 😉



  • irgendwie schaut es immer noch nicht wie ein kreis aus....



  • bqstony() schrieb:

    irgendwie schaut es immer noch nicht wie ein kreis aus....

    Das ist keine ausreichende Fehlerbeschreibung.

    Nimm statt 180 mal 180.0, 180 wird als Integer interpretiert und u.U. wird M_PI/180 dann als Integer ausgewertet und dann siehts sicherlich nicht aus wie ein Kreis 😉

    Edit: und

    int len = 180;
    

    solltest auch durch

    float len = 180.0;
    

    ersetzen



  • hab ausserdem noch bemerk das ich ein memcpy zwischen geschaltet hatte 😮
    und, naja ich 🤡 hab zuwenig bytes angegeben....

    nun klapts.

    http://amigo-online.ch/scan.jpg

    BESTEN DANK


Anmelden zum Antworten