用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

找出圆心,计算两个圆心之间的距离是否小于等于两个圆的半径之和

Java生成两个圆判断是否重叠,用java随机画出两个圆,判断它们是不是相交相关推荐

  1. matlab绘制两个函数,用matlab程序 在同一图中绘制两个函数,这两个函数分别是: , ,,matlab怎样同时画出两个函数图...

    导航:网站首页 > 用matlab程序 在同一图中绘制两个函数,这两个函数分别是: , ,,matlab怎样同时画出两个函数图 用matlab程序 在同一图中绘制两个函数,这两个函数分别是: , ...

  2. java 坦克重叠_【Java】我所知道坦克大战(单机版)之画出坦克的实心圆、让圆动起来、双缓冲解决闪烁问题...

    28640发布于 今天 02:47 本篇文章目的 画出坦克的实心圆 让坦克圆动起来 双缓冲解决闪烁问题 一.画出代表坦克的实心圆 我们需要画出一个圆,那么可以使用fillOval方法 fillOval ...

  3. dynamo怎样由线生成体_怎样用最简单的笔刷画出最靓的产品!?

    本文来源:黄山首绘-形演72计教程 怎样用最简单的笔触画出最靓的产品?如果你正在学习工业设计手绘或者曾经学习过工业设计手绘,手绘从初学到进步成长再到熟练运用,你会发现一个规律,尤其是数字手绘.那就是越 ...

  4. 利用Excel饼图画出八等份圆

    想画出八等份圆,在Excel里用八个数据格,数字设为1,插入中选择图表为饼图 如果想要白色的圆,按住圆将设置数据系列格式修改为无填充,边框设置为实线 把图表元素都取消掉就显示一个圆

  5. R语言ggplot2可视化、在一张图中画出两条曲线(two lines in same ggplot2 graph)、使用pdf函数将ggplot2可视化图像保存到指定目录的pdf格式文件中

    R语言ggplot2可视化.在一张图中画出两条曲线(two lines in same ggplot2 graph).使用pdf函数将ggplot2可视化图像保存到指定目录的pdf格式文件中 目录

  6. python如何画3个相切的圆_如何在几何画板中画出三个两两相切的圆

    <圆和圆的位置关系>是人教版九年级数学必学内容,在学习圆与圆的位置关系时,我们都知道圆与圆的位置关系有:相离,外切,相交,内切,内含,它们之间的位置是由圆心距与两半径的长度来确定的.那么如 ...

  7. java 生成 tar.gz_一文教您如何通过 Java 压缩文件,打包一个 tar.gz Filebeat 采集器包...

    一.背景 最近,小哈主要在负责日志中台的开发工作, 等等,啥是日志中台? 俺只知道中台概念,这段时间的确很火,但是日志中台又是用来干啥的? 这里小哈尽量地通俗的说下日志中台的职责,再说日志中台之前,我 ...

  8. java 生成xml乱码_jdom解决中文乱码问题 JAVA生成xml文件帮了我很大的忙

    决解了数据库读取出来 再保存到xml 产生的乱码问题 import java.io.FileOutputStream; import java.io.IOException; import java. ...

  9. java生成1到10的随机数_用java生成一个1到10十个数字随机排列的数组

    效果如图: 代码如下public class ArrayListToAry { public static void main(String[] args) { // 数组 int[] ary = n ...

最新文章

  1. 大手笔 !Julia Computing 获 2400 万美元融资,前 Snowflake CEO 加入董事会
  2. 二者取其一(初遇)_网络流
  3. GridView:根据单元格的值给单元格着色
  4. QT的QFile类的使用
  5. percona-toolkit工具包安装
  6. Andorid之Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法总结
  7. _Linux后台开发6大常用的开源库,让你在同行中脱颖而出
  8. [转] Sublime Text3 配置 NodeJs 环境
  9. Python Parse JSON –转储,加载
  10. 详解Android常用抓包工具的使用方法、技巧-学习笔记20220416
  11. 提高非参数检验功效的潜在方法
  12. SAP 汇率处理总结
  13. HLS_2 数据精度处理
  14. 苹果支付v2 通知(订阅/退款回调通知)
  15. usage.txt-1
  16. 采访座谈快速出稿利器——讯飞智能录音笔SR502
  17. svn不支持中文路径问题的解决
  18. 1、Anaconda安装TensorFlow(一)
  19. venn diagram_Venn Diagram Python软件包:Vennfig
  20. Tkinter 莫烦 基础

热门文章

  1. 2010武汉IT环境~
  2. reRender属性的使用
  3. 基于SSM的医院挂号就诊系统
  4. L2-3 清点代码库 (25 分)(C/C++)
  5. java实现会员充值功能
  6. 路由器网口1一直闪烁正常吗_网口1一直闪烁上不了网
  7. 如何读取环境变量值?Go 每日一库之 godotenv
  8. Qt笔记-Windows管道通信
  9. scrapy开始初始下载
  10. php时间函数不准确,PHP中DATE函数与实际时间相差8小时的解决办法