Creating 2-D Animations on Canvas - bearings

Bearings, measured from the north clockwise give the direction of a point from a point of reference. In the animation, the bearings of B from A is measured.

  • The concept of the bearings as a from navigation point of view.
  • How to change the bearing of a point interactively.
  • How to find the bearing of a given point.
Finding a good book to master HTML5 can be very challenging: there are so many around - most with eye-catching titles and very complex substance.
Therefore, Vivax Solutions strongly recommends Core HTML5 Canvas for those who really want to delve into HTML5.
Please click the image to access Amazon:

Interactive Bearings Tutorial

A bearing is defined as an angle measured clockwise from the north direction.

A bearing is usually expressed in three numbers; therefore, it is called 3-number-bearing.


300 is expressed as 0300.

1300 is expressed as 1300.

3300 is expressed as 3300.

Click the mouse along the slider and watch the updating below for the bearing.



The Code for Interactive Bearings is as follows:


window.setInterval('bear()', 1000)
function bear() {
var a = (Math.PI / 180) * eval(document.getElementById('ran').value);
var z;
var x = 250 + 150 * Math.cos(a);
var y = 200 + 150 * Math.sin(a);
var canvas = document.getElementById('Canvas_Six');
var context_six = canvas.getContext('2d');
context_six.clearRect(0, 0, 500, 400);
// Vertical line
context_six.moveTo(250, 200);
context_six.lineTo(250, 4);
context_six.lineWidth = 5;
context_six.strokeStyle = 'blue';
// Moving line
context_six.moveTo(250, 200);
context_six.lineTo(x, y);
context_six.lineWidth = 5;
context_six.strokeStyle = 'purple';
// Arc
context_six.arc(250, 200, 150, 1.5 * Math.PI, a);
context_six.strokeStyle = 'red';
// Text
context_six.font = 'bold 20pt Calibri';
context_six.fillStyle = 'red';
context_six.fillText('N', 220, 20);
context_six.font = 'bold 20pt Calibri';
context_six.fillStyle = 'blue';
context_six.fillText('A', 246, 220);
context_six.font = 'bold 20pt Calibri';
context_six.fillStyle = 'blue';
context_six.fillText('B', x, y);
context_six.font = 'bold 30pt Calibri';
context_six.fillStyle = 'blue';
context_six.fillText('^', 240, 25);
if (a + 90 <= 90) {
z = 'Bearings of B from A = 0' + (eval(document.getElementById('ran').value) + 90);
document.getElementById('p').innerHTML = z + '0';
else {
z = 'Bearings of B from A = ' + (eval(document.getElementById('ran').value) + 90);
document.getElementById('p').innerHTML = z + '0';


All Canvas Animations




Recommended Reading

Amazon Best Seller


Everything is evolving; so is the layout of a text book. By uniquely presenting the rich contents of the book, the author has elevated positive user experience of reading a text book to a new level: the examples are easy to follow and rich in standard. Highly recommended for those who want to master JavaScript and JQuery.

Progressive Web Apps(PWA)


The significance of app stores is over; progressive web apps is the next big thing. They are just websites that makes the need of going through app stores and need of storing redundant. They work offline too. If you have a reasonable understanding of HTML, CSS and JavaScript, this is the book for you to learn in no time.

HTML5 Canvas Animations


David Geary, in this book, shows how to combine JavaScript and HTML5 Canvas to produce amazing animations; he has set aside a whole chapter to teach you the role of physics in animations. If you want an in-depth understanding about HTML5 Canvas animations, this is a must read.