Hallo ich habe folgenden Code geschrieben um die x und y Werte eines Kreises zu berechnen. Schaue ich mir die Ausgabe vom printf in der Console an, beginnt er mit x= 4.69 und y=8.83. Ich erwarte aber x=10.00 und y=0.00. Könnte es vielleicht daran liegen das mir die Konsole nicht alles anzeigt, oder so? Denn wenn z.B. nur 100 Werte darstelle beginnt er wie gewünscht. Vielleicht könnt ihr mir weiter helfen. Ich verstehe es nicht. Vielen Dank schon im vorraus. #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <math.h> #define PI 3.141592 int main(void) { float x; float y; float radius=10; float a; for(a=0;a<361;a++) { x=cos(a*PI/180)*radius; y=sin(a*PI/180)*radius; printf(" %.2f %.2f\n\r",x,y); } system("PAUSE"); return 0; }
Hallo liegt es vielleicht daran, dass du den Schleifenindex a als float und nicht als int deklariert hast? Gruss
Nein daran liegt es nicht. Würde ich auch nicht verstehen wenn es daran liegen würde. Die Schleife beginnt bei 0 egal ob float oder int. So weit wie ich das verstanden habe. Aber trotzdem schonmal Vielen Dank
Ne denke ich auch nicht. Wenn nur die 0-te fehlt dann würde ich erwarte das x=9.9 und y=0.1 als erstes auf der Console steht.
> Könnte es vielleicht daran liegen das mir die Konsole nicht alles anzeigt, > oder so? Denn wenn z.B. nur 100 Werte darstelle beginnt er wie gewünscht. Ja. Wie groß ist denn deine Konsole bzw. deren Rückspulpuffer? 300 Zeilen? Das Programm ist ansonsten ok.
Es werden zu viele Ergebnisse ausgegeben, so dass nicht mehr alle in der Konsole angezeigt werden. printf("%.0f %.2f %.2f\n\r",a,x,y); Du wirst sehen, er beginnt die Anzeige nicht bei 0.
Super Methode um seine eigenen Vermutungen zu bestätigen. Danke "ich" echt cool. Aber wie kann ich meinen "Rückspulpuffer" erhöhen? Hat nämlich zu sehr viel Verwirrung bei mir gesorgt.
Starte das Programm doch einfach mal mit einem angehängten " > test.txt" dann sollte die Ausgabe deines Programms in test.txt landen statt in der Console, da kannst du dann gemütlich nachprüfen ob wirklich alles ausgegeben wurde. viele Grüße Biertrinker
Mal ganz unabhängig davon ein paar "einfache" Verfahren, um Kreise zu zeichnen: http://de.wikipedia.org/wiki/Rasterung_von_Kreisen Je nach Umgebung ist die Berechnung/Tabellierung von sin+cos nämlich nicht gerade einfach...
Ist das Floating-Point-Gebummsel ordentlich dazugelinkt? Ansonsten hab ich irgendwo schonmal gehört, dass sin() Blödsinn liefert, ich such mal.
Nicht schlecht der link. Ich habe mal die Methode von Horn ausprobiert, richtig gut. Aber sie beschreibt nur ein achtel des Kreises wie fahre ich dann weiter vor?
> Aber sie beschreibt nur ein achtel des Kreises wie fahre ich dann > weiter vor? Durch Anwendung einer oder mehrerer der folgenden Modifikationen erhältst du die Punkte auf den restlichen 7/8 des Kreises: - x durch -x ersetzen - y durch -y ersetzen - x und y vertauschen
Super Sache geht viel schneller auf meinem S65 display. Total super. Besser als mit float und sin, cos funktionen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.