【发布时间】:2012-12-04 01:44:06
【问题描述】:
所以我在仅使用线条绘制形状时遇到了一个大问题。假设我开始从屏幕中间的一个点画一条线,并以 100 像素距离向前绘制,角度为 0,然后我使用 72 度角绘制另一条相同长度的线,依此类推,直到 360 度。它应该给我完美的五边形,其中一条线结束,另一条线从该点开始,但线在末端不相遇形状均匀的圆圈。我正在使用这个东西进行计算:
_endingPointX = (_currentPostisionX + distance * _cosinuses[_angle]);
_endingPointY = (_currentPostisionY + distance * _sinuses[_angle]);
其中 _cosinuses 和 _sinuses 是双精度数组,其中包含 360 度中每一个的正弦值和余弦值。在画线时,我需要将这些值转换为整数。
drawLine(_currentPostisionX, _currentPostisionY, (int) _endingPointX, (int) _endingPointY);
我不知道如何解决这个问题并使线条在绘制形状的末端相交。这几天一直想弄明白,但什么都没想到。
这是一个截图:
问题已解决,谢谢各位的建议,这是我使用整数转换的错误。
【问题讨论】:
-
“线条最终没有相遇”到底是什么意思?它们在哪里结束?能发个截图吗?这确实有助于发现问题。
-
这里是它的打印屏幕,我在红色圆圈内标记了它。 imgur.com/VglD1
-
将所有坐标变量的类型保持为双精度,并将所有计算作为双精度进行。此外,尝试使用数学函数而不是预计算表。这能解决不准确的问题吗?
-
@hyde 好吧,我可以将它们存储在双变量中,因为绘制线条的内置 Java 函数需要整数线,而我所能做的就是将这些线转换为整数。
-
@Philipp 也许这说明了它是如何工作的所有这些 args 都可以绘制我想要的任何东西,但是由于它没有正确绘制形状,因此它使我可以绘制同一条线 100 次,每次迭代都会改变 72 度的角度。 i.imgur.com/XZhUP.png 当它应该做的只是在一个地方绘制和重绘同一个五边形时。
标签: java lines shapes trigonometry