Java_洪泽海_1105_homework

本文介绍了使用Java实现的Point(点)、Rectangle(矩形)和Circle(圆)三个类的设计与具体实现细节。Point类定义了二维空间中的点;Rectangle类通过一个Point对象和宽度高度来表示矩形;Circle类同样利用Point对象来定义圆心位置,并包含计算圆的面积、判断点是否在圆内等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package november_05th;

public class Point {
private double x;
private double y;

public Point(){}
public Point(double x,double y){
    this.x = x;
    this.y = y;
}
public double getX() {
    return x;
}
public void setX(double x) {
    this.x = x;
}
public double getY() {
    return y;
}
public void setY(double y) {
    this.y = y;
}
public void display(){
    System.out.println("The point is at:("+this.x+","+this.y+")");
    
}
}

 

package november_05th;

public class Rectangle {
private Point point;
private double width;
private double height;

public Rectangle(){}
public Rectangle(Point p,double width,double height){
    this.point = p;
    this.width = width;
    this.height = height;
}
public Rectangle(double x,double y,double width,double height){
    this.point.setX(x);
    this.point.setY(y);
    this.width = width;
    this.height = height;
}
public Rectangle(Rectangle r){
    
}
public void setPoint(double x,double y){
    this.point.setX(x);
    this.point.setY(y);
}
public double getArea(){
    return this.width*this.height;
}
public void display(){
    System.out.println("The rectangle's width and height is :"+this.width+","+this.height);
}
public Point getPoint() {
    return point;
}
public void setPoint(Point point) {
    this.point = point;
}
public double getWidth() {
    return width;
}
public void setWidth(double width) {
    this.width = width;
}
public double getHeight() {
    return height;
}
public void setHeight(double height) {
    this.height = height;
}

}

 

package november_05th;

public class Circle {
private Point p;
private double radius;

public Circle(){}
public Circle(Point p,double r){
    this.p = p;
    this.radius = r;
}
public Circle(double x,double y,double r){
    this.p.setX(x);
    this.p.setY(y);
    this.radius = r;
}
public Circle(Circle c){
    
}
public void setPoint(double x,double y){
    this.p.setX(x);
    this.p.setY(y);
}
public boolean isInside(Point p){
    double distance = (((p.getX()-this.getP().getX())*(p.getX()-this.getP().getX()))+((p.getY()-this.getP().getY())*(p.getY()-this.getP().getY())));
    if(distance<this.radius){
        return true;
    }
    else{
        return false;
    }
}//判断点是否在圆内部
public Circle outerRect(Rectangle r){
    double radius_x = r.getPoint().getX()+r.getWidth()/2;
    double radius_y = r.getPoint().getY()+r.getHeight()/2;
    double radius = Math.sqrt(((r.getPoint().getX()-radius_x)*(r.getPoint().getX()-radius_x))+(r.getPoint().getY()-radius_y)*(r.getPoint().getY()-radius_y));
    return new Circle(radius_x,radius_y,radius);
}//返回一个矩形的外接圆
public Circle join(Circle c1, Circle c2) {
    double distance = Math.sqrt(((c1.getP().getX()-c2.getP().getX())*(c1.getP().getX()-c2.getP().getX()))+((c1.getP().getY()-c2.getP().getY())*(c1.getP().getY()-c2.getP().getY())));
    double r_ = Math.abs(c1.getRadius()-c2.getRadius());
    if(distance>r_){
        double radius = (distance+c1.getRadius()+c2.getRadius())/2;
        double x = (c1.getP().getX() + c2.getP().getX())/2;
        double y = (c1.getP().getY() + c2.getP().getY())/2;
        return new Circle(x,y,radius);
    }
    else{
        return new Circle();
    }
}//返回两个参数圆的最小外接圆
public double distance(Circle c1, Circle c2) {
    return Math.sqrt(((c1.getP().getX()-c2.getP().getX())*(c1.getP().getX()-c2.getP().getX()))+((c1.getP().getY()-c2.getP().getY())*(c1.getP().getY()-c2.getP().getY())));
}//返回两个参数圆圆心之间的距离
public String toString(){
    return "(圆心x坐标值,圆心y坐标值,圆半径) :"+"("+this.getP().getX()+","+this.getP().getY()+","+this.getRadius()+")";
}
//返回本圆的基本信息,格式为(圆心x坐标值,圆心y坐标值,圆半径)。如:(0, 0, 2)
public void test(){
    System.out.println("succeed xiaojijia");
}
public Point getP() {
    return p;
}
public void setP(Point p) {
    this.p = p;
}
public double getRadius() {
    return radius;
}
public void setRadius(double radius) {
    this.radius = radius;
}

}

 

转载于:https://my.oschina.net/u/3716815/blog/1568155

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值