我正在尝试弄清楚如何在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 轴指向下方。因此,角度方向是相反的。