读书人

用java随机画出两个圆判断它们是不是

发布时间: 2012-12-25 16:18:29 作者: rapoo

用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;       }    }  
3 楼 jorneyR 2010-11-26 判断两圆心距离与两圆的半径之和就可以了 4 楼 realcbb 2010-11-26 jorneyR 写道判断两圆心距离与两圆的半径之和就可以了

要看包含算不算相交 5 楼 su1216 2010-11-26 外离 外切 相交 内切 内含
一共5种情况 6 楼 Firklaag 2010-11-26 同学。。。你怎么把我的博客乱贴啊。。。
连注释都还是我的名字 没改 @author Firklaag

之前看你乱贴别人的,转载要说明啊 7 楼 aabcc 2010-11-26 又开始 转载别人的 不加说明吗?

LZ你适可而止吧。 8 楼 Firklaag 2010-11-26 有人转了我的文章,我就顺便说一下,
这个东西是我面试时做的,一心只想快速完成,基本无难度。 9 楼 haitaohehe 2010-11-26 楼主怎么这样啊? 10 楼 gundumw100 2010-11-26 初中数学没学好吧。 11 楼 softor 2010-11-26 今天才知道Javaeye还有这样的人啊~ 12 楼 爪哇岛岛主 2010-11-26 兄弟,你还要努力啊 13 楼 hjg1988 2010-11-27 如果真是这样,那得bs一下楼主 14 楼 elementstorm 2010-11-27 隐藏之...最讨厌这样的 15 楼 smzd 2010-11-27 哈哈,版权人找上门来了
16 楼 lzrzhao 2010-11-27 判断圆心的距离是否小于两个圆的半径之和就可以了 17 楼 tovenja 2010-11-27 如果内含呢 18 楼 jorneyR 2010-11-28 realcbb 写道jorneyR 写道判断两圆心距离与两圆的半径之和就可以了

要看包含算不算相交

是的,这个时间确实需要使用原心坐标和半径差来进一步判断。 19 楼 lwz777 2010-11-28 同一平面内,两圆的半径就可以做到! 20 楼 passionke 2010-11-28 转别人的文章是要说明清楚阿
不过原版人也V5 直接杀过来了 呵呵 21 楼 xiaotian8945 2010-11-28 在同一平面中:
A圆的半径为x,B圆的半径为y,两圆圆心距离为z。
如果x+y < z, 则两圆不相交;
如果x-y < z < x+y,则两圆相交;
如果|x-y| > z,则两圆内含。

LZ有空看看初中数学吧 22 楼 hyhyhy108 2010-12-02 找出圆心,计算两个圆心之间的距离是否小于等于两个圆的半径之和

读书人网 >编程

热点推荐