在圆上找一个点的公式如下:
x = (int) (10 * Math.cos(45.0));
y = (int) (10 * Math.sin(45.0));
x1 = new Point(x, y);
然后我画一条从圆心到新点的线。
我本以为更改math.cos和math.sin函数的参数会改变直线从中心出来的Angular ,但是当我测试这个时,如果更改了圆的半径,就会改变直线的绘制Angular 。
我是不是误解了数学?这里出了什么问题?
这是用上述公式从中心圆画出的线,尽管它应该只有中心圆的半径那么长
当公式为:
x = (int) (350 * Math.cos(45.0));
y = (int) (350 * Math.sin(45.0));
x1 = new Point(x, y);
2条答案
按热度按时间t5zmwmid1#
似乎你的代码中有不止一个错误。如果您将完整的代码展示为一个最小的、完整的、可验证的示例,这将非常有帮助。但仍有一些猜测:
假设
xc
以及yc
是具有圆心和R
是半径,圆上的点在这个Angular 上alpha
是x=r数学cos(α)+xc;y=rmath.sin(α)+yc;
在你的代码里
xc
以及yc
两者都是0
所以你可以从圆心到圆心的圆上的一点画一条线(0,0)
在Java2D世界中,它是屏幕的左上角。正如程序员所指出的
Math.cos
以及Math.sin
以弧度和45.0
建议你使用学位。使用Math.toRadians
可能会解决这个问题。可能有更多的问题,但很难猜测目前的状况。
hs1ihplo2#
Math.cos
以及Math.sin
记录为接受弧度,而不是度使用
Math.toRadians
以及Math. toDegrees
在它们之间转换余弦
公共静态双cos(双a)
返回Angular 的三角余弦。特殊情况:
* 如果参数为nan或无穷大,则结果为nan。
计算结果必须在精确结果的1 ulp范围内。结果必须是半单调的。
参数:
角,以弧度表示。
退货:
参数的余弦。