【发布时间】:2016-05-02 05:31:11
【问题描述】:
我一直在研究分形并决定尝试一下,但立即遇到了一个简单得多的问题。除了 0、45、90 等,我不能画线。
问题: 我的角度是一个整数,我使用 Math.toRadians(angle) 来计算角度本身作为它的绘制。当我画线时,我必须将 (int) 转换为从 Math.toRadians() 生成的双精度数,这导致我失去了角度本身,我相信这是阻止画线的原因。
我正在使用的代码:`
Graphics2D g2d = (Graphics2D) g;
int angle = 90;
int startX = getWidth()/2;
int startY = getHeight()/2;
int length = 100;
int endX = startX + (int)Math.cos(Math.toRadians(angle)) * length;
int endY = startY + (int)Math.sin(Math.toRadians(angle)) * length;
g2d.drawLine(startX, startY, endX, endY);
`
解决方案:
Graphics2D g2d = (Graphics2D) g;
int angle = 91;
int startX = getWidth()/2;
int startY = getHeight()/2;
int length = 100;
int endX = startX + (int)(Math.cos(Math.toRadians(angle)) * length);
int endY = startY + (int)(Math.sin(Math.toRadians(angle)) * length);
g2d.drawLine(startX, startY, endX, endY);
谢谢大家!
【问题讨论】:
-
你应该转换为
int在乘以length。 -
^---
(int)(Math.cos(Math.toRadians(angle)) * length) -
正弦和余弦是实数,在 [-1,1] 范围内的商定义了一个角度。如果您需要转换为整数,请在任何计算中保持它们的精度直到最后一刻。
-
感谢您的帮助,我被这么愚蠢的事情难住了哈哈。
-
@A.Ferguson 不要为您的问题添加解决方案。这就是答案的目的。
标签: java math line angle radians