需要有关手表心率计算的帮助

Need help wit heartrate calculation for watch

所以我正在尝试为我的 Android Wear 表盘制作假心跳动画。我有一个 API 可以获取 BPM 中的心率和当前的毫秒数,现在我正在尝试使用一个方程式来制作 "beat" 到 BPM 的图像。这是伪代码:

IF (Millis / HeartRate) % (1000 / HeartRate) <= 1)
    Opacity = 100;
ELSE
    Opacity = 75;
ENDIF

我真的不确定我是否计算正确。我认为图像没有以正确的速率正确闪烁。任何有关数学的帮助将不胜感激!

我设法使用与手表 API 不同的变量编译了新代码。这个另一个变量本质上是一个介于 0 和 359 之间的数字,每帧仅以小数位递增。 (该变量通常用于平滑运动的秒针)。

我还决定使用正弦波和 RGB 着色器来代替不透明度。这是新代码

Green = 0
Blue = 0
Red = 100 * math.sin(HeartRate * SecondsRotationSmooth / 60)

使用这个特定的变量并不理想,但它至少给我一个更好看的代码。如果有人想给出更好的答案,请做!

BPM 中的值是频率,而不是时间段:

b BPM = b / 60s = b/60 * s^-1

振荡周期为

T = 1/f = 60s / b = 60/b s

如果我们有一个以毫秒为单位的时间,那么我们可以算出模数与周期的关系:

remainderInSeconds = CurrentTimeInSeconds % T
         = (CurrentTimeInMilliseconds * 1e-3) % T
         = (CurrentTimeInMilliseconds * 1e-3) % (60/BeatsPerMinute)

fraction = remainderInSeconds / Period
         = [(CurrentTimeInMilliseconds * 1e-3) % T] / T
         = (CurrentTimeInMilliseconds * 1e-3 / T) % 1
         = (CurrentTimeInMilliseconds * 1e-3 / (60/BeatsPerMinute)) % 1
         = (CurrentTimeInMilliseconds * 1e-3 * BeatsPerMinute / 60)) % 1
         = (CurrentTimeInMilliseconds * BeatsPerMinute / 60e3)) % 1

然后您可以检查该分数是否低于您的阈值;如果您希望脉冲持续 20 个周期,则检查分数是否 < 1/20。

或者,如果您希望脉冲持续特定的时间而不是周期的一部分,则只需计算以秒为单位的余数。