Java方法点rot90()

Java方法点rot90(),java,math,coordinates,point,Java,Math,Coordinates,Point,我试图弄清楚如何在java中实现以下方法 **Point rot90()**查询与此笛卡尔点旋转90度等效的新笛卡尔点 我不知道如何创建这个方法。然而,我相信拉动点(x,y)并输出新点(y,x*-1)相当于旋转90度。基本上,旧的y坐标成为nee x坐标,新的y坐标是旧的x坐标乘以负1。任何关于如何建立这种方法的想法都将不胜感激。谢谢 这就是我目前所拥有的 public Point rot90(){ Point rotated = new Point(); rotated.y

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

**Point 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轴指向下方。因此,角度方向是相反的。

但您已经描述了如何设置此方法。你还需要知道什么?我只需要一个视觉上的想法来让我的头脑围绕这个概念。