【问题标题】:Flip and negate a coordinate point in java? [closed]在java中翻转和否定坐标点? [关闭]
【发布时间】:2014-02-23 08:09:12
【问题描述】:

你将如何获取一个点对象并翻转坐标并切换它们的符号?如果你想在下面的代码中添加一个叫做翻转的方法:

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

    // flip method goes here

}

我尝试过类似的方法:

    public class flip(){
    x = 0-x;
    y = 0-y;
    Point p = new Point(y,x);
}

但它不起作用。 (81,21) 而我只得到 (-81,-21)。它不会翻转它。但是方法不能接受任何参数,如果这甚至是相关的。谢谢。

【问题讨论】:

  • 您的翻转代码毫无意义,显然不是您实际尝试过的代码。这是一个返回类的方法吗?真的??请仅发布 真实 代码尝试,而不是某种代码尝试。此外,如果您要翻转一个点,您需要输入翻转发生的线。您可以围绕一个点旋转,但不能翻转。这可能是 X 或 Y 轴,但实际上理论上它可能是 any 线。

标签: java class object methods point


【解决方案1】:

如果您想将坐标翻转到位(因此调用p.flip() 会修改Point p,那么这应该可以:

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

    public void flip() {
        int tmp = x;
        x = -y;
        y = -tmp;
    }
}

如果您希望flip() 方法返回一个坐标翻转的新点,那么您可以这样做:

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

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public Point flip() {
        return new Point(-y, -x);
    }
}

【讨论】:

  • 一个问题:为什么简单地做 x=-y 和 y=-x 不起作用?为什么你必须先设置另一个等于 x 的变量,然后再做那个新变量的负数?可以,谢谢。
  • @user3211857 - 如果您设置了x = -y,那么您就失去了x 的值。然后当您执行y = -x 时,您最终会将y 的原始值存储回y
  • 哦,当然。不知何故,这种逻辑不知何故逃过了我的脑海。谢谢。
【解决方案2】:

试试这个:

public Point flip(Point orig){
    return new Point(-orig.y, -orig.x);
}

如果你不能给它传递任何参数,就让它们成为类变量。

private Point mPoint;

public void flip(){
    mPoint.x = -mPoint.y;
    mPoint.y = -mPoint.x;
}

【讨论】:

  • 这是一个任意行的翻转,y = -x
  • OP 的代码同时进行反转和翻转。和我一样。我认为....
  • 您的第二种方法行不通。你需要使用一个临时变量来存储mPoint.x;否则,一旦您执行mPoint.x = -mPoint.y;,原始值就会丢失。
【解决方案3】:

类似以下代码的内容适用于您的情况:

public Point flip(Point point)
{
  return new Point(-point.getY(), -point.getX());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多