题目
1.输入一个圆的圆心坐标(x,y)半径r
2.输入一个直线的斜率k,及与直线与y轴交点纵坐标(0,b) (要考虑k存不存的情况) y=kx+b 斜切式 k有不存在的情况
输入一直线 ax+by+c=0,中的啊a,b,c的值 (一般式)
判断园与直线的位置关系
若直线与圆存在交点,求交点的坐标
import java.util.Scanner;
import java.lang.Math;
public class Triangle
{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Enter the coordinates of the center of the circl:");
System.out.print("Enter X:");
double x = sc.nextDouble();
System.out.print("Enter y:");
double y = sc.nextDouble();
System.out.print("input radius r:");
double r = sc.nextDouble();
System.out.print("Enter A:");
double A=sc.nextDouble();
System.out.print("Enter B:");
double B=sc.nextDouble();
System.out.print("Enter C:");
double C=sc.nextDouble();
Circle crc = new Circle(x,y,r,A,B,C);
crc.position();
crc.equation();
}
}
class Circle{
public Circle(double x,double y,double r,double A,double B,double C){
this.x = x;
this.y = y;
this.r = r;
this.A = A;
this.B = B;
this.C = C;
}
public double getX()
{
return x;
}
public void position(){
double abs =Math.abs(A*x+B*y+C);
double d=abs/Math.sqrt(A*A+B*B);
if(d > r ){
System.out.println("disjoint");
}else if(d == r){
System.out.println("Tangency");
}else if(d < r){
System.out.println("intersect");
}
}
public void equation()
{
if(B == 0){
double a=1;
double b=-2*y;
double c=(C/A+x)*(C/A+x)+y*y-r*r;
uqe(a,b,c);
}else{
double a =1+((A*A)/(B*B));
double b =2*((A/B)*(C/B+y)-x);
double c =(x*x)+(C/B+y)*(C/B+y)-r*r;
uqe(a,b,c);
}
}
private void uqe(double a,double b,double c)
{
double k=b*b-4*a*c;
double d= Math.sqrt(k);
double x1 = (-b+d)/2*a;
double x2 = (-b-d)/2*a;
double y1,y2;
if(k<0){
System.out.println("unsolvable");
}else if(d == 0){
System.out.print("only:X1="+x1);
y1 = -(A*x1+C)/B;
System.out.println(",y1=:"+y1);
}else{
System.out.print("Two solutions :");
y1 = -(A*x1+C)/B;
System.out.print("x1 = "+x1);
System.out.println(",y1=:"+y1);
y2 = -(A*x2+C)/B;
System.out.print("x2 = "+x2);
System.out.print(",y2=:"+y2);
}
}
private double x;
private double y;
private double r;
private double A;
private double B;
private double C;
}