add siOffset and siHeight
[L-seed.git] / src / Lseed / StipeInfo.hs
index 820d859..0e5d21b 100644 (file)
@@ -1,6 +1,7 @@
 module Lseed.StipeInfo where
 
 import Lseed.Data
+import Lseed.Constants
 import Lseed.Data.Functions
 import Lseed.Geometry
 
@@ -8,8 +9,8 @@ annotateGarden :: Angle -> GrowingGarden -> AnnotatedGarden
 annotateGarden angle  = map (mapPlanted annotatePlant) . lightenGarden angle
 
 annotatePlant :: Plant (GrowthState, Double) -> AnnotatedPlant
-annotatePlant = go 0
-  where go d (Plant (gs, light) len ang ut ps) = Plant (StipeInfo
+annotatePlant = go 0 0 0
+  where go d o h (Plant (gs, light) len ang ut ps) = Plant (StipeInfo
                { siLength    = len
                , siSubLength = len + sum (map (siSubLength . pData) ps')
                , siLight     = light
@@ -17,8 +18,12 @@ annotatePlant = go 0
                , siAngle     = ang
                , siDirection = normAngle d'
                , siGrowth    = gs
+               , siOffset    = o'
+               , siHeight    = h'
                }) len ang ut ps'
-         where ps' = map (go d') ps
+         where ps' = map (go d' o' h') ps
                d' = (d+ang)
+               o' = o - len * stipeLength * sin d'
+               h' = h + len * stipeLength * cos d'
 
 normAngle a = a - fromIntegral (truncate ((a+pi) / (2*pi))) * 2*pi