按指定角度旋转直线(Java/Android)
这是一个与数学有关的问题。 在我的android应用程序中,我有一个画布,可以从起点到终点画一条线。按指定角度旋转直线(Java/Android),java,android,math,Java,Android,Math,这是一个与数学有关的问题。 在我的android应用程序中,我有一个画布,可以从起点到终点画一条线。 我还有一个angle属性来旋转线条 我试图将下面的代码应用于我的cocept,但它奇怪地跳来跳去,没有指向它应该指向的方向。(0度=水平线) 他们的任何类型转换都可能导致这种情况,还是我的计算错了 更新: 我在运行时查看了Math.cos(angle)和Math.sin(angle)。它们在0和1之间跳跃,即使angle只改变了一点点 现在我想知道:这些方法是以RAD还是DEG作为参数的?(很
我还有一个
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
methodstartx=(int)(半径-Math.cos(角度)*rRadius)中的一个
为什么半径在这里?@pskink:我用画布.画线(startx,starty,endx,endy,paint)代码>-我不知道矩阵
-类或其背后的实际数学。我只想绕着它的中心旋转这条线@Danil Gaponov:radius
在本例中也用作从左侧的偏移量(类似于starty
和endy
的数字66)。因此,如果不想使用矩阵api,请使用Canvas.rotate()
methodMath函数取弧度,可以使用Math.toDegrees()你到底想实现什么?如果你想旋转一个向量,请使用Matrix.mapVectors
methodstartx=(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()