Помогите решить, а то не совсем могу понять условие
Уже определен класс Point - точка с полями x и y.
Определите класс Segment - отрезок прямой, заключенный между двумя точками. Класс должен иметь конструктор, принимающий две точки, и метод contains(point).
Mетод contains получает точку и возвращает true, если точка принадлежит отрезку, и false, если не принадлежит.
JavaScript
Кто знает как решить эту задачу?
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;
}
}
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;
}
}
Пиши отдельный класс segment. На вход в конструкторе идут 2 точки (видимо, как раз из того point). В метод contains передаётся ещё одна точка. Надо внутри метода определить, находится ли третья точка на отрезке между первыми двумя или не находится
Что непонятно в условии? Должно работать как-то так:
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));
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
Или проблема с кодом?
В том, что не знаете школьный курс геометрии и не можете составить уравнение для проверки?
k=(y2-y1)/(x2-x1)
b=y1-kx1
Или проблема с кодом?
Похожие вопросы
- Помогите решить задачу на языке java
- Помогите решить задачу
- нужно решить задач с помощь js ...
- Не могу решить задачу по JS
- помогите решить задачу по javascript
- Помогите решить задачи в Javascript:
- Как решить в js данную задачу: см. внутри.
- Помогите решить задачу по js! Программа выводит все заглавные буквы в тексте. Как распределить эти буквы по алфавиту?
- Помогите решить задачу в JavaScript, тема: матрицы.
- С помощью JavaScript можно решить практическую любую задачу?