packages feed

graph-rewriting-layout-0.4.1: GraphRewriting/Layout/Gravitation.hs

module GraphRewriting.Layout.Gravitation where

import Data.View
import Data.Vector
import Control.Monad
import GraphRewriting.Graph.Types
import GraphRewriting.Graph.Read
import GraphRewriting.Layout.Position
import GraphRewriting.Layout.Force


centralGravitation ∷ View Position n ⇒ Node → WithGraph n Force
centralGravitation = liftM (attraction $ fromScalar 0) . examineNode position

gravitation ∷ View Position n ⇒ Node -> Rewrite n Force
gravitation node = do
 	n ← examineNode position node
 	ns ← mapM (examineNode position) =<< readNodeList
 	return $ fsum [attraction n' n | n' ← ns]