我有下面的等式来寻找圆上的一个点:
x = (int) (10 * Math.cos(45.0));
y = (int) (10 * Math.sin(45.0));
x1 = new Point(x, y);
然后,我从圆的中心到这个新点画一条线。
我本以为更改Math.cos和Math.sin函数的参数会改变直线从中心出来的角度,但当我测试这一点时,如果更改了圆的半径,就会改变直线绘制的角度。
我是不是误解了数学?这里出了什么问题?
这是使用上面的等式从中心圆绘制的线,尽管它应该只与该中心圆的半径一样长。
当方程式为:
x = (int) (350 * Math.cos(45.0));
y = (int) (350 * Math.sin(45.0));
x1 = new Point(x, y);
发布于 2018-12-07 07:33:12
看起来你的代码中实际上有不止一个错误。如果您显示为Minimal, Complete, and Verifiable example的完整代码,这将非常有帮助。这里仍然有一些猜测:
xc
和yc
是以圆的圆心为值的变量,R
是半径,则圆上与alpha
夹角的点为X=R* Math.cos(alpha) + xc;y=R* Math.sin(alpha) + yc;
在您的代码中,您的xc
和yc
看起来都是0
,因此您可以有效地从圆的中心到以(0,0)
为中心的圆上的一点画一条线,在Java2D世界中,这是屏幕的左上角。
,
Math.cos
和Math.sin
以弧度作为参数,45.0
的值建议你使用度数。使用Math.toRadians
可能会解决此问题。可能会有更多的问题,但很难猜测问题的当前状态。
https://stackoverflow.com/questions/53661059
复制相似问题