Disegnare parabola

di il
2 risposte

Disegnare parabola

Salve a tutti, apro questo post perchè sono alle prime armi ancora e ho bisogno di aiuto da qualcuno più esperto, so già che dal titolo viene da ridere per il post che sto aprendo. Comunque come da titolo apro questo thread perchè ho "creato" un programmino che risolve equazioni di secondo grado. Mi è stato chiesto anche di fare in modo che venga disegnata la rispettiva parabola. Non avendo mai usato con la scuola i comandi di disegno con c# (questo è il primo anno di programmazione) sono andato su youtube per vedere se trovavo qualcosa. Ho trovato, però mi disegna solo la parabola verso l'alto, nel caso in cui la a (dell'equzione) fosse negativa la parabola dovrebbe essere rivolta verso il basso. Io provo manualmente ad impostare la "a" a -1, mi disegna la parabola verso il basso, però dopo si blocca e mi da un errore: "Eccezione non gestita di tipo 'System.OverflowException' in System.Drawing.dll" "assicurarsi che non si stia dividendo per zero". E' una banalità per voi però io non riesco a capire come posso fare, grazie a chi mi aiuta.

  public FormParabola()
        {
            InitializeComponent();
        }

        private void btnDisegna_Click(object sender, EventArgs e)
        {
            int a = -1;
            int b = 2;
            int c = 3;
            int ox = panel1.Width / 2;
            int oy = panel1.Height / 2;
            double x, y;
            Bitmap penna = new Bitmap(1, 1);
            penna.SetPixel(0, 0, Color.Green);
            System.Drawing.Graphics dove = panel1.CreateGraphics();
            for (double  i = 0; i <= 100000; i += 0.1)
            {
                x = i;
               // y = Math.Sqrt(Math.Pow(b, 2) - (4 * a * c));
                y = (a * (x * x) + (b * x) + c);

                dove.DrawImageUnscaled(penna, ox - (int)x, oy - (int)y);
                dove.DrawImageUnscaled(penna, ox + (int)x, oy - (int)y);

               /* if (a < 0)
                {
                    a = -1;
                    dove.DrawImageUnscaled(penna, ox - (int)x, oy + (int)y);
                    dove.DrawImageUnscaled(penna, ox - (int)x, oy - (int)y);
                }
                */
Come potrete notare ci sono anche sciocchi tentativi miei di risolvere il problema invani. Grazie ancora per la pazienza e l'attenzione

2 Risposte

  • Re: Disegnare parabola

    Hai copiato tutto il tuo codice? non ho visto nessuna divisione per 0?
    prova ad aggiungere un try catch ed un breakpoint alla prima riga del try e procedi con il debugger un "f10" alla volta per vedere dove và in errore...
    fai sapere come và..
  • Re: Disegnare parabola

    Il problema è un overflow non una divisione per zero
Devi accedere o registrarti per scrivere nel forum
2 risposte