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;
}
}
分享到:
相关推荐
(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法; (2)定义一个圆形类,其属性包括圆心和半径;...(3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。
求两圆是否相交 java 求两圆是否相交 java
使用java求两个圆相交的坐标,下载前请参见博客:http://blog.csdn.net/u013780605/article/details/52673223,文章中有具体的过程,该资源为工程文件,可直接编译运行。
创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。 方法:定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;定义一个Circl类,其属性包括圆心和半径。
Unity3D判断两个物体相交脚本 Posted on 2013年02月25日 by U3d / Unity3D脚本/插件/被围观 285 次 Unity3D中
geotools 判断几何要素的交点 当时想到用的GDAL 但是 交点函数返回的对象总是null , 改用 GeoTools 这个库,需要用到jar 到官网上下载,主要是jts-core-1.16.0.jar
现在你的任务是:给定两个满足上述要求的椭圆,计算相交面积。 输入 输入包括多个测试用例。第一行为测试用例个数n(n)。 在每一个测试用例包含两行,第一行A的描述轨迹,另一行描述B的轨迹,每一个描述包含两...
判断任意位置旋转的矩形是否相交,相交输出true,否则输出false。
本范例通过扩展,实现计算地图上绘制的两个圆的相交交点的坐标值,并将其展现在地图上。
给出两个单向链表的头指针(如图3-8 所示),比如h1、h2,判断这两个链表是否 相交。这里为了简化问题,我们假设两个链表均不带环。
用VC6.0实现的MFC单文档程序,用鼠标在屏幕上任意画两条直线,判断两直线是否相交。
已知两圆圆心与半径求两圆交点的算法实现。之前做一个小项目需要相关的算法,在网上搜了半天竟然搜不到,所以自力更生写了一个,效果不错,不相交,交于一点,交于两点都包括了。
直线相交容易判断,但判断两条线段是否相交有些困难,本代码不但能判断是否相交,还能求出交点坐标。
判断通过空间的坐标点确定的选段是否相交,相交的求出交点
分析与解法 这样的一个问题,也许我们平时很少考虑。但在一个大的系统中,如果出现两个链表相 交的情况,而且释放了其中一个链表的...的两个链表,我们希望在释放一个链表之前知道是否有其他链表跟当前这个链表相交。
编程实现了如何判断一个平面里的两条线段是否相交!
c# vb.net 检测两圆相交算法
将扇形和圆相交的判定算法封装到一个类中,直接传参,得到bool值
已知两个圆的圆心坐标以及半径,求两个圆相交部分的面积,并精确到小数点后3位。要求: (1) 用自然语言描述法描述上述问题的求解算法。 (2) 绘制算法程序流程图。 (3) 用伪代码描述上述问题的求解算法。 (4)...
这个方法很简单,几句就可以,经过本人呕心沥血思考,终于想出这么简单的两句判断直线相交,真心了不起直线相交,真心了不起直线相交,真心了不起