我正在尝试使用我的jpanel中的awt.Graphics包中的drawline函数绘制一条线。我也试图通过从它的原点做一个完整的360度旋转它来动画线。我已经完成了大部分的部分,期望旋转该线的逻辑。
以下是动画的主要代码,我有一个每秒60次调用此函数的线程:
public void Update(){
degrees = ( ++degrees%360 == 0 ) ? 0 : degrees;
angle = Math.toRadians(degrees);
deltax = (Math.cos(angle) * deltax - Math.sin(angle) * deltay) + 100;
deltay = (Math.sin(angle) * deltax + Math.cos(angle) * deltay) + 100;
}
我正在添加额外的100,因为这些变化似乎很小。
更新值后,我调用框架重新绘制自身,并使用这些更新值。
public void paintComponent(Graphics graph)
{
super.paintComponent(graph);
//... other code here
graph.drawLine(getWidth() / 2, getHeight() / 2, (int)deltax, (int) deltay);
}
它开始很好,但它很快就开始出现一些意想不到的结果。
答案 0 :(得分:0)
在没有看到实际结果的情况下很难确定,但我强烈怀疑它出错了,因为你在变量deltaX和deltaY中添加了一个固定常数。
您应该将每个数字乘以固定数量。尝试
deltax = (Math.cos(angle) * deltax - Math.sin(angle) * deltay) * 100;
deltay = (Math.sin(angle) * deltax + Math.cos(angle) * deltay) * 100;
如果这还不够,请增加乘数;如果太多,请减少它。