Detect if the given point lies on the line in Line Chart - CanvasJS JavaScript Charts

Detect if the given point lies on the line in Line Chart - CanvasJS JavaScript Charts

by canvasjs

HTML

<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<br/><!-- Just so that JSFiddle's Result label doesn't overlap the Chart -->
<div id="chartContainer" style="height: 360px; width: 100%;"></div>

JavaScript

var chart = new CanvasJS.Chart("chartContainer", {
	title: {
  	text: "Detect if the point on Line"
  },
  data: [
    {
      type: "line",
      dataPoints: [
        { x: 10, y: 71 },
        { x: 20, y: 55 },
        { x: 30, y: 50 },
        { x: 40, y: 65 },
        { x: 50, y: 95 },
        { x: 60, y: 68 },
        { x: 70, y: 28 },
        { x: 80, y: 34 },
        { x: 90, y: 14 }
      ]
    }					
  ]
});

chart.render();
var startX = chart.axisX[0].convertValueToPixel(10);
var endX = chart.axisX[0].convertValueToPixel(20);
var startY = chart.axisY[0].convertValueToPixel(71);
var endY = chart.axisY[0].convertValueToPixel(55);

var pointX = chart.axisX[0].convertValueToPixel(10);
var pointY = chart.axisY[0].convertValueToPixel(71);
var pointIsOnLine = isOnLine(startX, startY, endX, endY, pointX, pointY);

if(pointIsOnLine)
	console.log("Given point is on the line");
else
	console.log("Given point is not he line");

function isOnLine(startX, startY, endX, endY, px, py) {
    var f = function(someX) { return (endY - startY) / (endX - startX) * (someX - startX) + startY; };
    return Math.abs(f(px) - py) < 1e-6 // tolerance, rounding errors
        && px >= startX && px <= endX;      // are they also on this segment?
}