JavaScript

Кто знает как решить эту задачу?

Помогите решить, а то не совсем могу понять условие
Уже определен класс Point - точка с полями x и y.
Определите класс Segment - отрезок прямой, заключенный между двумя точками. Класс должен иметь конструктор, принимающий две точки, и метод contains(point).
Mетод contains получает точку и возвращает true, если точка принадлежит отрезку, и false, если не принадлежит.
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
static distance(a, b) {
const dx = a.x - b.x;
const dy = a.y - b.y;
return Math.hypot(dx, dy);
}
}

class Segment {
constructor(p1, p2) {
this.p1 = p1;
this.p2 = p2;
}
contains(p) {
let res = (p.x - this.p1.x) / (this.p2.x - this.p1.x) === (p.y - this.p1.y) / (this.p2.y - this.p1.y);
if (res) {
const ds = Point.distance(this.p1, this.p2);
const da = Point.distance(this.p1, p);
const db = Point.distance(this.p2, p);
if (da + db > ds) res = false;
}
return res;
}
}
Александр Свинарёв
Александр Свинарёв
78 573
Лучший ответ
Пиши отдельный класс segment. На вход в конструкторе идут 2 точки (видимо, как раз из того point). В метод contains передаётся ещё одна точка. Надо внутри метода определить, находится ли третья точка на отрезке между первыми двумя или не находится
Ali Kh
Ali Kh
75 073
Что непонятно в условии? Должно работать как-то так:
var p1 = new Point(1, 2); // это если у Point есть такой конструктор
var p2 = new Point(11, 22);
var s1 = new Segment(p1, p2);
var p3 = new Point(3, 5);
console.log(s1.contains(p3));
Сложность в чем?

В том, что не знаете школьный курс геометрии и не можете составить уравнение для проверки?
k=(y2-y1)/(x2-x1)
b=y1-kx1

Или проблема с кодом?
Фёдор Байдулов
Фёдор Байдулов
24 031