java在一个圆上寻找点

nzk0hqpo  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(307)

在圆上找一个点的公式如下:

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);

t5zmwmid

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 可能会解决这个问题。
可能有更多的问题,但很难猜测目前的状况。

hs1ihplo

hs1ihplo2#

Math.cos 以及 Math.sin 记录为接受弧度,而不是度
使用 Math.toRadians 以及 Math. toDegrees 在它们之间转换
余弦
公共静态双cos​(双a)
返回Angular 的三角余弦。特殊情况:
    * 如果参数为nan或无穷大,则结果为nan。
计算结果必须在精确结果的1 ulp范围内。结果必须是半单调的。
参数:
    角,以弧度表示。
退货:
    参数的余弦。

相关问题