【发布时间】:2014-03-04 05:45:34
【问题描述】:
我正在尝试使用 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 原点。
-
为了尽快获得更好的帮助,请发布MCTaRE(经过测试和可读的最小完整示例)。
标签: java math jpanel awt trigonometry