Problem mit Programm



  • Hallo,

    ich hab ein kleines Problem mit einem Programm und weiß einfach nicht mehr weiter.
    Mein Programm sollte eine Funktion 4. Grades zeichnen.
    Also hab ich in die Ansichtsklasse die Behandlungsroutine dafür aufgenommen, die wie folgt lautet.

    CClientDC dc(this);
    
    	CRect rect;
    	GetClientRect(rect);
    
    	dc.SetViewportOrg(rect.Width()/2,rect.Height());
    
    	int pri = -100;
    
    	for(int i=-100;i<=100;i++)
    	{
    		dc.MoveTo(pri,-pow(pri,4));
    		dc.LineTo(i,-pow(i,4));
    
    		pri = i;
    	}
    

    Nun mein Problem:
    Mein Programm zeichnet zwar die Funktion (x^4) im Bereich von -100 bis 100 jedoch werden rechts und links neben der Funktion komische Linien eingezeichnet, was ich nicht möchte.
    Wie kann ich diesen Fehler in meinem Programm beheben?
    Bräuchte wirklich dringend Hilfe.



  • ➡ Ist mir auch schon passiert und ich habe festgestellt, dass die Linien nur bei Funktionen erscheinen, bei denen sich enorm hohe Werte ergeben.

    ➡ Ich hatte es so gelöst:
    Geht ein umgerechneter y-Wert (CPoint.y) über den Client-Bereich drüber hinaus, wird der Wert auf
    - (-1) gesetzt, falls er negativ ist
    - ClientRect.Height() + 1 gesetzt, falls er größer als die CLient-Höhe ist

    ➡ Der Graph wird also weder nach oben noch nach unten 'unendlich' weit gezeichnet sondern nur knapp über den Bereich



  • Gibt es noch eine andere Lösung?
    Vielleicht anderen Gerätekontext benutzen oder Abbildungsmodus ändern?


Anmelden zum Antworten