prioritize : IGraph k e n -> IArray k NatplaceChain : DebugFlag => Cast n Elem => Cast n Hybridization => IGraph k e n -> PlaceST s k => Fin k -> List (Fin k) -> MolVector -> F1' sPlaces the atoms in a linear chain.
Expects the first atom to be placed and
places the next atom according to initialBondVector. The rest of the chain
is placed such that it is as linear as possible (in the overall result, the
angles in the chain are set to 120 Deg.)
TODO: Double bond configuration
polygonCorners : DebugFlag => Cast n Elem => Cast n Hybridization => IGraph k e n -> PlaceST s k => List (Fin k) -> MolPoint -> Angle -> Angle -> MolVector -> F1' sdistributeAtoms : DebugFlag => Cast n Elem => Cast n Hybridization => IGraph k e n -> PlaceST s k => Fin k -> List (Fin k) -> List (Fin k) -> F1' splaceNeighbours : DebugFlag => Cast n Elem => Cast n Hybridization => IGraph k e n -> PlaceST s k => Fin k -> F1 s (List (Fin k))placeAtom : DebugFlag => Cast n Elem => Cast n Hybridization => IGraph k e n -> PlaceST s k => Fin k -> F1' sConvenience method to place a single atom. This function will first find
a placed neighbour does not need to be set) and then place this
new atoms considering the neighbour's neighbours. Essentially this
utility is useful for sprouting a new atom to an already placed
structure.