+1
Hỏi về cách xét vị trí tương đối của 2 đường tròn bằng js
E đang làm 1 đề bài xét vị trí tương đối của 2 đường tròn bằng js, có nghĩ ra cách là xét OO' = R + r thì là 2 đường tròn giao nhau.... mà viết vào code e k biết viết sao, đề bài cụ thể như sau ạ :
-
- Tạo module
circle.js
export 1 constructor function tên là Circle
- Tạo module
-
- Circle có 3 property là x, y, radius (toạ độ x, y và bán kính)
-
- Circle có 1 method là isOverlapped (overlap là chồng lấn, đè lên nhau), trả về -1 nếu 2 hình tròn này đè lên nhau, trả về 1 nếu 2 hình tròn không đụng nhau, trả về 0 nếu 2 hình tròn tiếp xúc nhau.
-
- Test thử và code e viết được 1 tí ở link này :https://repl.it/@Cao_Xuan_SangXu/GrippingAllTabs
Phần ý 1 e chưa làm vì đang muốn viết thử vào 1 file xem có chạy được rồi mới tách ra file circle sau :3 mọi người giúp e với ạ, e cảm ơn
Thêm một bình luận
2 CÂU TRẢ LỜI
+8
Bài toán này anh nghĩ em có thể giải quyết như sau:
- Tính khoảng cách giữa tâm 2 đường tròn
- So sánh khoảng các giữa tâm 2 đường tròn, với tổng độ dài 2 bán kính
d > r1 + r2 => return 1
d == r1 + r2 => return 0
d < r1 + r2 => return -1
Code
function Circle(x, y, r) {
this.x = x;
this.y = y;
this.r = r;
};
Circle.prototype.isOverlapped = function(c) {
var d = Math.sqrt(Math.pow(this.x - c.x, 2) + Math.pow(this.y - c.y, 2));
if (d == this.r + c.r) {
return 0;
}
if (d < this.r + c.r) {
return -1;
}
return 1;
}
Em cảm ơn ạ
em cảm ơn ạ 😁