`
jiayj198609
  • 浏览: 147029 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

用java随机画出两个圆,判断它们是否相交

    博客分类:
  • Java
阅读更多
 import java.awt.*;  
 import java.util.Random;  
 import javax.swing.*;  
 import javax.swing.border.TitledBorder;  
  
 /*** 
   7.  * 随机画出两个圆,判断它们是否相交 
   8.  * @author Firklaag 
   9.  * @ver 0.01 
  10.  * 编写代码实现同一平面内两圆是否碰撞,其中:第一个圆圆心坐标为(x1,y1),
		半径是r1,第二个圆圆心坐标为(x2,y2),
		半径是r2,数据结构自定义。 
  11.  */  
public class CheckCircul extends JFrame {  
    //定义画布  
    private MyPanel myPanel = new MyPanel();  
 
   public CheckCircul() {  
       add(myPanel);  
    }  
 
     public static void main(String[] args) {  
         CheckCircul demo = new CheckCircul();  
         run(demo, 800, 700);  
       }  
      /* 
     * 运行辅助方法 
        */  
    public static void run(final JFrame f, final int width, final int height) {  
       SwingUtilities.invokeLater(new Runnable() {  
            public void run() {  
                  f.setTitle(f.getClass().getSimpleName());  
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
                 f.setSize(width, height);  
                 f.setVisible(true);  
             }  
          });  
     }  
    
  }  
  /* 
  40.  * 画布类 
  41.  */  
 class MyPanel extends JPanel {  
     //定义标签  
     private JLabel label = new JLabel();  
     //定义随机数  
      private Random ran = new Random();  
    //定义两个圆  
     private Circul tom;  
     private Circul jerry;  
   
     /** 
  52.      * 生成两个圆并增加标签到画布 
  53.      */  
    public MyPanel() {  
        tom = new Circul(ran.nextInt(300), ran.nextInt(300), ran.nextInt(400));  
          jerry = new Circul(ran.nextInt(300), ran.nextInt(300), ran.nextInt(400));  
        this.setBorder(new TitledBorder("CheckCircul"));  
        add(label);  
     }  
  
    @Override  
    protected void paintComponent(Graphics g) {  
        //画出两个圆  
       Rectangle rec1 = tom.draw(g);  
        Rectangle rec2 = jerry.draw(g);  
        //判断其是否相交  
        if (rec1.intersects(rec2)) {  
             label.setText("相交");  
        } else {  
             label.setText("不相交");  
          }  
      }  
    
  }  
   /** 
  76.  * 定义圆形类,类中不仅有圆的属性,还有画圆的方法 
  77.  */  
  class Circul {  
      private int x;  
       private int y;  
      private int r;  
    
      public Circul(int x, int y, int r) {  
         this.x = x;  
        this.y = y;  
           this.r = r;  
      }  
   
      public Rectangle draw(Graphics g) {  
          Graphics2D g2d = (Graphics2D) g.create();  
          //调用抗锯齿API  
         g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,  
                  RenderingHints.VALUE_ANTIALIAS_ON);  
         g2d.drawOval(x, y, r, r);  
          return new Rectangle(x, y, r, r);  
    
      }     
      public int getX() {  
         return x;  
      }  
   
     public void setX(int x) {  
         this.x = x;  
     }  
    
     public int getY() {  
         return y;  
     }  
   
      public void setY(int y) {  
          this.y = y;  
    }    
     public int getR() {  
          return r;  
     }  
   
     public void setR(int r) {  
         this.r = r;  
     }  
  }  
分享到:
评论
22 楼 hyhyhy108 2010-12-02  
找出圆心,计算两个圆心之间的距离是否小于等于两个圆的半径之和
21 楼 xiaotian8945 2010-11-28  
在同一平面中:
A圆的半径为x,B圆的半径为y,两圆圆心距离为z。
如果x+y < z, 则两圆不相交;
如果x-y < z < x+y,则两圆相交;
如果|x-y| > z,则两圆内含。

LZ有空看看初中数学吧
20 楼 passionke 2010-11-28  
转别人的文章是要说明清楚阿
不过原版人也V5  直接杀过来了 呵呵
19 楼 lwz777 2010-11-28  
同一平面内,两圆的半径就可以做到!
18 楼 jorneyR 2010-11-28  
realcbb 写道
jorneyR 写道
判断两圆心距离与两圆的半径之和就可以了


要看包含算不算相交


是的,这个时间确实需要使用原心坐标和半径差来进一步判断。
17 楼 tovenja 2010-11-27  
如果内含呢
16 楼 lzrzhao 2010-11-27  
判断圆心的距离是否小于两个圆的半径之和就可以了
15 楼 smzd 2010-11-27  
哈哈,版权人找上门来了
14 楼 elementstorm 2010-11-27  
隐藏之...最讨厌这样的
13 楼 hjg1988 2010-11-27  
如果真是这样,那得bs一下楼主
12 楼 爪哇岛岛主 2010-11-26  
兄弟,你还要努力啊
11 楼 softor 2010-11-26  
今天才知道Javaeye还有这样的人啊~
10 楼 gundumw100 2010-11-26  
初中数学没学好吧。
9 楼 haitaohehe 2010-11-26  
楼主怎么这样啊?
8 楼 Firklaag 2010-11-26  
有人转了我的文章,我就顺便说一下,
这个东西是我面试时做的,一心只想快速完成,基本无难度。
7 楼 aabcc 2010-11-26  
又开始 转载别人的 不加说明吗?

LZ你适可而止吧。
6 楼 Firklaag 2010-11-26  
同学。。。你怎么把我的博客乱贴啊。。。
连注释都还是我的名字 没改  @author Firklaag  

之前看你乱贴别人的,转载要说明啊
5 楼 su1216 2010-11-26  
外离 外切 相交 内切 内含
一共5种情况
4 楼 realcbb 2010-11-26  
jorneyR 写道
判断两圆心距离与两圆的半径之和就可以了


要看包含算不算相交
3 楼 jorneyR 2010-11-26  
判断两圆心距离与两圆的半径之和就可以了

相关推荐

    求两圆是否相交 java

    求两圆是否相交 java 求两圆是否相交 java

    C++判断两圆是否相交并输出结果

    (1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法; (2)定义一个圆形类,其属性包括圆心和半径;...(3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。

    java求两圆相交坐标

    使用java求两个圆相交的坐标,下载前请参见博客:http://blog.csdn.net/u013780605/article/details/52673223,文章中有具体的过程,该资源为工程文件,可直接编译运行。

    判断两圆是否相交

    创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。 方法:定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;定义一个Circl类,其属性包括圆心和半径。

    Unity3D判断两个物体相交脚本2

    Unity3D判断两个物体相交脚本 Posted on 2013年02月25日 by U3d / Unity3D脚本/插件/被围观 285 次 Unity3D中

    geotools 判断点线是否相交 用的jar包

    geotools 判断几何要素的交点 当时想到用的GDAL 但是 交点函数返回的对象总是null , 改用 GeoTools 这个库,需要用到jar 到官网上下载,主要是jts-core-1.16.0.jar

    求两个椭圆相交的面积问题

    现在你的任务是:给定两个满足上述要求的椭圆,计算相交面积。 输入 输入包括多个测试用例。第一行为测试用例个数n(n)。 在每一个测试用例包含两行,第一行A的描述轨迹,另一行描述B的轨迹,每一个描述包含两...

    flash判断旋转矩形是否相交

    判断任意位置旋转的矩形是否相交,相交输出true,否则输出false。

    两圆求交点算法实现Java代码

    已知两圆圆心与半径求两圆交点的算法实现。之前做一个小项目需要相关的算法,在网上搜了半天竟然搜不到,所以自力更生写了一个,效果不错,不相交,交于一点,交于两点都包括了。

    编程判断两个链表是否相交

    给出两个单向链表的头指针(如图3-8 所示),比如h1、h2,判断这两个链表是否 相交。这里为了简化问题,我们假设两个链表均不带环。

    计算两个圆相交的交点坐标值

    本范例通过扩展,实现计算地图上绘制的两个圆的相交交点的坐标值,并将其展现在地图上。

    判断两条线段是否相交

    直线相交容易判断,但判断两条线段是否相交有些困难,本代码不但能判断是否相交,还能求出交点坐标。

    判断两线段是否相交,相交求交点

    判断通过空间的坐标点确定的选段是否相交,相交的求出交点

    编程判断两个链表是否相交.pdf

    分析与解法 这样的一个问题,也许我们平时很少考虑。但在一个大的系统中,如果出现两个链表相 交的情况,而且释放了其中一个链表的...的两个链表,我们希望在释放一个链表之前知道是否有其他链表跟当前这个链表相交。

    判断两直线是否相交 C++ MFC

    用VC6.0实现的MFC单文档程序,用鼠标在屏幕上任意画两条直线,判断两直线是否相交。

    代码判断两条线段是否相交(两种实现算法)

    编程实现了如何判断一个平面里的两条线段是否相交!

    c# vb.net 检测两圆相交算法

    c# vb.net 检测两圆相交算法

    C#源码-扇形和圆的相交判断算法

    将扇形和圆相交的判定算法封装到一个类中,直接传参,得到bool值

    西南交通大学《算法设计与分析》实验1 实验报告 求两个圆相交部分的面积(仅供参考)

    已知两个圆的圆心坐标以及半径,求两个圆相交部分的面积,并精确到小数点后3位。要求: (1) 用自然语言描述法描述上述问题的求解算法。 (2) 绘制算法程序流程图。 (3) 用伪代码描述上述问题的求解算法。 (4)...

    两条直线相交判断方法

    这个方法很简单,几句就可以,经过本人呕心沥血思考,终于想出这么简单的两句判断直线相交,真心了不起直线相交,真心了不起直线相交,真心了不起

Global site tag (gtag.js) - Google Analytics