Detecting Circular Regions in JavaScript | HTML5 Canvas Tutorial
Using the Circle Equation for Region Detection
In this tutorial, you'll learn how to detect a circular region in JavaScript using the circle equation.
The equation of a circle, (x - a)² + (y - b)² = r², defines all points (x, y) that are exactly r units away
from the center (a, b). This formula helps determine whether a point or moving object lies
inside or outside a circular region on an HTML5 Canvas.
Understanding how to check whether a point or object lies inside a circle region is useful in
JavaScript geometry programming, especially for animations, canvas graphics, and collision detection.
Understanding the Circle Equation | Maths Explanation for JavaScript Kids
As already explained extensively in the How to Draw and Animate a Circle in JavaScript tutorial,
the equation of a circle with centre (a, b) and radius (r) is:
(x - a)2 + (y - b)2 = r2;
It can be deduced that
y = b ± √(r2 - (x - a)2)
;
And conversely
x = a ± √(r2 - (y - b)2).
Hence, the boundaries of any circle lie in the range
b - √(r2 - (xexternal - a)2)
≤ y ≤
b + √(r2 - (xexternal - a)2)
and
a - √(r2 - (yexternal - b)2)
≤ x ≤
a + √(r2 - (yexternal - b)2)
In other words,
* If (x, y) satisfies this equation, the point lies on the circle.
* If (x - a)^2 + (y - b)^2 < r^2, the point is inside the circular region.
* If (x - a)^2 + (y - b)^2 > r^2, the point is outside the circle.
Algorithm to Detect Entrance into Circular Region in JavaScript
To detect when a second shape enters the circle, we use its coordinates in the circle equation to
check if they fall within the upper, lower, left, and right boundaries:
That is, whether the y position of the second body lies between the top and bottom
limits of the circle boundary at the x position of the second body:
y2nd_img(top) >
b - √(r2 - (x2nd_img - a)2)
and y2nd_img(bottom) <
b + √(r2 - (x2nd_img - a)2)
;
And at the same time, whether the x position of the second body lies
between the left and right limits of the circle boundary at the y position of the second body:
x2nd_img(left) >
a - √(r2 - (y2nd_img - b)2)
and x2nd_img(right) <
a + √(r2 - (y2nd_img - b)2)
Figure: JavaScript circle region detection example on HTML5 canvas
Create 2 new files; On Notepad++: File, New.
Call them circular_region.html and circular_region.js.
Type out the adjoining JavaScript code for detecting the instance a travelling body crosses the boundary of a circle.
How the JavaScript Circular Region Detection Code Works
The code compares the distance of a point from the circle's centre with the radius.
If the distance is smaller than or equal to the radius, the point is inside the circular region.
🟢 A green point shows it's inside the circular region.
🔴 A red point shows it's outside.
The code above demonstrates JavaScript circle collision detection,
a common concept in canvas-based animations and game design.
This example shows how maths meets programming - turning the circle equation into real-time JavaScript geometry detection.
Key Takeaways on Circular Region Detection in JavaScript
In this tutorial, you've learned that:
The circle equation defines a circular region mathematically.
With a few lines of JavaScript code, you can detect whether a point is inside or outside the circle.
This principle links senior secondary maths and practical JavaScript applications, preparing you for real-world coding projects.
With just a few lines of JavaScript, you've been able to check when a point enters
or leaves a circular boundary - a technique useful in
games, animations, and simulations.
The tutorial also features a JavaScript canvas example
that visualizes circle region detection in real time.
FAQs: Circle Equation and JavaScript
What is a circular region in JavaScript?
A circular region refers to the area within a circle defined by its radius on the HTML5 canvas.
In JavaScript, you can detect whether a point or shape lies inside it using the circle equation.
How do you detect a circle boundary in JavaScript?
You can calculate the distance between a point and the circle's center and compare it to the radius -
if the distance is less than the radius, the point is inside the circle.
Can this be used for games or simulations?
Yes! Circle region detection is common in JavaScript game development, collision detection, and animations.
Summary: Visualizing Circular Region in JavaScript
In this lesson, you've learnt how to detect a circular region in JavaScript
using the circle equation from coordinate geometry: (x - a)² + (y - b)² = r².
This powerful formula helps determine whether a point or object is inside, on, or outside a circle.
It connects senior secondary mathematics with JavaScript geometry programming
through step-by-step examples and code.
By combining mathematics and JavaScript coding, you can easily detect
when objects cross a circular boundary. This exercise strengthens your understanding of
circle equations and introduces essential concepts in JavaScript graphics programming.
So! JavaScript Fun Practice Exercise - Detect Circular Region
As a fun practice exercise, try changing the values of (a), (b), (r), (x), and (y) to test
different points and circle sizes. You can also extend this idea to moving body detection inside a circle,
or collision detection in small games and interactive animations.
<canvasid="circle_region"width="600"height="450"style="border: 1px solid #000000;">
Your browser (version) does not support canvas object; Time to update! </canvas> <buttononclick="circledSquare()">Glide</button> <buttononclick="clearTimeout(clr_obj)">Stop</button>
<scriptsrc="CircularRegion.js"></script>
</body> </html>
JavaScript Animation Code for circular_region.js
var canvas = document.getElementById("circle_region"); var context = canvas.getContext("2d");
context.fillStyle ="#888888"; // color for our moving body(circle)
// coordinates for the square var x_square =10; var y_square =250; var sq_length =100; // draw the square
context.fillRect(x_square, y_square, sq_length, sq_length);
//circle coordinates var a =300; var b =225; var r =150; // radius //draw circle
context.beginPath();
context.arc(a, b, r, 0, 2*Math.PI);
context.stroke();
function circledSquare(){ // condition for continuing motion if(x_square + sq_length <600){
context.clearRect(x_square -10, y_square, sq_length, sq_length); // erase previous square
var square_left = x_square; var square_right = x_square + sq_length; var square_top = y_square; var square_bottom = y_square + sq_length; // determinants for each side of the square var x_left_det =Math.sqrt(Math.pow(r, 2)-Math.pow((square_left - a), 2)); var x_right_det =Math.sqrt(Math.pow(r, 2)-Math.pow((square_right - a), 2)); var y_up_det =Math.sqrt(Math.pow(r, 2)-Math.pow((square_top - b), 2)); var y_down_det =Math.sqrt(Math.pow(r, 2)-Math.pow((square_bottom - b), 2));
// check the bounds of the circle if(square_top > b - x_left_det && square_bottom < b + x_left_det &&
square_top > b - x_right_det && square_bottom < b + x_right_det &&
square_left > a - y_up_det && square_right < a + y_up_det &&
square_left > a - y_down_det && square_right < a + y_down_det){
context.fillStyle ="#00ff00"; // color for our moving body(square) inside our circle }else{
context.fillStyle ="#888888"; // color for our moving body(square) outside our circle }