Java method Point rot90()



我正在尝试弄清楚如何在java中实现以下方法;

**

点 rot90()** 查询与旋转 90 度的笛卡尔点等效的新笛卡尔点

我不知道如何创建此方法。 但是,我确实认为拉点 (x,y) 并输出新点 (y,x*-1) 相当于旋转 90 度。基本上旧的y坐标变成了nee x坐标,新的y坐标是旧的x坐标乘以负1。 关于如何设置此方法的任何想法将不胜感激。 谢谢。

这就是我到目前为止所拥有的

  public Point rot90(){
    Point rotated = new Point();
    rotated.yCoord = xCoord*-1;
    rotated.xCoord = yCoord;
    return rotated;
  }

我知道这在我尝试编译它时指出的不起作用。 有什么建议吗?

你的方法需要一个参数。

public Point rot90(Point p){
  Point rotated = new Point();
  rotated.yCoord = -p.xCoord;
  rotated.xCoord = p.yCoord;
  return rotated;
}

如果您的 Point 类具有可以采用坐标的构造函数,则可以使其更短。

public Point rot90(Point p){
  return new Point(p.yCoord, -p.xCoord);
}

问题到底是什么?代码不起作用或结果与预期不符?


在欧几里得几何的复平面解释中,根据复数单位的定义,旋转 (x,y) 乘以 90° 是 x+i·y 乘以 i。因为

i·(x+i·y)=-y+i·x, 

旋转点具有坐标 (-y,x),并且您的代码实现了 270° =^= -90° 的旋转。


通常,旋转角度 a 等于乘

(cos(a)+i*sin(a)) * (x+i*y)

请注意,屏幕坐标系是笛卡尔平面的镜像,y 轴指向下方。因此,角度方向是相反的。

最新更新