Java 将图形对象旋转360度

Java 将图形对象旋转360度,java,android,math,geometry,Java,Android,Math,Geometry,我有两个点(x1,x2,y1,y2),它们形成一条垂直线。当用户旋转物体时,我知道这两点,问题是:如何找到形成水平线的其他两点的坐标。如何更容易实现?如果有任何帮助,我将不胜感激! 是: 因此,对于x,y旋转为: rx = x*cos(a) + y*sin(a); ry = -x*sin(a) + y*cos(a); 由于另一条线为90度,因此其计算结果为: rx = y; ry = -x; 因此: 我将使用类来存储它,并将其放在一个方法中: public static Point Rota

我有两个点(x1,x2,y1,y2),它们形成一条垂直线。当用户旋转物体时,我知道这两点,问题是:如何找到形成水平线的其他两点的坐标。如何更容易实现?如果有任何帮助,我将不胜感激! 是:

因此,对于
x,y
旋转为:

rx = x*cos(a) + y*sin(a);
ry = -x*sin(a) + y*cos(a);
由于另一条线为90度,因此其计算结果为:

rx = y;
ry = -x;
因此:

我将使用类来存储它,并将其放在一个方法中:

public static Point Rotate90(Point point){
     return new Point(point.y, -point.x);
}
public static Point Rotate90(Point point, Point about){
     Point translated = new Point(point.x - about.x, point.y - about.y);
     Point rotated = Rotate90(translated);
     return new Point(rotated.x + about.x, rotated.y + about.y);
}
现在这是一个围绕原点的旋转,如果你的线需要接触另一条线,那么你需要在前后进行平移

p = x,y
pr = centre of rotation
旋转
p
关于
pr

Rotate90(p - pr) + pr
在一种方法中:

public static Point Rotate90(Point point){
     return new Point(point.y, -point.x);
}
public static Point Rotate90(Point point, Point about){
     Point translated = new Point(point.x - about.x, point.y - about.y);
     Point rotated = Rotate90(translated);
     return new Point(rotated.x + about.x, rotated.y + about.y);
}

到目前为止你试过什么?这实际上是一个几何问题,而不是编程问题。@JimGarrison请看标记。也可能这个问题有一个更简单的解决办法,我知道,但纯粹关于几何的问题是离题的。非常感谢!我今天将尝试并评论/接受!