まあひねりの何もないコードですが、なぜか間違えたまま半年放置してしまっていたという笑えない事態になっていました…
コード
A、B、PをPointクラスのインスタンスとします。
class Point{ constructor(x, y) { this.x = x; this.y = y; } } const A = new Point(1, 1); const B = new Point(5, 5); const P = new Point(3, 3); if (Math.max(A.x, B.x) >= P.x && P.x >= Math.min(A.x, B.x)) { // AとBの間にPのx座標がある if (Math.max(A.y, B.y) >= P.y && P.y >= Math.min(A.y, B.y)) { // AとBの間にPのy座標ある if ((A.y - B.y) * (P.x - A.x) == (P.y - A.y) * (A.x - B.x)) { // AとBを通る直線上にある } } } // 1行で書くなら (Math.max(A.x, B.x) >= P.x && P.x >= Math.min(A.x, B.x)) && (Math.max(A.y, B.y) >= P.y && P.y >= Math.min(A.y, B.y)) && ((A.y - B.y) * (P.x - A.x) == (P.y - A.y) * (A.x - B.x));