VB Tutor VB2022 VB2019 VB6 VB Sample Code About Us
Quadratic Functions Graph Plotter

Quadratic Functions Graph Plotter

Interactive tool to visualize quadratic equations and compare VB6 and VB.NET implementations


A quadratic function is a second-degree polynomial function of the form: f(x) = ax2 + bx + c, where a, b, and c are constants, and a ≠ 0. The graph of a quadratic function is a parabola, which can open upwards or downwards depending on the sign of the coefficient 'a'.

This interactive tool allows you to visualize quadratic equations by adjusting the coefficients a, b, and c. You can see the parabola shape, vertex point, axis of symmetry, and roots (if they exist). The tool also provides equivalent code implementations in both VB6 and VB.NET.

Interactive Quadratic Graph Plotter

f(x) = 1x2 + 0x + 0

Vertex: (0.00, 0.00)

Axis of Symmetry: x = 0.00

Roots: No real roots

Implementation Code

Below are the implementations for plotting quadratic functions in both VB6 and VB.NET. The VB.NET version uses modern GDI+ capabilities for smoother rendering.

Private Sub cmd_draw_Click()
    Dim a As Single, b As Single, c As Single
    Dim w As Single, v As Single
    
    ' Get coefficients from user input
    a = Val(txt_a.Text)
    b = Val(txt_b.Text)
    c = Val(txt_c.Text)
    
    ' Clear previous graph
    pic_graph.Cls
    
    ' Draw coordinate axes
    pic_graph.Line (0, pic_graph.ScaleHeight / 2)-(pic_graph.ScaleWidth, pic_graph.ScaleHeight / 2), vbBlack
    pic_graph.Line (pic_graph.ScaleWidth / 2, 0)-(pic_graph.ScaleWidth / 2, pic_graph.ScaleHeight), vbBlack
    
    ' Calculate and plot the graph
    For w = 0 To pic_graph.ScaleWidth Step 0.1
        ' Transform coordinates to center of picture box
        Dim x As Single
        Dim y As Single
        x = (w - pic_graph.ScaleWidth / 2) / 20 ' Scale factor
        y = a * x ^ 2 + b * x + c
        v = pic_graph.ScaleHeight / 2 - y * 20 ' Scale and transform
        
        ' Plot point if within bounds
        If v >= 0 And v <= pic_graph.ScaleHeight Then
            pic_graph.PSet (w, v), vbBlue
        End If
    Next w
    
    ' Display vertex information
    Dim vertexX As Single, vertexY As Single
    vertexX = -b / (2 * a)
    vertexY = a * vertexX ^ 2 + b * vertexX + c
    lblVertex.Caption = "Vertex: (" & Format(vertexX, "0.00") & ", " & Format(vertexY, "0.00") & ")"
End Sub

Private Sub Command1_Click()
    ' Clear the graph and input fields
    pic_graph.Cls
    txt_a.Text = ""
    txt_b.Text = ""
    txt_c.Text = ""
    lblVertex.Caption = ""
End Sub

VB6 uses the PSet method for plotting points, which is less efficient than modern approaches but sufficient for simple graphs.

Private Sub PlotGraph(sender As Object, e As EventArgs) Handles btnPlot.Click
    Dim a As Double = Double.Parse(txtA.Text)
    Dim b As Double = Double.Parse(txtB.Text)
    Dim c As Double = Double.Parse(txtC.Text)
    
    ' Create a new bitmap for drawing
    Dim graphBitmap As New Bitmap(picGraph.Width, picGraph.Height)
    Using g As Graphics = Graphics.FromImage(graphBitmap)
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        g.Clear(Color.White)
        
        ' Draw coordinate axes
        Dim centerX As Integer = picGraph.Width \ 2
        Dim centerY As Integer = picGraph.Height \ 2
        g.DrawLine(Pens.Black, 0, centerY, picGraph.Width, centerY)
        g.DrawLine(Pens.Black, centerX, 0, centerX, picGraph.Height)
        
        ' Calculate and draw the quadratic function
        Dim scale As Double = 20.0 ' Pixels per unit
        Dim path As New Drawing2D.GraphicsPath()
        Dim firstPoint As Boolean = True
        
        For x As Double = -10 To 10 Step 0.1
            Dim y As Double = a * x * x + b * x + c
            Dim pixelX As Integer = centerX + (x * scale)
            Dim pixelY As Integer = centerY - (y * scale)
            
            If firstPoint Then
                path.StartFigure()
                path.AddLine(pixelX, pixelY, pixelX, pixelY)
                firstPoint = False
            Else
                path.AddLine(path.GetLastPoint(), New PointF(pixelX, pixelY))
            End If
        Next
        
        g.DrawPath(Pens.Blue, path)
        
        ' Calculate and mark vertex
        Dim vertexX As Double = -b / (2 * a)
        Dim vertexY As Double = a * vertexX * vertexX + b * vertexX + c
        Dim vertexPixelX As Integer = centerX + (vertexX * scale)
        Dim vertexPixelY As Integer = centerY - (vertexY * scale)
        
        g.FillEllipse(Brushes.Red, vertexPixelX - 4, vertexPixelY - 4, 8, 8)
        g.DrawString($"Vertex ({vertexX:F2}, {vertexY:F2})", 
                     New Font("Arial", 10), Brushes.Red, vertexPixelX + 5, vertexPixelY - 10)
    End Using
    
    ' Display the graph
    picGraph.Image = graphBitmap
    
    ' Display equation information
    lblEquation.Text = $"f(x) = {a}x² + {b}x + {c}"
    lblVertex.Text = $"Vertex: ({vertexX:F2}, {vertexY:F2})"
End Sub

VB.NET uses GDI+ for smoother graphics, anti-aliasing, and better performance, making it the preferred choice for modern applications.

Quadratic Function Concepts

Parabola Direction

If a > 0, the parabola opens upwards. If a < 0, it opens downwards.

Vertex

The vertex point is at x = -b/(2a), y = f(-b/(2a)). This is the maximum or minimum point.

Axis of Symmetry

The vertical line x = -b/(2a) that divides the parabola into two symmetric halves.

Roots (x-intercepts)

Solutions to ax² + bx + c = 0, calculated as [-b ± √(b² - 4ac)]/(2a).