有两个点的坐标, 将其中的一个点作为圆心,另一个点按照圆心旋转某个角度X,如何得到旋转之后的这个点的新坐标?
解决方案 »
- Jscrollpane水平滚动条获得Jscrollpane里面的JTable的列号
- "Exception in thread "main" java.lang.NoClassDefFoundError: helloworls"这是什么意思
- 如何去掉List中的重复元素?
- 求线程实例!
- 请教高手一个问题:java应用程序可以通过JNI调用flash的ACTIVEX实现在java桌面应用中播放控制FLASH吗?
- java调用ocx控件
- java基础????????
- java如何将明文加密成密文存到数据库中?
- 在Java里怎样取得Windows的系统路径,高手请指教,十万火急,我给50分哈。
- 一个小程序遇到的问题 请指教
- java操作word模版问题???
- java swing菜单无法显示?
旋转某个角度X,你有一个与X轴或者Y轴的夹角这样就有了一斜边一角
用三角函数求两直角边吧
(x1-x2)^2+(y1-y2)^2=(x1-x3)^2+(y1-y3)^2
再根据角度列一个方程,转过的弧度是X
(y1-y2)/(x1-x2) + X = (y1-y3)/(x1-x3)这样的一个二元方程组应该可以解了吧。
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;public class Test6 {
public static void main(String[] args) {
// 点 (2, 3),使用 Line 来冒充一下
Line2D.Double line = new Line2D.Double(2, 3, 2, 3);
// 围绕 (1, 2) 逆时针旋转 60 度
AffineTransform affine = AffineTransform.getRotateInstance(Math.toRadians(60), 1, 2);
Shape n = affine.createTransformedShape(line);
// 旋转结果
System.out.println("x = " + n.getBounds2D().getX());
System.out.println("y = " + n.getBounds2D().getY());
}
}
x=rCos@
y=rSin@
把A点的坐标平移至原点,然后换成极坐标,B点极坐标 @+d@ 以后,再转成直角坐标,再移回原来位置,就可以了撒。
支持
这是高中数学(好像是初中的)里常用的方法,先平移到原点,原来的点可以通过反三角函数来得到,再加上移动的角度,
x=rCos@
y=rSin@
再加回原来平移的数就可以得到了
旋转点操作 @param center 旋转中心
@param point 操作点
@param angle 旋转角度
@return FPoint 返回旋转后的点
*/
FPoint CShape::RotatePoint(FPoint center, FPoint point, double angle)
{
FPoint Circumpt;
Circumpt.x = cos(angle) * (point.x - center.x) + sin(angle) * (center.y - point.y) + center.x;
Circumpt.y = center.y - sin(angle) * (center.x-point.x) - cos(angle) * (center.y - point.y); return Circumpt;
}