<分区>
我有两个点 (x1,x2,y1,y2) 它们形成一条垂直线。当用户旋转物体时我知道这两点,问题是:如何找到形成水平线的其他两点的坐标。如何更容易实现?我将不胜感激任何帮助!
最佳答案
[cos(a) -sin(a)]
[sin(a) cos(a)]
所以对于 x,y
旋转是:
rx = x*cos(a) + y*sin(a);
ry = -x*sin(a) + y*cos(a);
因为另一条线是 90 度角,所以计算结果为:
rx = y;
ry = -x;
所以:
(x1,x2,y1,y2) => (y1,y2,-x1,-x2)
我会使用 Point
类来存储它并将其放入方法中:
public static Point Rotate90(Point point){
return new Point(point.y, -point.x);
}
现在这是一个关于原点的旋转,如果你的线需要接触另一条线,那么你需要在前后平移。
p = x,y
pr = centre of rotation
围绕pr
旋转p
:
Rotate90(p - pr) + pr
在一个方法中:
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);
}
关于java - 将图形对象旋转 360 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35546914/