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"); } } }