您的位置:首页 > 编程语言 > Java开发

【JAVA 第四章 流程控制语句】课后习题 判断两个圆是否相交 圆和直线的位置关系

2019-06-15 21:12 393 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_43933620/article/details/92193589

知识点:
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.圆与直线的位置关系

  1. d < r 相交
  2. d = r 相切
  3. 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("圆和直线的关系是:相交");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐