zeichnen einer x² funktion??°°
-
Hi leute, ich würde gerne eine x² funktion zeichenn, die bei 150 250 anfängt.
allerdings zeichent die folgende kurve nur so einen schmarn, der falschrum liegt. wo .liegt das problem??void __fastcall TForm1::Button1Click(TObject *Sender) { img->Canvas->MoveTo(150,0); img->Canvas->LineTo(150,300); img->Canvas->MoveTo(0,250); img->Canvas->LineTo(300,250); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { img->Canvas->MoveTo(150,250); for(int x=0; x<15 ; x++) { int X = x; int Y = X*X; img->Canvas->LineTo(X,Y); } } //---------------------------------------------------------------------------also, beim ersten klick, soll das kreuz gemalt werden, beim 2. button die kurve.
wäre nett für ein paar trick oder cpp codegreetz
T I M
www.tikotsammlung.de.vu
-
wie falsch rum liegt? zeig mal ein bild!
-
Hallo,
Das liegt wohl daran, dass der Nullpunkt des Bildschirmkoordinatensystems links oben ist und y nach unten hin grösser wird, wärend du den Nullpunkt links unten haben willst mit y nach oben zunehmend. Du muss deine Koordinaten halt transformieren.
Ciao
-
Hallo
hab das mal korrigiert
img->Canvas->MoveTo(150,250); // Startpunkt img->Canvas->Pen->Color = clRed; // Farbe setzen int y; // Abweichung y-Achse int x; // Abweichung x-Achse // Für 15 Punkte die Quadratische Kurze zeichnen for (int Lv = 0; Lv < 15; Lv++) { // Werte für x und y berechnen x = Lv; y = Lv * Lv; // Skalierung, damit die Kurve zu sehen ist. Damit kannst du // die Anzeige stauchen und dehnen, indem du das Verhältnis änderst x*= 10; y*= 10; img->Canvas->LineTo(150 + x, 250 - y); // Linie zum neuen Punkt zeinchnen }bis bald
akari
-
akari schrieb:
hab das mal korrigiert
Sicher?
y = 14 * 14 * 10 = 1960
zumindest fuer meinen Monitor viel zu gross!

ja und ich weiss mit 1 siehts aus wie vorher!
-
Hallo
naja, für das exponentielle Wachstum der Kurve kann ich ja nichts.
Wenn das zu schnell wächst, muß eben das Verhältniss geändert werdenx*= 10; y*= 2;sieht ganz gut aus. Ist aber dann eben gestaucht. Deshalb sollte dann eine Anzeige der x- und y- Schritte zusätzlich zu dem Kreuz mit rein.
bis bald
akari
-
noch besser siehts natürlich so aus:
img->Canvas->MoveTo(-1,-1); // Startpunkt img->Canvas->Pen->Color = clRed; // Farbe setzen float y; // Abweichung y-Achse float x; // Abweichung x-Achse // Für 15 Punkte die Quadratische Kurze zeichnen for (float Lv = -15; Lv < 15; Lv+=.1) { // Werte für x und y berechnen x = Lv; y = Lv * Lv; // Skalierung, damit die Kurve zu sehen ist. Damit kannst du // die Anzeige stauchen und dehnen, indem du das Verhältnis änderst x*= 10; y*= 2; // 10 wenn es nicht gestaucht werden soll img->Canvas->LineTo(150 + x, 250 - y); // Linie zum neuen Punkt zeinchnen }