Wykonanie podstawowego rachunku za pomocą Reaktywnego banana

Ustawiać:

Używam Reactive Banana wraz z OpenGL i mam sprzęt, który chcę obracać. Mam następujące sygnały:

bTime :: Behavior t Int -- the time in ms from start of rendering
bAngularVelosity :: Behavior t Double -- the angular velocity
                                      -- which can be increase or
                                      -- decreased by the user
eDisplay :: Event t ()     -- need to redraw the screen
eKey :: Event t KeyState   -- user input

Ostatecznie muszę obliczyćbAngle która następnie przechodzi do funkcji rysowania:

reactimate $ (draw gears) <
reactimate $ (draw gears) <$> (bAngle <@ eDisp)
gt; (bAngle <@ eDisp)

Kąt jest łatwy do obliczenia:a = ∫v(t) dt

Pytanie:

I myśleć to, co chcę zrobić, to przybliżenie tej całki jakoa = ∑ v Δt dla każdego wydarzenia eDisplay (lub częściej, jeśli muszę). Czy to jest właściwy sposób na to? Jeśli tak, jak mam to zrobićΔt zbTime?

Zobacz też: Podejrzewam, że odpowiedź używamapAccum funkcjonować. Jeśli tak, zobacz takżemoje drugie pytanie także.

questionAnswers(2)

yourAnswerToTheQuestion