【问题标题】:Need help wit heartrate calculation for watch需要帮助计算手表的心率
【发布时间】:2015-04-17 17:14:31
【问题描述】:

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

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

我真的不确定我是否正确计算了它。我不认为图像以正确的速率正确闪烁。感谢您对数学的任何帮助!

【问题讨论】:

    标签: math wear-os pseudocode


    【解决方案1】:

    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 分之一,则检查分数是否

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-03
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 2021-08-29
        相关资源
        最近更新 更多