Solving Cubic Equations and Animating along Polynomial Curves in JavaScript | Senior Secondary Mathematics
Using Polynomial equations in JavaScript
In this JavaScript polynomial equation tutorial, you'll learn how to
model and animate a moving object along a cubic curve using mathematical formulas.
This hands-on project demonstrates how to solve polynomial equations
and translate them into visual motion-ideal for senior secondary students
learning both math and coding.
Understanding Polynomial and Cubic Equations | Maths Explanation for JavaScript Kids
A polynomial equation expresses a relationship involving powers of a variable.
For a cubic curve, the general form is: y = ax3 + bx2 + cx + d;
Here, a, b, c, and d are constants. Every third-degree polynomial equation
has both a maximum and a minimum point.
These turning points are useful in generating smooth motion when graphing or animating curves with JavaScript.
Figure: Graph of cubic equation and polynomial curve in JavaScript
Deriving the Equation of a Cubic Curve | Maths Explanation for JavaScript Kids
To generate a cubic equation, all we will need are the
maximum and minimum points of the curve.
y = ax3 + bx2 + cx + d ----- (eqn 0)
By differentiating y = ax³ + bx² + cx + d, we get
dy/dx = 3ax² + 2bx + c.
Setting the derivative equal to zero at both the maximum and minimum points allows us
to calculate a, b, c, and d.
dy/dx = yI = 3ax2 + 2bx + c
At maximum point, yI = 0
yI|(x = xmax) = 0
3axmax2 + 2bxmax + c = 0 ----- (eqn 1)
At minimum point, yI = 0
yI|(x = xmin) = 0 ----- (eqn 2)
3axmin2 + 2bxmin + c = 0
Subtracting both derived equations
yI|(x = xmax) -
yI|(x = xmin)
⇒
3a(xmax2 - xmin2)
+ 2b(xmax - xmin) = 0
2b(xmax - xmin) =
-3a(xmax2 - xmin2)
b =
-3a(xmax - xmin)(xmax + xmin)
2(xmax - xmin)
b = -3/2a(xmax + xmin)
Substituting b in (eqn 1)
3axmax2 + 2bxmax + c = 0
3axmax2 +
2(-3a/2)(xmax + xmin)xmax
+ c = 0
3axmax2 -
3axmax(xmax + xmin)
+ c = 0
3axmax2 - 3axmax2
- 3axmaxxmin + c = 0 c = 3axmaxxmin
From the general equation(eqn 0)
y = ax3 + bx2 + cx + d
ymax = axmax3 +
bxmax2 + cxmax + d
Substituting for b & c
⇒ ymax = axmax3 -
3/2a(xmax + xmin)xmax2
+ 3axmaxxminxmax + d
ymax = axmax3 -
3/2axmax3 -
3/2axmax2xmin
+ 3axmax2xmin + d
ymax = 1/2[2axmax3
- 3axmax3 - 3axmax2xmin
+ 6axmax2xmin + 2d]
ymax = 1/2[
-axmax3 +
3axmax2xmin + 2d]
2ymax = -a(xmax -
3axmin)xmax2 + 2d
2d = 2ymax + a(xmax -
3axmin)xmax2 d = ymax + a/2(xmax -
3axmin)xmax2
b = -3/2a(xmax + xmin) c = 3axmaxxmin & d = ymax + a/2(xmax -
3axmin)xmax2
These formulas form the mathematical basis of our JavaScript polynomial solver.
Generating and Animating along a Cubic Polynomial Curve in JavaScript
Once we determine the constants, we can implement a JavaScript cubic equation solver
to animate motion along the curve. The following example shows how to code a
polynomial equation in JavaScript using simple variables and HTML5 canvas graphics.
To animate an object along a polynomial curve, increment x continuously and
compute its corresponding y value using the cubic polynomial equation.
This JavaScript code allows you to visualize the trajectory of a polynomial equation
by plotting the curve dynamically on an HTML5 canvas. The roots of the polynomial equation and
the coefficients determine the shape and symmetry of the curve.
Create 2 new files; On Notepad++: File, New.
Call them cubic_path.html and cubic_path.js.
Type out the adjoining JavaScript code for animating an image body through
the path of a cubic / polynomial curve.
Key Takeaways on Cubic Path Animation in JavaScript
In this tutorial, you learned how to:
Understand and derive cubic polynomial equations
Find coefficients from maximum and minimum points
Implement a polynomial equation solver using JavaScript
Animate an object along a polynomial curve
By combining algebraic reasoning with code, senior secondary students can see
how mathematics powers real-world applications like animation, computer graphics, and game design.
Applications of Polynomial Equations JavaScript Programming and STEM Education
Polynomial equations are used in:
Data modeling and curve fitting
Graphics programming for drawing smooth curves
Physics simulations and motion paths
Machine learning and optimization problems
Learning how to solve polynomial equations in JavaScript provides a strong foundation for both mathematics and computational thinking.
Summary: Visualizing Polynomial Equations in JavaScript
Polynomial equations are powerful tools for generating smooth, curved motion in graphics and animations. In this tutorial,
you've learnt how to solve polynomial equations in JavaScript, understand the mathematics of cubic curves,
and create a simple animation that moves an image body along a polynomial equation path.
This interactive JavaScript polynomial solver visually demonstrates
how mathematical equations can be represented as real motion on a graph.
It's a simple yet powerful example of combining coding and mathematics
for educational purposes.
So! JavaScript Fun Practice Exercise - Animate along Cubic Path
As a fun practice exercise, try modifying the values of xmax, xmin, ymax,
and ymin to observe how they affect the polynomial equation graph. You can also:
Write a function to calculate the roots of the polynomial.
Compare your results with a quadratic equation solver.
Build a reusable polynomial equation solver in JavaScript.
<canvasid="cube_path"width="600"height="450"style="border: 1px solid #000000;">
Your browser (version) does not support canvas object; Time to update! </canvas> <buttononclick="moveCubic()">Move</button>
<scriptsrc="CubicPath.js"></script>
</body> </html>
JavaScript Animation Code for cubic_path.js
var canvas = document.getElementById("cube_path"); var context = canvas.getContext("2d");
context.fillStyle ="#888888"; // color for our moving body(circle)
var x_max =150; var y_max =50; var x_min =350; var y_min =350;
// constants var a =-2*(y_max - y_min)/Math.pow((x_max - x_min), 3); var b =-(3/2)* a *(x_max + x_min); var c =3* a * x_max * x_min; var d = y_max +(a /2)*(x_max -3* x_min)*Math.pow(x_max, 2);
var x_start =50; var x = x_start; var y = a *Math.pow(x, 3)+ b *Math.pow(x, 2)+ c * x + d;
// draw a dot
context.beginPath();
context.arc(x, y, 5, 0, 2*Math.PI);
context.fill();
var x_stop =450; function moveCubic(){ // condition for continuing motion if(x <= x_stop){
y = a *Math.pow(x, 3)+ b *Math.pow(x, 2)+ c * x + d;
// redraw dot
context.beginPath();
context.arc(x, y, 5, 0, 2*Math.PI);
context.fill();
x +=20;
setTimeout(function(){ moveCubic(); }, 100); } }