按指定角度旋转直线(Java/Android)

按指定角度旋转直线(Java/Android),java,android,math,Java,Android,Math,这是一个与数学有关的问题。 在我的android应用程序中,我有一个画布,可以从起点到终点画一条线。 我还有一个angle属性来旋转线条 我试图将下面的代码应用于我的cocept,但它奇怪地跳来跳去,没有指向它应该指向的方向。(0度=水平线) 他们的任何类型转换都可能导致这种情况,还是我的计算错了 更新: 我在运行时查看了Math.cos(angle)和Math.sin(angle)。它们在0和1之间跳跃,即使angle只改变了一点点 现在我想知道:这些方法是以RAD还是DEG作为参数的?(很

这是一个与数学有关的问题。 在我的android应用程序中,我有一个画布,可以从起点到终点画一条线。
我还有一个
angle
属性来旋转线条

我试图将下面的代码应用于我的cocept,但它奇怪地跳来跳去,没有指向它应该指向的方向。(0度=水平线)

他们的任何类型转换都可能导致这种情况,还是我的计算错了

更新:

我在运行时查看了
Math.cos(angle)
Math.sin(angle)

它们在0和1之间跳跃,即使
angle
只改变了一点点


现在我想知道:这些方法是以RAD还是DEG作为参数的?(很明显,我需要deg)

如果要旋转从
[cx,cy]
开始的一行以及
dx
的长度,请使用该代码段:

canvas.save();
canvas.rotate(angle, cx, cy);
canvas.drawLine(cx, cy, cx + dx, cy, paint);
canvas.restore();

如果要旋转从
[cx,cy]
开始且长度为
dx
的行,请使用该代码段:

canvas.save();
canvas.rotate(angle, cx, cy);
canvas.drawLine(cx, cy, cx + dx, cy, paint);
canvas.restore();

你到底想要实现什么?如果要旋转向量,请使用
Matrix.mapVectors
method
startx=(int)(半径-Math.cos(角度)*rRadius)中的一个
为什么
半径
在这里?@pskink:我用
画布.画线(startx,starty,endx,endy,paint)-我不知道
矩阵
-类或其背后的实际数学。我只想绕着它的中心旋转这条线@Danil Gaponov:
radius
在本例中也用作从左侧的偏移量(类似于
starty
endy
的数字66)。因此,如果不想使用矩阵api,请使用
Canvas.rotate()
methodMath函数取弧度,可以使用Math.toDegrees()你到底想实现什么?如果你想旋转一个向量,请使用
Matrix.mapVectors
method
startx=(int)(radius-Math.cos(angle)*rRadius);
为什么
radius
在这里?@pskink:I使用
canvas.drawLine(startx,starty,endx,endy,paint)
-我不知道矩阵类或它背后的实际数学。我只想绕着它的中心旋转这条线。@Danil Gaponov:
半径
在这种情况下也用作从左边的偏移量(类似于starty和endy的数字66。因此,如果不想使用矩阵api,请使用Canvas.rotate()
methodMath函数以弧度为单位,可以使用Math.toDegrees()