사용 netwire-4.0.7Netwire - 위치를 생성하고 벽을 수신 거부하는 와이어를 만드는 방법은 무엇입니까?
질문 제목에서 말하자면, 다른 대상에서 "수신 거부"되는 위치를 생성하는 선을 만들려고합니다. 각 단계마다 특정 속도로 위치를 이동합니다. 내가 생각할 수있는 가장 간단한 예는 일부 화면 보호기와 같이 상자 안에서 움직이는 것입니다.
난 그냥 할 수있는 시도로이 기능을 썼다 (한 축 전용) :import Control.Wire
bouncyWire :: Double -> Double -> Double -> Double -> Wire() IO a Double
bouncyWire startPosition startVelocity lowerBound upperBound = proc _ -> do
rec
v <- delay startVelocity -< if p < lowerBound || p > upperBound
then -v else v
p <- integral_ startPosition -< v
returnA -< p
(I 실제로 다른 모나드와 함께 사용하지만,이 코드는 실제로 그것을 사용하지 않습니다 여기서 문제를 복잡하게 만든다).
counterSession $ 1/60
으로 스테핑하지만 문제가 생깁니다. 벽에서 "튀어 오르는"대신에 문제가 발생합니다. 나는 그것이 일어날 것이라고 생각한다. 속도가 계속 흐트러져 계속 v
인데, 왜 그런지 모르겠다. 지연이나 잘못된 것을 사용하고있을 수도 있습니다.