java 课后习题 判断两个圆是否相交 圆和直线的位置关系

知识点:
1.点到直线的距离公式
d = Ax +By +C = 0 根号 A^2+B ^2

2.直线方程的一般式
Ax + Bx + C = 0
A = y2 -y1
B =x1 -x2
C = x2 y1 - x1 y2
3.两圆关系:
圆心距 大于 半径和 = 相离
圆心距 等于 半径和 = 相切
圆心距 小于 半径和 = 相交
圆心距 + 小圆半径 小于大圆半径 = 包含关系

4.圆与直线的位置关系

d < r 相交
d = r 相切
d > r相离

public class Test{
    public static void main(String[] args) {

        MyCircle mc = new MyCircle();
        mc.r = 4;

        mc.areaCricle();
        System.out.println();

        mc.circumference();
        System.out.println();

        mc.intersect(1,2,3,4,5,6);
        System.out.println();

        mc.myLineCircle(1,2,3,4,5,6);
    }
}

class MyCircle{

    int centerCricle;//圆心
    int r;//半径
    double pi = 3.14;

    public void areaCricle(){
        //计算圆的面积 S = π r的 平方
        System.out.println(pi*r*r);
    }

    public void circumference(){
        //计算圆的周长 c  = 2 π r  = π d
        System.out.println(2*pi*r);
    }

    public void intersect(int x1,int y1,int x2,int y2,int circleR1,int circleR2){
        //判断元是否相交 半径和等于圆心距 相切 半径和 小于圆心距 相离 半径和大于圆心距 相交
        //圆心距+小圆半径 小于大圆半径 是包含关系否则相交

        //求两点距离 既是圆心距
        double d = Math.sqrt(Math.pow(x1-x2,2) + Math.pow(y1-y2,2));

        if (circleR1 + circleR2 < d){
            System.out.println("两圆相离");
        }
        if (circleR1 + circleR2 == d){
            System.out.println("两圆相切");
        }
       if (circleR1 + circleR2 > d){
            System.out.println("两圆相交");
       }

    }

    //直线与圆的位置关系
    public void myLineCircle(int x1,int y1,int x2,int y2,int cx,int cy){
        //公式 d=|Ax0+By0+C|/√(A^2+B^2)

        int a = y2-y1;
        int b = x1-x2;
        int c = x2*y1 - x1*y2;

        double d;

        d=Math.abs(a*cx + b*cy + c) / Math.sqrt(a*a+b*b);

        if (d > r){
            System.out.println("圆和直线的关系是:相离");
        }

        if (d == r){
            System.out.println("圆和直线的关系是:相切");
        }

        if (d < r){
            System.out.println("圆和直线的关系是:相交");
        }
    }

}
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页