
Inside Circle
Cho tọa độ tâm và bán kính của một đường tròn cùng tọa độ của một điểm trên mặt phẳng 2 chiều
Kiểm tra xem điểm có nằm trong (hoặc nằm trên viền) của đường tròn hay không?
Ví dụ
-
Với
point = [1, 1]
,center = [2, 2]
, vàradius = 1
, kết quảinsideCircle(point, center, radius) = false
. -
Với
point = [1, 1]
,center = [0, 0]
, vàradius = 3
, kết quảinsideCircle(point, center, radius) = true
.
Đầu vào/Đầu ra
-
[Thời gian chạy] 0.5 giây
-
[Đầu vào] array.integer point
Mảng 2 phần tử thể hiện tọa độ của điểm cần kiểm tra.
Điều kiện:-100 ≤ point[i] ≤ 100
. -
[Đầu vào] array.integer center
Mảng 2 phần tử thể hiện tọa độ tâm của đường tròn
Điều kiện:-10 ≤ center[i] ≤ 10
. -
[Đầu vào] integer radius
Bán kính đường tròn.
Điều kiện:1 ≤ radius ≤ 5
. -
[Đầu ra] boolean
true
nếupoint
nằm trong đường tròn,false
nếu ngược lại.
Lý thuyết :
- Cho hệ
Oxy
, 1 điểmA
(x, y)
và 1 hình tròn có tâm tạiC(xC, yC)
, bán kínhR
- Khi đó có 3 quan hệ :
dist(A, C) < R
: điểmA
nằm trong hình tròndist(A, C) = R
: điểmA
ở trên biên hình tròndist(A, C) > R
: điểmA
nằm ngoài hình trònvới
dist(A, C)
là khoảng cách giữa điểmA
và điểmC
- Code minh họa
int sqr(int x) { // tra ve binh phuong cua 1 so
return x * x;
}
int checkPointCircle(vector <int> A, vector <int> C, int R) {
int sqr_dist = sqr(C[0] - A[0]) + sqr(C[1] - A[1]);
// binh phuong dist(A, C)
if (sqr_dist < R * R) return -1; // trong hinh tron
if (sqr_dist == R * R) return 0; // tren bien hinh tron
if (sqr_dist > R * R) return 1; // ngoai hinh tron
}
Hướng dẫn bài tập.
Code mẫu:
Ngôn ngữ C++:
bool insideCircle(std::vector<int> point, std::vector<int> center, int radius)
{
return (pow((center[0]-point[0]),2)+pow((center[1]-point[1]),2) <= radius*radius)?true:false;
}
Post Comment