Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- innerWallClockwise :: Float -> V2 Float -> [Point V2 Float] -> [V2 Float]
- innerWallClockwise w acc (p : p' : p'' : ps) =
- let v = p' .-. p
- v' = p'' .-. p'
- d2v = v' .-. v
- phi = atan2 (v ^. _y) (v ^. _x)
- rho = atan2 (v' ^. _y) (v' ^. _x)
- theta = phi + rho
- d2vtheta = atan2 (d2v ^. _y) (d2v ^. _x)
- theta' = theta / 2 + if d2vtheta > 0 then pi / 2 else (-1) * pi / 2
- v''' = w *^ angle theta'
- v'''' = acc .+^ v'''
- in
- if ps == [] then [v''''] else v'''' : (innerWallClockwise w (acc .+^ v') (p' : p'' : (head ps) : (tail ps)))
- let path=[P (V2 0 0), P(V2 0 5), P(V2 5 5), P (V2 5 (-5)), P (V2 0 (-5))]
- innerWallClockwise 1 (V2 0 5) path
- => [V2 0.70710677 4.2928934,V2 4.2928934 4.2928934,V2 4.2928934 (-4.2928934)]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement