Wie kann ich einen Circle mit Sinus u. Cosinus zeichnen lassen ???
-
hallo, ich habe irgendiwe verstaendniss probleme mit sinus und cosinus... ich moechte einen circle bzw eine kreisbahn zeichenen lassen. dazu dachte ich berechne ich irgendiwe
mit sinus und cosinus die bahn... aba ich weiss net wirklich wie. habt ihr nen paar tipps beispiele oder tuts fuer mich?? waer toll
thanx
-
for (val = 0.0; val < 3.14; val += 0.05) printf("%f", sin(val));
oder so...
-
gehts vieleicht nen bissel ausführlicher? ich wollte das ganze dann später fuer openGL und fuer WM_PAINT benutzen
-
das kannst eigendlich sehr einfach machen.
^
|....... /<----dein radius (konstant)
|...... /.|
|..... / .|
|.... / . |
|... / .. |
|.. / ... |
|. / .... |
|/ ..... (| <--hier is ein rechter winkel
----------------------->also is der radius deine hypotenuse
die gegenkatethe und ankatethe sind unbekannt.gegenkatethe:
sin(alpha)=Gegenkatethe/hypotenuse also einfach umstellen
sin(alpha)*hypotenuse=Gegenkatheteankatethe:
für cosinus gilt
cos(alpha)=ankatethe/hypotenuse
cos(alpha)*hypotenuse=ankatethe (x)das ganze jetzt noch in eine schleife wo du 1°-360° durchkaust.
das kannst gleichzeitig als 2d-rotation verwenden
hoffe sowas meintest du.edit:
zu x und y musst noch mindestens den radius hinzu addieren, da oben links
ja p(0|0) ist, sonst siehst nur nen 1/4 kreis
-
1. Finde heraus wie du ein Pixel malen kannst:
http://turing.fh-landshut.de/~jamann/DrawPixel.pdf2. Schau dir was Cosinus und Sinus im Einheitskreis darstellen
Skaliere den Einheitskreis und zeichne die berechneten Punkte mit SetPixelColor()
-
Standardmäßig ist auch der Kreisalgorithmus von Bresenham zu empfehlen
-
nur noch mal so .... wenn das mein drei eck is:
...
.....
........
...........(gegen kathede)
..............
.................
....................
.......................
(hypothenuse)und die andere ankathede is das richtig?
-
danke klappt alles
static int posx = 0; static int posy = 0; static double dGrad = 0.0f; static const int radius = 50; if( dGrad <= 360.0f ) { posy = radius * sin( dGrad ); posx = radius * cos( dGrad ); SetPixel( hDC, posx + radius, posy + radius, RGB( 255, 0, 0 ) ); dGrad += 1.0f; InvalidateRect( hWnd, 0, false ); }
-
immer die längste seite is die hypotenuse.
mal dir einfach mal nen kleines koordinaten kreuz.
und mal nen kreis durch alle 4 quadranten.und mal ne gerade(dein radius/hypotenuse) zb 45° vom nullpunkt bis zum
kreisrand.
.....^......
.....|.../↓
.....|../.↓
.....-./..↓
---( + )--->
.....-
.....|
.....|sollte ca so aussehen, diese 45° in diesem beispiel wären
der öffnungswinkel(also alpha). beim kreis halt 1-360.bei gleichem radius würde das wie man weiss nen kreis ergeben.
die seite gegenüber von alpha is die gegenkatethe, die siehst zwar nich aber
die denkst du dir. zeichne ich mal mit einem pfeil....und die letzte seite is dann...jop, die ankatethe
was als ergebnis für ankatethe und gegenkatethe rausbekommts
sind deine x/y werte, die dann bei deiner pixelset funktion brauchst.hoffe war bildlich und verständlich
-
habs mal in blitzbasic gemacht schnell.
Graphics3D 800,600,32,0 SetBuffer BackBuffer() While Not KeyDown(1) For i= 1 To 360 x=Sin(i)*50+50(mal radius+radius) y=Cos(i)*50+50 WritePixel x,y,255 Next RenderWorld Flip Wend End
-
Mann, macht Ihr das kompliziert!
int xPos, yPos; if (i=0, i<360, i++) { xPox = sin(i); yPos = cos(i); }