2

谁能指出我正确的方向,以了解如何在 android studio 中编写用于旋转画布的表达式。我正在制作一个表盘,我使用了提供的示例中的部分代码,但我需要了解它的含义。这是代码的一部分:

float minuteRotation = time.minute/ 30f * (float) Math.PI

如果这可以用虚拟术语翻译,那么我可以理解它们是如何得出这些值的。

4

3 回答 3

1

如果您查看单位圆 Math.PI 在一侧而 0 在另一侧,例如 0 是 time.minute/30 = 0 * Math.PI = 0 或者如果 30 是 time.minute/30 * Math。 PI = 1 * Math.PI = Math.PI 女巫是单位圆的另一边,就像手表一样

单位圆

于 2015-03-14T04:07:52.400 回答
1

您的minuteRotation变量表示您需要旋转画布以将分针绘制在正确位置的角度。根据 Android API,此角度必须以弧度(而不是度数)指定,因此使用值“Math.PI”。

PI 弧度表示完整旋转的一半,即 180 度 - 半圆。它仅用作(在您描述的表达式中)作为比例因子。编写相同方程式的另一种(更清晰)方法是:

minuteRotation = (time.minute/ 60.0f) * (float) Math.PI * 2.0f

这个替代版本更清楚地说明了各种数字的含义:
- “60.0”是一个浮点数,表示可能的最大分钟数(在一个完整的旋转中)
- “Math.PI * 2”弧度是角度等值全圆旋转(即 360 度)

因此,分数“time.minute/60.0”表示当前用完的整小时的分数。将其乘以表达式 PI*2 然后得到一个完整圆的等效部分,表示为 ANGLE(以弧度为单位)。

于 2015-03-15T17:09:28.613 回答
0
canvas.save();
canvas.rotate(45);
canvas.drawRect(166, 748, 314, 890, paint);
canvas.restore();

其中 45 - 是度数

于 2015-03-14T04:58:55.160 回答