Bài tập xác định vị trí tương đối của một điểm so với đường tròn.

Đề bài
Cho 1 điểm A có tọa độ (xA;yA), đường tròn tâm O có tọa độ (xO;yO) và bán kính r.
Input: Tọa độ điểm A, tâm O và r.
Output: Vị trí điểm A so với đường tròn (A nằm trong đường tròn, nằm ngoài đường tròn hay nằm trên đường tròn).
Phân tích
Chúng ta chỉ cần tính bình phương khoảng cách từ điểm A tới tâm O của đường tròn. Sau đó xét ba trường hợp sẽ xảy ra như sau:
– Nếu khoảng cách nhỏ hơn bình phương bán kính: Điểm A nằm trong đường tròn.
– Nếu khoảng cách bằng bình phương bán kính: Điểm A nằm trên đường tròn.
– Nếu khoảng cách lớn hơn bình phương bán kính: Điểm A nằm ngoài đường tròn.
Code mẫu
package com.ngockhuong;
import java.util.Scanner;
public class Exercise {
public static void main(String[] args) {
int xA, yA, xO, yO, r;
Scanner input = new Scanner(System.in);
System.out.print("Nhập hoành độ của điểm A: ");
xA = input.nextInt();
System.out.print("Nhập tung độ của điểm A: ");
yA = input.nextInt();
System.out.print("Nhập hoành độ tâm O của đường tròn: ");
xO = input.nextInt();
System.out.print("Nhập tung độ tâm O của đường tròn: ");
yO = input.nextInt();
System.out.print("Nhập bán kính: ");
r = input.nextInt();
// bình phương bán kính.
int rbinhphuong = r * r;
// bình phương khoảng cách đoạn OA.
int OAbinhphuong = (xA - xO) * (xA - xO) + (yA - yO) * (yA - yO);
if (OAbinhphuong < rbinhphuong) {
System.out.println("A nằm trong đường tròn");
} else if (OAbinhphuong == rbinhphuong) {
System.out.println("A nằm trên đường tròn");
} else {
System.out.println("A nằm ngoài đường tròn");
}
}
}