2013-12-01 3 views
0

Я хочу создать функцию-конструктор, создающую объекты окружности. Мне нужно добавить к нему два метода. Я хочу, чтобы первый метод (translate()) принимал два параметра числа и добавляет первый в x-координату Circle и добавляет второй к y-координате Circle.Функция конструктора, которая создает объекты окружности javascript

и я хочу, чтобы второй метод принимал параметр Circle и возвращал да, если два круга пересекаются, но в противном случае возвращает false.

function Circle (xPoint, yPoint, radius) { 
this.x = xPoint; 
this.y = yPoint; 
this.r = radius; 
} 

function translate(horiz, vert) { 
return ((horiz + this.x) && (vert + this.y)); 
} 

Как бы реализовать второй метод, пересекает(), метод?

+0

Во-первых, что нет на самом деле не OO method.'this.y' имеет никакой ссылки на 'Circle' объекта ... Во-вторых, то, что вы уже пробовали для 'intersect()' и почему он не работает? – BenM

ответ

0

Здесь вы идете:

function Circle(x, y, r) { 

    this.x = x; 
    this.y = y; 
    this.r = r; 

    this.translate = function(h, v) { 
     this.x += h; 
     this.y += v; 
    }; 

    this.intersect = function(circle) { 
     var centerDistance = Math.pow(this.x - circle.x, 2) + Math.pow(this.y - circle.y, 2); 
     return Math.pow(this.r - circle.r, 2) <= centerDistance && centerDistance <= Math.pow(this.r + cirle.r, 2); 
    }; 

} 
+0

[http://stackoverflow.com/questions/8367512/algorithm-to-detect-if-a-circles-intersect-with-any-other-circle-in-the-same-pla] для обсуждения о пересечении алгоритм – Samy

+0

, так как бы вы сделали это возвратом true, если они пересекаются? – user2985900

+0

Это уже случай – Samy

Смежные вопросы