Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 需要手表心率计算方面的帮助吗_Math_Wear Os_Pseudocode - Fatal编程技术网

Math 需要手表心率计算方面的帮助吗

Math 需要手表心率计算方面的帮助吗,math,wear-os,pseudocode,Math,Wear Os,Pseudocode,所以我尝试为我的Android wear watchface制作一个假心跳动画。我有一个API,它可以获取BPM中的心率和当前的毫秒,现在我正试图使用一个等式来生成BPM的图像节拍。以下是psuedocode: IF (Millis / HeartRate) % (1000 / HeartRate) <= 1) Opacity = 100; ELSE Opacity = 75; ENDIF 我真的不确定我是否计算正确。我认为图像的闪烁速度不正确。任何数学方面的帮助都将不胜

所以我尝试为我的Android wear watchface制作一个假心跳动画。我有一个API,它可以获取BPM中的心率和当前的毫秒,现在我正试图使用一个等式来生成BPM的图像节拍。以下是psuedocode:

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

我真的不确定我是否计算正确。我认为图像的闪烁速度不正确。任何数学方面的帮助都将不胜感激

我设法使用watchapi中的不同变量编译了一个新代码。另一个变量本质上是一个介于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

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