Rectangle类和containsPoint方法

时间:2018-05-10 04:06:26

标签: java

我试图理解Rectangle Class和MyCircle类,特别是每个类中的containsPoint方法。 这是代码:

public class MyRectangle extends GridItem {

private int height;
private int width;

public MyRectangle(int xValue, int yValue, int w, int h) {
    x = xValue;
    y = yValue;
    width = w;
    height = h;
}

public double getArea() {
    return height * width;
}

public boolean containsPoint(int xValue, int yValue) 
{


    return  xValue >= x &&
            xValue <= x + width &&
            yValue >= y &&
            yValue <= y + height;


}

}

我遇到的困惑是,containsPoint方法是什么意思? 这个当前代码是如何以这种特殊方式设置的,因为它不应该返回布尔值而不是int的数据类型?

MyCircle类的困境相同。

public class MyCircle extends GridItem {

private int radius;

public MyCircle(int xValue, int yValue, int r) 
{
    x = xValue;
    y = yValue;
    radius = r;
}

public double getArea() {
    return Math.PI * Math.pow(radius, 2);
}

public boolean containsPoint(int xValue, int yValue) {
    double dx = x - xValue;
    double dy = y - yValue;
    double distance = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));

    return distance <= radius;
}

}

containsPoint方法究竟是什么意思? 你怎么解释这个? 被困了好几天,这是一个更大的任务的一部分,但无法理解containsPoint方法,所以它影响mySquare类的开发......

到目前为止,我已经得到了这个......

public class MySquare extends GridItem
{
private int side;

public MySquare(int xValue, int yValue, int s)
{
    x = xValue;
    y = yValue;
    side = s; 
}

@Override
public double getArea()
{
    return side*side;
}

@Override
public boolean containsPoint(int xValue, int yValue)
{
    return x && y;
}
}

如何在Square类中应用containsPoint方法?

谢谢!

4 个答案:

答案 0 :(得分:1)

  

containsPoint方法是什么意思?

该方法只是检查给定点(给定的x,y坐标,即xValue,yValue)是否在当前的Square或Rectangle内。

  

这个当前代码是如何以这种特殊方式设置的,因为它不应该返回布尔值而不是int的数据类型?

方法参数为int,因为它们表示给定点的x和y坐标。

  

被困了好几天,这是一个更大的任务的一部分,但无法理解containsPoint方法,所以它影响mySquare类的开发......

您的子类(例如Sqaure类)应该具有一组属性,例如xywidthheight表示正方形的位置和大小。根据这组属性,检查任何给定点(xValueyValue)是否在您当前的方格内。这同样适用于Rectangle类。

答案 1 :(得分:0)

containsPoint是检查点是否位于2D平面上特定矩形/圆/形状内的方法。

答案 2 :(得分:0)

让我们考虑一下Rectangle的containsPoint

假设你有一个高度为2的矩形,宽度为3,从坐标(1,1)开始。所以你的矩形看起来像这样

 (1,3)      (4,3)
 ------------
 |          |
 |          |
 ------------ 
(1,1)       (4,1)

(在上面的示例中)给出了两个点xValueyValue,如果

,则containsPoint返回 true
  • xValue介于1和4之间(含)和
  • yValue介于1和3之间(含)

    false 否则

因此,containsPoint告诉某个给定点是否位于一个形状上。

圆的containsPoint方法也会做同样的事情(点是否位于圆内/上),但公式更复杂。您可以参考Euclidean distance for two dimensions来更好地理解它。

Square的containsPoint与矩形的width非常相似,除了使用heigthside之外,您只有一个return xValue >= x && xValue <= x + side && yValue >= y && yValue <= y + side;

containsPoint()

答案 3 :(得分:0)

将变量相互比较将产生一个布尔值 MyRectangleMySquare中的每个比较产生一个布尔值,然后通过和连接。这意味着只有在每个比较结果为真时,它才会返回true 您需要将相同的原则应用于line 想想如果该点位于正方形内,方形的坐标与点的坐标相比如何。