Detect a Point Inside a Quadratic Region Using VB.Net | Senior Secondary Maths Tutorial
Understanding the Quadratic Region Concept | Maths Explanation for VB.Net Kids
In this tutorial, you'll learn how to detect the region under a quadratic curve using VB.Net.
The curve is defined by the equation y = a x² + b x + c, and we'll use the discriminant method to find
when a point or object lies within the quadratic region. This concept helps students connect
algebraic reasoning with programming and visualization using the VB.Net windows form.
What is a Quadratic Region? | Maths Explanation for VB.Net Kids
A quadratic region in VB.Net represents the area bounded by a quadratic curve.
Every quadratic equation has two x-values (roots) for any given y - except at its turning point (maximum or minimum).
We can use these roots as boundaries for region detection.
More technically, a quadratic region is the area defined by a quadratic inequality such as
y ≤ ax² + bx + c.
This concept is useful in computer graphics, physics simulations, and
quadratic curve collision detection (JS) projects.
Checking the Boundaries of a Quadratic Curve in VB.Net
To visualize the region under a quadratic curve, we'll use VB.Net to calculate the upper and lower limits dynamically.
This makes it possible to detect when an object (like a moving ball) enters or exits the quadratic region.
As discussed in the Animating along a Straight Line in VB.Net tutorial,
any quadratic equation always have two roots for any value of y (except at it's maximum or minimum point).
All we need to do is use these two roots (x values) as boundaries for our check.
y = ax2 + bx + c
ax2 + bx + (c-y) = 0
Figure: Visualizing quadratic curve region in VB.Net and an object trajectory passing through it on VB.Net windows form.
VB.Net Code Example: Detecting Entrance into a Quadratic Region
To check for when our ball enters the quadratic curve, we will continually check the x position
of the ball against the x position gotten using the quadratic equation at the same y position
as that of the ball.
We'll designate the coordinates of the ball as (xb, yb),
and those of the curve as (xq, yq).
Figure: Detecting and visualizing the quadratic region on a VB.Net windows form using VB.Net.
To detect a point inside a parabola using VB.Net,
you can compare its coordinates to the quadratic curve.
We'll determine whether a moving ball lies within this region by solving
for x using the quadratic formula.
If y is less than or equal to the value of the quadratic equation,
the point lies within the region.
Create a new Visual Basic Windows Forms Application project
;
call it Dymetric_VB.
Create 3 new VB.Net classes;
Call them Facet, Dymetric and QuadraticRegion.
Type out the adjoining VB.Net code for detecting the instance a travelling
body crosses the boundary of a quadratic curve.
Summary: Detecting Quadratic Boundaries with VB.Net
In this senior secondary VB.Net math tutorial, you've learnt how to
identify whether a moving point lies inside a quadratic region.
We've used simple algebra and the VB.Net canvas to visualize and
draw the quadratic region bounded by a parabolic curve.
Formula Recap:
The general form of a quadratic equation is y = a x² + b x + c.
To find the region under the curve, we can rearrange this equation to get
a x² + b x + (c - y) = 0 and use the discriminant D = b² - 4a(c - y).
For any given y-value, if D is positive, the quadratic crosses that y-level at two x-values.
The region between these two x-values represents the quadratic region.
y = ax² + bx + c
⟹ ax² + bx + (c - y) = 0
⟹ x = (-b ± √(b² - 4a(c - y))) / 2a
Thus, the quadratic region boundaries are: (-b - √(b² - 4a(c - y))) / 2a ≤ x ≤ (-b + √(b² - 4a(c - y))) / 2a
Understanding how to compute and visualize quadratic regions in VB.Net
bridges mathematical theory and practical coding.
It helps students apply concepts from coordinate geometry in a real-world programming context.
Applying the Line Region Detection Logic in VB.Net
This tutorial teaches you to:
Compute the region under a quadratic function in VB.Net
Use real-time region detection to track an object's position
Apply mathematical concepts like discriminants and boundaries in interactive graphics
To determine if a point lies inside a quadratic region,
we've used a VB.Net quadratic region detection function.
This approach is often used in interactive canvas demos and
collision detection algorithms.
So! VB.Net Fun Practice Exercise - Detect Quadratic curve Boundary
As a fun practice exercise, try experimenting with different coefficients (a, b, and c)
to see how the quadratic region changes shape.
You can also animate a point moving across the screen to test when it enters or exits the region on the VB.Net windows form.
Experiment with different equations and visualize how region boundaries change dynamically in VB.Net.
This is a great way to explore the relationship between algebra and geometry in senior secondary mathematics.
' Set a display text
sender.Text = "useOfMaths.com"
' Set a background colour
sender.BackColor = System.Drawing.Color.LightGray
' Set an icon image Dim path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
path = NewUri(path).LocalPath Try
sender.Icon = NewIcon(path & "\useOfMaths.ico") Catch ex AsSystem.IO.FileNotFoundException ' Well, just go on and use default pic EndTry
PublicSub decorateButtonArea(sender AsObject, e AsPaintEventArgs) ' Draw a dotted line Dim pencil AsNewSystem.Drawing.Pen(System.Drawing.Color.Black)
pencil.DashStyle = Drawing2D.DashStyle.DashDot
pencil.Width = 5
e.Graphics.DrawLine(pencil, 0, 50, sender.Width, 50)
pencil.Dispose()
' Colour region Dim paint_brush AsNewSystem.Drawing.SolidBrush(System.Drawing.Color.Pink)
e.Graphics.FillRectangle(paint_brush, 0, 0, sender.Width, 50)
paint_brush.Dispose() EndSub
PublicSub response_btn_Click(sender AsObject, e AsEventArgs) ' turn this on on every button click
CLICK_OCCURRED = True
sender.Refresh() EndSub EndClass
VB.Net Quadratic Curve Boundary Code for Dymetric Class
' decide what course of action to take PublicSub decideAction(sender AsObject, g AsGraphics, click_check AsBoolean) If do_simulation And click_check Then ' do animation
quad_region.play(sender, g)
do_simulation = False Else ' Put ball on screen
quad_region.prep(sender, g)
do_simulation = True EndIf EndSub EndClass
' quadratic variables Private xq_start, yq_start, xq_min, yq_min, xq_stop, x, y AsInteger Private xq_lb, xq_ub AsDouble' curve lower and upper boundary Private a, b, c, discriminant AsDouble PrivateConst dotDIAMETER = 5 Dim dot_colour AsNewSystem.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim bg_colour AsNewSystem.Drawing.SolidBrush(System.Drawing.Color.LightGray)
' draw first appearance of ball on the screen PublicSub prep(sender AsObject, g AsGraphics)
x_ball = 10
y_ball = Math.Round(sender.Height / 2)
ball_colour = NewSystem.Drawing.SolidBrush(System.Drawing.Color.Yellow)
' constants
a = (yq_start - yq_min) / Math.Pow((xq_start - xq_min), 2)
b = -2 * a * xq_min
c = yq_min + a * Math.Pow(xq_min, 2)
discriminant = Math.Sqrt(b * b - 4 * a * (c - (y_ball - ballDIAMETER / 2))) If a < 0 Then' a is negative
xq_lb = (-b + discriminant) / (2 * a) ' lower boundary
xq_ub = (-b - discriminant) / (2 * a) ' upper boundary Else
xq_lb = (-b - discriminant) / (2 * a) ' lower boundary
xq_ub = (-b + discriminant) / (2 * a) ' upper boundary EndIf
' draw quadratic curve For x = xq_start To xq_stop
y = CInt(Math.Round(a * x * x + b * x + c)) ' redraw dot
g.FillEllipse(dot_colour, x, y, dotDIAMETER, dotDIAMETER) Next x
' repetitively clear and draw ball on the screen - Simulate motion PublicSub play(sender AsObject, g AsGraphics) ' condition for continuing motion DoWhile x_ball < sender.Width - ballDIAMETER ' yellow outside the quadratic region
ball_colour = NewSystem.Drawing.SolidBrush(System.Drawing.Color.Yellow) If (x_ball <= xq_lb And x_ball + ballDIAMETER >= xq_lb) _
Or (x_ball <= xq_ub And x_ball + ballDIAMETER >= xq_ub) Then ' red on the quadratic outline
ball_colour = NewSystem.Drawing.SolidBrush(System.Drawing.Color.Red) ElseIf x_ball >= xq_lb And x_ball + ballDIAMETER <= xq_ub Then ' green inside the quadratic region
ball_colour = NewSystem.Drawing.SolidBrush(System.Drawing.Color.Green) EndIf