我的网络如下所示:
ePhysics :: Event t ()
bPlayerForce :: Behavior t (Double,Double)
bPlayerPosition :: Behavior t (Double, Double)
ePhysics
从计时器重复触发。
我在定义bPlayerPosition
. 我的意图是它将从 开始(0,0)
,并且每当ePhysics
被触发时,bPlayerPosition
将使用bPlayerForce
作为参数重新计算。
问题在于,为了指定我需要使用的初始值accumB
/stepper
但它们仅适用于事件,并且我无法从中获取力值,bPlayerForce
因为只有行为才能获取其他行为的值(使用<*>
)。
另一种方法是使用<*>
,但我没有初始值,所以它变成了无意义的无限递归:
let bPlayerPosition = pure calcPosition <*> bPlayerForce <*> bPlayerPosition
我有3个问题:
- 有没有办法从没有的行为中获得价值
<*>
?比如,在reactimate
ing 或映射事件时?从一开始,无法解决的问题就一直困扰着我。 - 会有更实用/frp 的方式来做物理吗?(一般来说和特定于问题的那些)
- 我该如何解决提出的问题?